From c6c5ac5f2a64cb1fe647a51174cb0fa7d15bf8df Mon Sep 17 00:00:00 2001 From: Parth Patel Date: Wed, 9 Aug 2023 19:05:49 +0530 Subject: [PATCH 01/34] fix: user can't deposit in last 24 hours --- src/facets/DepositFacet.sol | 4 ++++ test/foundry/Facets/DepositFacet.t.sol | 17 ++++++++++++++++- test/foundry/Facets/RefundTest.t.sol | 26 ++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/foundry/Facets/RefundTest.t.sol diff --git a/src/facets/DepositFacet.sol b/src/facets/DepositFacet.sol index daa272a..da99778 100644 --- a/src/facets/DepositFacet.sol +++ b/src/facets/DepositFacet.sol @@ -14,6 +14,7 @@ error DepositFacet__ReentrancyGuard__ReentrantCall(); error DepositFacet__SeasonEnded(); error DepositFacet__FundsInPrevSeason(); error DepositFacet__InvalidMiningPass(); +error DepositFacet__Less_Than_One_Day(); /// @title DepositFacet /// @notice Facet in charge of depositing VPND tokens @@ -72,6 +73,9 @@ contract DepositFacet { revert DepositFacet__SeasonEnded(); } uint256 _daysUntilSeasonEnd = (_season.endTimestamp - block.timestamp) / 1 days; + if (_daysUntilSeasonEnd == 0) { + revert DepositFacet__Less_Than_One_Day(); + } _userData.depositAmount += _amount; _userData.depositPoints += _amount * _daysUntilSeasonEnd; _season.totalDepositAmount += _amount; diff --git a/test/foundry/Facets/DepositFacet.t.sol b/test/foundry/Facets/DepositFacet.t.sol index bd9f38c..aa80265 100644 --- a/test/foundry/Facets/DepositFacet.t.sol +++ b/test/foundry/Facets/DepositFacet.t.sol @@ -3,12 +3,14 @@ pragma solidity 0.8.18; import "lib/forge-std/src/Test.sol"; import { DiamondTest, LiquidMiningDiamond } from "../utils/DiamondTest.sol"; -import { DepositFacet, DepositFacet__NotEnoughTokenBalance, DepositFacet__SeasonEnded, DepositFacet__InvalidMiningPass } from "src/facets/DepositFacet.sol"; +import { DepositFacet, DepositFacet__NotEnoughTokenBalance, DepositFacet__SeasonEnded, DepositFacet__InvalidMiningPass, DepositFacet__Less_Than_One_Day } from "src/facets/DepositFacet.sol"; import { DiamondManagerFacet } from "src/facets/DiamondManagerFacet.sol"; import { ERC20Mock } from "test/foundry/mocks/ERC20Mock.sol"; import { StratosphereMock } from "test/foundry/mocks/StratosphereMock.sol"; import { MiningPassFacet } from "src/facets/MiningPassFacet.sol"; +//JUST FOR ILLUSTRATION PURPOSE + contract DepositFacetTest is DiamondTest { // StdCheats cheats = StdCheats(0x7109709ECfa91a80626fF3989D68f67F5b1DD12D); LiquidMiningDiamond internal diamond; @@ -70,6 +72,19 @@ contract DepositFacetTest is DiamondTest { assertEq(diamondManagerFacet.getTotalPointsOfSeason(1), 29 * 1000); } + function test_DepositFailsOnLastDay() public { + address stratosphereMemberBasic = makeAddr("stratosphereMemberBasic"); + + vm.startPrank(stratosphereMemberBasic); + depositToken.increaseAllowance(address(depositFacet), 1_000_000); + depositToken.mint(stratosphereMemberBasic, 1000); + + vm.warp(block.timestamp + 29 days + 100); + + vm.expectRevert(DepositFacet__Less_Than_One_Day.selector); + depositFacet.deposit(1000); + } + function test_DepositBeingGoldStratosphereMember() public { address stratosphereMemberGold = makeAddr("stratosphereMemberGold"); diff --git a/test/foundry/Facets/RefundTest.t.sol b/test/foundry/Facets/RefundTest.t.sol new file mode 100644 index 0000000..33f4505 --- /dev/null +++ b/test/foundry/Facets/RefundTest.t.sol @@ -0,0 +1,26 @@ +pragma solidity ^0.8.17; + +import { Test, console } from "forge-std/Test.sol"; +import { DiamondTest, LiquidMiningDiamond } from "../utils/DiamondTest.sol"; +import { ClaimFacet, ClaimFacet__NotEnoughPoints, ClaimFacet__InProgressSeason, ClaimFacet__AlreadyClaimed } from "src/facets/ClaimFacet.sol"; + +//JUST FOR ILLUSTRATION PURPOSE + +contract RefundTest is Test { + string public MAINNET_RPC_URL = vm.envString("AVALANCHE_RPC_URL"); + address public liquidMiningDiamondAddress = 0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B; + ClaimFacet public claimfacet; + + function setUp() public { + vm.createSelectFork(MAINNET_RPC_URL, 33696496); + claimfacet = ClaimFacet(liquidMiningDiamondAddress); + + + } + + function test_claim() public { + vm.startPrank(0xb246A2a842EadF307cF4d076A81367fb3E369963); + claimfacet.automatedClaim(1, 0x8734382c5E988c1EE1c750b16d5D1feFd3423b09); + } + +} \ No newline at end of file From cd94b44af48f6665c0eeae2007aa145ef2a5d240 Mon Sep 17 00:00:00 2001 From: Parth Patel Date: Thu, 17 Aug 2023 19:17:31 +0530 Subject: [PATCH 02/34] bugfix: remove refundfacetTest due to ci issues --- test/foundry/Facets/RefundTest.t.sol | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 test/foundry/Facets/RefundTest.t.sol diff --git a/test/foundry/Facets/RefundTest.t.sol b/test/foundry/Facets/RefundTest.t.sol deleted file mode 100644 index 33f4505..0000000 --- a/test/foundry/Facets/RefundTest.t.sol +++ /dev/null @@ -1,26 +0,0 @@ -pragma solidity ^0.8.17; - -import { Test, console } from "forge-std/Test.sol"; -import { DiamondTest, LiquidMiningDiamond } from "../utils/DiamondTest.sol"; -import { ClaimFacet, ClaimFacet__NotEnoughPoints, ClaimFacet__InProgressSeason, ClaimFacet__AlreadyClaimed } from "src/facets/ClaimFacet.sol"; - -//JUST FOR ILLUSTRATION PURPOSE - -contract RefundTest is Test { - string public MAINNET_RPC_URL = vm.envString("AVALANCHE_RPC_URL"); - address public liquidMiningDiamondAddress = 0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B; - ClaimFacet public claimfacet; - - function setUp() public { - vm.createSelectFork(MAINNET_RPC_URL, 33696496); - claimfacet = ClaimFacet(liquidMiningDiamondAddress); - - - } - - function test_claim() public { - vm.startPrank(0xb246A2a842EadF307cF4d076A81367fb3E369963); - claimfacet.automatedClaim(1, 0x8734382c5E988c1EE1c750b16d5D1feFd3423b09); - } - -} \ No newline at end of file From fc75fb4cdbdaea649a028c36cfbf964871ef106c Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Thu, 31 Aug 2023 22:29:52 +0200 Subject: [PATCH 03/34] feat: automated claim single --- deployments/ClaimFacet.json | 11 +--- deployments/DepositFacet.json | 11 +++- hardhat.config.ts | 3 +- package.json | 3 +- scripts/startSeason.ts | 30 ++++++--- src/facets/ClaimFacet.sol | 6 +- tasks/automatedClaim.ts | 121 +++++++++++++++++++++++++++++++--- 7 files changed, 149 insertions(+), 36 deletions(-) diff --git a/deployments/ClaimFacet.json b/deployments/ClaimFacet.json index 3c721d5..01c7b48 100644 --- a/deployments/ClaimFacet.json +++ b/deployments/ClaimFacet.json @@ -227,11 +227,6 @@ "name": "ClaimFacet__InProgressSeason", "type": "error" }, - { - "inputs": [], - "name": "ClaimFacet__NotEnoughPoints", - "type": "error" - }, { "inputs": [], "name": "LAuthorizable__OnlyAuthorized", @@ -305,8 +300,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610a33806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107bb565b610063565b005b61004e61005e366004610816565b610386565b61006e6000336106d2565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206002810154600682015460088301541561012e576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360030154836101409190610934565b9050600061014e8287610735565b9050600061015c8288610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101b9908490610947565b92505081905550808760060160008282546101d49190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610276919061095a565b508554600090610287908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103916000336106d2565b6000828152600460205260409020600281015442116103dc576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b818110156106cb5760008482815181106103fd576103fd61097c565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361045857505050506103e1565b60088301541561046b57505050506103e1565b600083600301548361047d9190610934565b9050600061048b828a610735565b90506000610499828b610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906104f6908490610947565b92505081905550808a60060160008282546105119190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b3919061095a565b5085546000906105c4908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561063f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610663919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506103e1945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610731576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161075186670de0b6b3a76400006109ab565b61075b91906109c2565b925050505b92915050565b6000670de0b6b3a764000083836003015461078191906109ab565b61078b91906109c2565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b657600080fd5b919050565b600080604083850312156107ce57600080fd5b823591506107de60208401610792565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561082957600080fd5b8235915060208084013567ffffffffffffffff8082111561084957600080fd5b818601915086601f83011261085d57600080fd5b81358181111561086f5761086f6107e7565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108b2576108b26107e7565b6040529182528482019250838101850191898311156108d057600080fd5b938501935b828510156108f5576108e685610792565b845293850193928501926108d5565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076057610760610905565b8181038181111561076057610760610905565b60006020828403121561096c57600080fd5b8151801515811461078b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761076057610760610905565b6000826109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212208c25894ebb14627e73f9048e1246c4356612906fc08630783daf9a9baaf3696d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107bb565b610063565b005b61004e61005e366004610816565b610386565b61006e6000336106d2565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206002810154600682015460088301541561012e576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360030154836101409190610934565b9050600061014e8287610735565b9050600061015c8288610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101b9908490610947565b92505081905550808760060160008282546101d49190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610276919061095a565b508554600090610287908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103916000336106d2565b6000828152600460205260409020600281015442116103dc576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b818110156106cb5760008482815181106103fd576103fd61097c565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361045857505050506103e1565b60088301541561046b57505050506103e1565b600083600301548361047d9190610934565b9050600061048b828a610735565b90506000610499828b610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906104f6908490610947565b92505081905550808a60060160008282546105119190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b3919061095a565b5085546000906105c4908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561063f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610663919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506103e1945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610731576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161075186670de0b6b3a76400006109ab565b61075b91906109c2565b925050505b92915050565b6000670de0b6b3a764000083836003015461078191906109ab565b61078b91906109c2565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b657600080fd5b919050565b600080604083850312156107ce57600080fd5b823591506107de60208401610792565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561082957600080fd5b8235915060208084013567ffffffffffffffff8082111561084957600080fd5b818601915086601f83011261085d57600080fd5b81358181111561086f5761086f6107e7565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108b2576108b26107e7565b6040529182528482019250838101850191898311156108d057600080fd5b938501935b828510156108f5576108e685610792565b845293850193928501926108d5565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076057610760610905565b8181038181111561076057610760610905565b60006020828403121561096c57600080fd5b8151801515811461078b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761076057610760610905565b6000826109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212208c25894ebb14627e73f9048e1246c4356612906fc08630783daf9a9baaf3696d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -315,6 +310,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xb654CE5224c9A8c7c5985798f47a976E84429Bd4" + "address": "0xbb1305BAe52122BD24e74D7ab2f889Fb5911A9B2" } } \ No newline at end of file diff --git a/deployments/DepositFacet.json b/deployments/DepositFacet.json index 8a74e7a..5d78034 100644 --- a/deployments/DepositFacet.json +++ b/deployments/DepositFacet.json @@ -164,6 +164,11 @@ "name": "DepositFacet__InvalidMiningPass", "type": "error" }, + { + "inputs": [], + "name": "DepositFacet__Less_Than_One_Day", + "type": "error" + }, { "inputs": [], "name": "DepositFacet__NotEnoughTokenBalance", @@ -218,8 +223,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506104ff806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103c1565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e91906103da565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d908690610422565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f919061043b565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620151804283600201546103349190610464565b61033e9190610477565b9050848360000160008282546103549190610422565b90915550610364905081866104b2565b8360020160008282546103779190610422565b92505081905550848260050160008282546103929190610422565b909155506103a2905081866104b2565b8260070160008282546103b59190610422565b90915550505050505050565b6000602082840312156103d357600080fd5b5035919050565b6000602082840312156103ec57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610435576104356103f3565b92915050565b60006020828403121561044d57600080fd5b8151801515811461045d57600080fd5b9392505050565b81810381811115610435576104356103f3565b6000826104ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610435576104356103f356fea26469706673582212208b781a69e16763de4cb14c02e0f1202abfbba585111958f648aaed33b5bdedca64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103c1565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e91906103da565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d908690610422565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f919061043b565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620151804283600201546103349190610464565b61033e9190610477565b9050848360000160008282546103549190610422565b90915550610364905081866104b2565b8360020160008282546103779190610422565b92505081905550848260050160008282546103929190610422565b909155506103a2905081866104b2565b8260070160008282546103b59190610422565b90915550505050505050565b6000602082840312156103d357600080fd5b5035919050565b6000602082840312156103ec57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610435576104356103f3565b92915050565b60006020828403121561044d57600080fd5b8151801515811461045d57600080fd5b9392505050565b81810381811115610435576104356103f3565b6000826104ad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610435576104356103f356fea26469706673582212208b781a69e16763de4cb14c02e0f1202abfbba585111958f648aaed33b5bdedca64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220ef0cdfd7fb7dead5f5b2a4e0f774e8588944539bad1092ecee93d433e6b44feb64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220ef0cdfd7fb7dead5f5b2a4e0f774e8588944539bad1092ecee93d433e6b44feb64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -228,6 +233,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xbD726C068770e332F6eAf4168554a849cD7c5634" + "address": "0x93D0de9AE7213113Cc0D822Cf4d7589200675300" } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 36413bc..989c888 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,11 +1,10 @@ -// import fs from 'fs' +import 'dotenv/config' import { getEnvValSafe } from './utils' import { HardhatUserConfig } from 'hardhat/config' import '@nomicfoundation/hardhat-foundry' import '@nomicfoundation/hardhat-network-helpers' import '@nomiclabs/hardhat-solhint' import '@nomicfoundation/hardhat-toolbox' -import 'dotenv/config' import './tasks/verify' import './tasks/automatedClaim' diff --git a/package.json b/package.json index 770fa12..14668f1 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,7 @@ "sort": "sort-package-json", "test": "make test", "test:hardhat": "hardhat test", - "upgradeFacet": "ts-node --files scripts/upgradeFacet.ts", - "changePoints": "hardhat season:getDataTochangeBoostPoints && hardhat season:changeBoostPoints --network avalanche" + "upgradeDiamond:avalanche": "hardhat run --network avalanche scripts/upgradeDiamond.ts" }, "lint-staged": { "*.sol": [ diff --git a/scripts/startSeason.ts b/scripts/startSeason.ts index 7afd337..bc0f628 100644 --- a/scripts/startSeason.ts +++ b/scripts/startSeason.ts @@ -5,13 +5,17 @@ import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' * Starting at 15,000 VAPE per season, on Season 1, * we will decreate the emissions by 0.41217% per season. */ -const calculateSeasonRewards = (seasonId: number) => { +const calculateReward = (seasonId: number) => { + // Initial values const initialRewards = 15000 - const emissionsDecrement = 0.0041217 - const seasonRewards = Math.floor( - initialRewards * (1 - emissionsDecrement) ** seasonId - ) - return seasonRewards + const reductionPercentage = 0.41217 / 100 + + let reward = initialRewards + for (let season = 2; season <= seasonId; season++) { + reward = reward - reward * reductionPercentage + } + + return reward } const daysInMonth = () => { @@ -37,9 +41,19 @@ async function main() { diamondAddress ) const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) + const parsedRewards = ethers.parseEther(rewards.toString()) + console.log( + 'šŸš€ ~ file: startSeason.ts:46 ~ main ~ parsedRewards:', + parsedRewards.toString() + ) + const duration = daysInMonth() + console.log('šŸš€ ~ file: startSeason.ts:51 ~ main ~ duration:', duration) + + console.log('Attempting to start new season') const startSeasonTx = await DiamondManagerFacet.startNewSeasonWithDuration( - calculateSeasonRewards(Number(currentSeasonId.toString()) + 1), - daysInMonth() * 24 * 60 * 60 + parsedRewards.toString(), + duration ) await startSeasonTx.wait(1) diff --git a/src/facets/ClaimFacet.sol b/src/facets/ClaimFacet.sol index 9f34c03..22dd8b9 100644 --- a/src/facets/ClaimFacet.sol +++ b/src/facets/ClaimFacet.sol @@ -96,9 +96,9 @@ contract ClaimFacet { uint256 _unlockAmount = userData.unlockAmount; // If user has not participated in the season, skip - if (_depositPoints == 0) { - revert ClaimFacet__NotEnoughPoints(); - } + // if (_depositPoints == 0) { + // revert ClaimFacet__NotEnoughPoints(); + // } // If user has already claimed, skip if (userData.amountClaimed > 0) { revert ClaimFacet__AlreadyClaimed(); diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 79458fc..b89ee05 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -17,7 +17,37 @@ const limiter = new Bottleneck({ maxConcurrent: 1, }) -task('automatedClaim', 'Claim all rewards for a season') +task('automated-claim:single', 'Claim rewards for a single wallet') + .addParam('wallet', 'The wallet to claim for') + .addParam('seasonId', 'The season ID') + .setAction(async ({ wallet, seasonId }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const ClaimFacet = await ethers.getContractAt('ClaimFacet', diamondAddress) + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + try { + const userData = await DiamondManagerFacet.getUserDataForSeason( + wallet, + seasonId + ) + if (userData.depositAmount > 0 && !userData.hasWithdrawnOrRestaked) { + console.log(`Claiming for ${wallet}`) + await (await ClaimFacet.automatedClaim(seasonId, wallet)).wait(3) + } else { + console.log(`Skipping ${wallet} because they have no deposits`) + } + } catch (error) { + console.error('āŒ AutomatedClaim failed:', error) + throw error + } + }) + +task('automated-claim:all', 'Claim all rewards for a season') .addOptionalParam('seasonId', 'The season ID') .addOptionalParam('loadFromDisk') .addOptionalParam('loadFromSubgraph') @@ -27,6 +57,8 @@ task('automatedClaim', 'Claim all rewards for a season') { seasonId, dryRun, loadFromDisk, loadFromSubgraph }, { ethers, network, run } ) => { + const [deployer] = await ethers.getSigners() + console.log('AutomatedClaim task', deployer.address, network.name) // Load Diamond and ClaimFacet const diamondAddress = LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] @@ -39,16 +71,44 @@ task('automatedClaim', 'Claim all rewards for a season') 'DiamondManagerFacet', diamondAddress ) + const AuthorizationFacet = await ethers.getContractAt( + 'AuthorizationFacet', + diamondAddress + ) - const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const isAuthorized = await AuthorizationFacet.authorized(deployer.address) - if (seasonId && seasonId.toString() !== currentSeasonId.toString()) { - console.error( - `āŒ Season ID ${seasonId} is not the current season ID ${currentSeasonId}` - ) + if (!isAuthorized) { + console.error('āŒ Deployer is not authorized') return } + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + + if (seasonId === currentSeasonId.toString()) { + const seasonEndTimestamp = + await DiamondManagerFacet.getSeasonEndTimestamp( + currentSeasonId.toString() + ) + const currentTimestamp = Math.floor(Date.now() / 1000) + + if (currentTimestamp < +seasonEndTimestamp.toString()) { + console.error( + `āŒ Season ${currentSeasonId} has not ended yet, cannot claim`, + { + currentTimestamp, + seasonEndTimestamp: +seasonEndTimestamp.toString(), + } + ) + return + } else { + console.log(`āœ… Season ${currentSeasonId} has ended, can claim`, { + currentTimestamp, + seasonEndTimestamp: +seasonEndTimestamp.toString(), + }) + } + } + // Load all Deposit events const depositorsSource = loadFromSubgraph ? 'subgraph' @@ -56,18 +116,52 @@ task('automatedClaim', 'Claim all rewards for a season') ? 'disk' : 'rpc' const depositors = await run(`loadDepositors:${depositorsSource}`, { - currentSeasonId, + seasonId: seasonId.toString(), }) try { // Slice the array into chunks of 100 const chunkedDepositors = chunk(depositors, 100) + // Claim for each chunk for (const chunk of chunkedDepositors) { - console.log(`Claiming for ${chunk.length} depositors`, chunk) + const validatedWallets = await Promise.all( + chunk.map(async (wallet: string) => { + const userData = await DiamondManagerFacet.getUserDataForSeason( + wallet, + currentSeasonId.toString() + ) + await new Promise((resolve) => setTimeout(resolve, 100)) + if ( + userData.depositAmount > 0 && + !userData.hasWithdrawnOrRestaked + ) { + return wallet + } + + console.log(`Skipping ${wallet} because they have no deposits`) + return + }) + ) + console.log(`Claiming for ${validatedWallets.length} depositors`) + const filteredWallets = validatedWallets.filter( + (item) => item !== undefined + ) + + if (filteredWallets.length === 0) { + console.log('No wallets to claim for, skipping...') + continue + } + if (!dryRun) { await ( - await ClaimFacet.automatedClaimBatch(seasonId, chunk) + await ClaimFacet.automatedClaimBatch( + currentSeasonId.toString(), + filteredWallets, + { + gasLimit: 13_000_000, + } + ) ).wait(3) } else { console.log('Dry run, skipping claim') @@ -98,6 +192,13 @@ subtask('loadDepositors:subgraph', async ({ seasonId }, { network }) => { }).then(async (res) => await res.json()) const wallets = response?.data?.season?.minerWallets + const uniqueWallets = [...new Set(wallets)] + + if (!uniqueWallets) { + throw new Error('No wallets found') + } else { + console.log(`Found ${uniqueWallets.length} wallets`) + } // Save to disk // const saveToPath = `./data/season-depositors-${network.name}-${seasonId}.json` @@ -105,7 +206,7 @@ subtask('loadDepositors:subgraph', async ({ seasonId }, { network }) => { __dirname, `./data/season-depositors-${network.name}-${seasonId}.json` ) - require('fs').writeFileSync(saveToPath, JSON.stringify(wallets), { + require('fs').writeFileSync(saveToPath, JSON.stringify(uniqueWallets), { flag: 'w', }) From 9620b00e4f5a084108ec38bf18b74f63cc42d117 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Sun, 3 Sep 2023 11:05:14 +0200 Subject: [PATCH 04/34] release: season 3 --- deployments/ClaimFacet.json | 11 +++- deployments/DiamondManagerFacet.json | 24 +++++++- scripts/startSeason.ts | 6 -- scripts/startSeasonFix.ts | 55 +++++++++++++++++++ src/facets/ClaimFacet.sol | 6 +- src/facets/DiamondManagerFacet.sol | 19 +++++++ tasks/automatedClaim.ts | 45 ++++++++------- tasks/data/season-depositors-avalanche-2.json | 1 + 8 files changed, 132 insertions(+), 35 deletions(-) create mode 100644 scripts/startSeasonFix.ts create mode 100644 tasks/data/season-depositors-avalanche-2.json diff --git a/deployments/ClaimFacet.json b/deployments/ClaimFacet.json index 01c7b48..934181b 100644 --- a/deployments/ClaimFacet.json +++ b/deployments/ClaimFacet.json @@ -227,6 +227,11 @@ "name": "ClaimFacet__InProgressSeason", "type": "error" }, + { + "inputs": [], + "name": "ClaimFacet__NotEnoughPoints", + "type": "error" + }, { "inputs": [], "name": "LAuthorizable__OnlyAuthorized", @@ -300,8 +305,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610a33806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107bb565b610063565b005b61004e61005e366004610816565b610386565b61006e6000336106d2565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206002810154600682015460088301541561012e576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360030154836101409190610934565b9050600061014e8287610735565b9050600061015c8288610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101b9908490610947565b92505081905550808760060160008282546101d49190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610276919061095a565b508554600090610287908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103916000336106d2565b6000828152600460205260409020600281015442116103dc576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b818110156106cb5760008482815181106103fd576103fd61097c565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361045857505050506103e1565b60088301541561046b57505050506103e1565b600083600301548361047d9190610934565b9050600061048b828a610735565b90506000610499828b610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906104f6908490610947565b92505081905550808a60060160008282546105119190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b3919061095a565b5085546000906105c4908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561063f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610663919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506103e1945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610731576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161075186670de0b6b3a76400006109ab565b61075b91906109c2565b925050505b92915050565b6000670de0b6b3a764000083836003015461078191906109ab565b61078b91906109c2565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b657600080fd5b919050565b600080604083850312156107ce57600080fd5b823591506107de60208401610792565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561082957600080fd5b8235915060208084013567ffffffffffffffff8082111561084957600080fd5b818601915086601f83011261085d57600080fd5b81358181111561086f5761086f6107e7565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108b2576108b26107e7565b6040529182528482019250838101850191898311156108d057600080fd5b938501935b828510156108f5576108e685610792565b845293850193928501926108d5565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076057610760610905565b8181038181111561076057610760610905565b60006020828403121561096c57600080fd5b8151801515811461078b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761076057610760610905565b6000826109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212208c25894ebb14627e73f9048e1246c4356612906fc08630783daf9a9baaf3696d64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107bb565b610063565b005b61004e61005e366004610816565b610386565b61006e6000336106d2565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290206002810154600682015460088301541561012e576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008360030154836101409190610934565b9050600061014e8287610735565b9050600061015c8288610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101b9908490610947565b92505081905550808760060160008282546101d49190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610252573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610276919061095a565b508554600090610287908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610302573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610326919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103916000336106d2565b6000828152600460205260409020600281015442116103dc576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b818110156106cb5760008482815181106103fd576103fd61097c565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361045857505050506103e1565b60088301541561046b57505050506103e1565b600083600301548361047d9190610934565b9050600061048b828a610735565b90506000610499828b610766565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906104f6908490610947565b92505081905550808a60060160008282546105119190610934565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561058f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b3919061095a565b5085546000906105c4908690610934565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561063f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610663919061095a565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506103e1945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610731576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161075186670de0b6b3a76400006109ab565b61075b91906109c2565b925050505b92915050565b6000670de0b6b3a764000083836003015461078191906109ab565b61078b91906109c2565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107b657600080fd5b919050565b600080604083850312156107ce57600080fd5b823591506107de60208401610792565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561082957600080fd5b8235915060208084013567ffffffffffffffff8082111561084957600080fd5b818601915086601f83011261085d57600080fd5b81358181111561086f5761086f6107e7565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108b2576108b26107e7565b6040529182528482019250838101850191898311156108d057600080fd5b938501935b828510156108f5576108e685610792565b845293850193928501926108d5565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561076057610760610905565b8181038181111561076057610760610905565b60006020828403121561096c57600080fd5b8151801515811461078b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761076057610760610905565b6000826109f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212208c25894ebb14627e73f9048e1246c4356612906fc08630783daf9a9baaf3696d64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -310,6 +315,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xbb1305BAe52122BD24e74D7ab2f889Fb5911A9B2" + "address": "0xF8C0bb9FA052896429461ab3E5d4A3bF8c3C7Cb9" } } \ No newline at end of file diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index b084c31..f755fab 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -4211,10 +4211,28 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_endTimestamp", + "type": "uint256" + } + ], + "name": "startNewSeasonWithEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506126e1806100206000396000f3fe608060405234801561001057600080fd5b50600436106102e95760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e85661181461088e578063f55484ac146108a1578063fca7129f146108b457600080fd5b8063dbcbb9a314610868578063df4095891461087b578063e5ea3fdc1461044b57600080fd5b8063d18b3d90116100c8578063d18b3d90146107b7578063d2b291d11461080f578063d822bb871461085557600080fd5b8063bc67f25f1461076a578063c4882ed71461077257600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106c5578063b3afe4961461070a578063b5e007901461075757600080fd5b80639d6c100f14610649578063a07693eb1461066d578063ae178fda1461068057600080fd5b806395e2de331161017657806395e2de33146105f15780639a56f4e4146104e85780639d0b7d5a1461063657600080fd5b80638a91af17146105cb5780638aee8127146105de57600080fd5b80634dc0cd2b1161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610546578063820d0ad7146105ba57806385e3f997146105c257600080fd5b806366e017c3146104e85780636bb70f6a1461050b5780636e06c64d1461053357600080fd5b80635c1624ab1161022f5780635c1624ab1461046e5780635e75a6c31461048157806361ccdfba1461048957600080fd5b80634dc0cd2b14610409578063562b71531461044b57600080fd5b80633361e38b116102a15780633d55b37b116102865780633d55b37b146103c05780634784f6bc146103e35780634a477b14146103f657600080fd5b80633361e38b1461039a57806336a4a844146103ad57600080fd5b8063275b629e116102d2578063275b629e146103365780632c5682eb146103495780633175cbe81461036957600080fd5b80630c4ed799146102ee5780630c7d72a714610303575b600080fd5b6103016102fc366004612161565b6108d7565b005b610316610311366004612161565b610a05565b604080519384526020840192909252908201526060015b60405180910390f35b61030161034436600461217c565b610bcd565b61035c610357366004612161565b610c91565b60405161032d919061219e565b61038c610377366004612225565b60009081526004602052604090206005015490565b60405190815260200161032d565b6103016103a836600461234b565b610da4565b6103016103bb36600461240b565b610f37565b61038c6103ce366004612225565b60009081526004602052604090206002015490565b6103016103f1366004612225565b611099565b61038c610404366004612441565b61113c565b61038c610417366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61038c610459366004612225565b60009081526004602052604090206003015490565b61030161047c36600461234b565b611176565b60025461038c565b6104d3610497366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b6040805192835260208301919091520161032d565b61038c6104f6366004612225565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032d565b61030161054136600461234b565b61135a565b610559610554366004612225565b6114e0565b60405161032d9190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610559611595565b61038c61271081565b6103016105d9366004612225565b61164c565b6103016105ec366004612161565b611733565b61038c6105ff366004612441565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030161064436600461217c565b611839565b61038c610657366004612225565b6000908152600460208190526040909120015490565b61035c61067b366004612441565b6118f7565b61038c61068e366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b61038c6106d3366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104d3610718366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030161076536600461246b565b611a09565b610301611a95565b61038c610780366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6107ff6107c5366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b604051901515815260200161032d565b61038c61081d366004612497565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b61038c6108633660046124ca565b611bb9565b61030161087636600461217c565b611c04565b610301610889366004612225565b611cb9565b61030161089c366004612161565b611e04565b6103016108af366004612161565b611f30565b61038c6108c2366004612225565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610925576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610995576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b7f919061251c565b835160e0840151909850909150610b988261271061252f565b610ba29190612546565b9550612710868360600151610bb7919061252f565b610bc19190612546565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c3d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610c859084815260200190565b60405180910390a25050565b610cf0604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e14576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e4f576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610e9557828181518110610e6e57610e6e612581565b602002602001015182610e81919061251c565b915080610e8d816125b0565b915050610e53565b506127108114610ed1576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610ee490600990602086019061205e565b508151610ef890600a9060208501906120e8565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f2a9291906125e8565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fa7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fca57506000818152600460205260409020600201544211155b15611001576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61100c81600161251c565b6002819055600081815260046020526040902090815542600182015561103860ff841662015180612679565b6110479062ffffff164261251c565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611109576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146111e6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611221576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561132d5760008281526005602052604081208651829088908590811061125657611256612581565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106112ae576112ae612581565b6020026020010151905081600001546000036112f6576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546113058282612698565b61130f908761251c565b60039093019190915550925080611325816125b0565b915050611229565b506000818152600460205260408120600701805484929061134f908490612698565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113ca576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611405576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561144b5782818151811061142457611424612581565b602002602001015182611437919061251c565b915080611443816125b0565b915050611409565b506127108114611487576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825161149a90600e90602086019061205e565b5081516114ae90600f9060208501906120e8565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f2a9291906125e8565b61152860405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6115dd60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116bc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156116f8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611781576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146117f1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156118e5576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611956604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a79576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611b05576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611b7157600080fd5b505af1158015611b85573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611bfd919061251c565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c74576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610c859084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d29576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611d4c57506000818152600460205260409020600201544211155b15611d83576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d9082600161251c565b60028190556000818152600460205260409020818155426001820181905591925090611dbf906220f58061251c565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161108b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e74576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611ec1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff8116611f7e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fee576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061207e565b506120e4929150612123565b5090565b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d8578251825591602001919060010190612108565b5b808211156120e45760008155600101612124565b803573ffffffffffffffffffffffffffffffffffffffff8116811461215c57600080fd5b919050565b60006020828403121561217357600080fd5b611bfd82612138565b6000806040838503121561218f57600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015181840152506101408084015161221d8285018215159052565b505092915050565b60006020828403121561223757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156122b4576122b461223e565b604052919050565b600067ffffffffffffffff8211156122d6576122d661223e565b5060051b60200190565b600082601f8301126122f157600080fd5b81356020612306612301836122bc565b61226d565b82815260059290921b8401810191818101908684111561232557600080fd5b8286015b848110156123405780358352918301918301612329565b509695505050505050565b6000806040838503121561235e57600080fd5b823567ffffffffffffffff8082111561237657600080fd5b818501915085601f83011261238a57600080fd5b8135602061239a612301836122bc565b82815260059290921b840181019181810190898411156123b957600080fd5b948201945b838610156123de576123cf86612138565b825294820194908201906123be565b965050860135925050808211156123f457600080fd5b50612401858286016122e0565b9150509250929050565b6000806040838503121561241e57600080fd5b82359150602083013560ff8116811461243657600080fd5b809150509250929050565b6000806040838503121561245457600080fd5b61245d83612138565b946020939093013593505050565b60008060006060848603121561248057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156124aa57600080fd5b6124b383612138565b91506124c160208401612138565b90509250929050565b600080604083850312156124dd57600080fd5b823591506124c160208401612138565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611170576111706124ed565b8082028115828204841417611170576111706124ed565b60008261257c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125e1576125e16124ed565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561263757815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612605565b5050508381038285015284518082528583019183019060005b8181101561266c57835183529284019291840191600101612650565b5090979650505050505050565b62ffffff81811683821602808216919082811461221d5761221d6124ed565b81810381811115611170576111706124ed56fea26469706673582212200324fe0aa0215ac69111fceb8a2cd753d766fed6932ba85a88eaf97557f8bceb64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102e95760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e85661181461088e578063f55484ac146108a1578063fca7129f146108b457600080fd5b8063dbcbb9a314610868578063df4095891461087b578063e5ea3fdc1461044b57600080fd5b8063d18b3d90116100c8578063d18b3d90146107b7578063d2b291d11461080f578063d822bb871461085557600080fd5b8063bc67f25f1461076a578063c4882ed71461077257600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106c5578063b3afe4961461070a578063b5e007901461075757600080fd5b80639d6c100f14610649578063a07693eb1461066d578063ae178fda1461068057600080fd5b806395e2de331161017657806395e2de33146105f15780639a56f4e4146104e85780639d0b7d5a1461063657600080fd5b80638a91af17146105cb5780638aee8127146105de57600080fd5b80634dc0cd2b1161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610546578063820d0ad7146105ba57806385e3f997146105c257600080fd5b806366e017c3146104e85780636bb70f6a1461050b5780636e06c64d1461053357600080fd5b80635c1624ab1161022f5780635c1624ab1461046e5780635e75a6c31461048157806361ccdfba1461048957600080fd5b80634dc0cd2b14610409578063562b71531461044b57600080fd5b80633361e38b116102a15780633d55b37b116102865780633d55b37b146103c05780634784f6bc146103e35780634a477b14146103f657600080fd5b80633361e38b1461039a57806336a4a844146103ad57600080fd5b8063275b629e116102d2578063275b629e146103365780632c5682eb146103495780633175cbe81461036957600080fd5b80630c4ed799146102ee5780630c7d72a714610303575b600080fd5b6103016102fc366004612161565b6108d7565b005b610316610311366004612161565b610a05565b604080519384526020840192909252908201526060015b60405180910390f35b61030161034436600461217c565b610bcd565b61035c610357366004612161565b610c91565b60405161032d919061219e565b61038c610377366004612225565b60009081526004602052604090206005015490565b60405190815260200161032d565b6103016103a836600461234b565b610da4565b6103016103bb36600461240b565b610f37565b61038c6103ce366004612225565b60009081526004602052604090206002015490565b6103016103f1366004612225565b611099565b61038c610404366004612441565b61113c565b61038c610417366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61038c610459366004612225565b60009081526004602052604090206003015490565b61030161047c36600461234b565b611176565b60025461038c565b6104d3610497366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b6040805192835260208301919091520161032d565b61038c6104f6366004612225565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161032d565b61030161054136600461234b565b61135a565b610559610554366004612225565b6114e0565b60405161032d9190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610559611595565b61038c61271081565b6103016105d9366004612225565b61164c565b6103016105ec366004612161565b611733565b61038c6105ff366004612441565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030161064436600461217c565b611839565b61038c610657366004612225565b6000908152600460208190526040909120015490565b61035c61067b366004612441565b6118f7565b61038c61068e366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b61038c6106d3366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104d3610718366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030161076536600461246b565b611a09565b610301611a95565b61038c610780366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6107ff6107c5366004612441565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b604051901515815260200161032d565b61038c61081d366004612497565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b61038c6108633660046124ca565b611bb9565b61030161087636600461217c565b611c04565b610301610889366004612225565b611cb9565b61030161089c366004612161565b611e04565b6103016108af366004612161565b611f30565b61038c6108c2366004612225565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610925576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610995576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b7f919061251c565b835160e0840151909850909150610b988261271061252f565b610ba29190612546565b9550612710868360600151610bb7919061252f565b610bc19190612546565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c3d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610c859084815260200190565b60405180910390a25050565b610cf0604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e14576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e4f576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610e9557828181518110610e6e57610e6e612581565b602002602001015182610e81919061251c565b915080610e8d816125b0565b915050610e53565b506127108114610ed1576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610ee490600990602086019061205e565b508151610ef890600a9060208501906120e8565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f2a9291906125e8565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fa7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fca57506000818152600460205260409020600201544211155b15611001576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61100c81600161251c565b6002819055600081815260046020526040902090815542600182015561103860ff841662015180612679565b6110479062ffffff164261251c565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611109576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146111e6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611221576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561132d5760008281526005602052604081208651829088908590811061125657611256612581565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106112ae576112ae612581565b6020026020010151905081600001546000036112f6576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546113058282612698565b61130f908761251c565b60039093019190915550925080611325816125b0565b915050611229565b506000818152600460205260408120600701805484929061134f908490612698565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113ca576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611405576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561144b5782818151811061142457611424612581565b602002602001015182611437919061251c565b915080611443816125b0565b915050611409565b506127108114611487576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825161149a90600e90602086019061205e565b5081516114ae90600f9060208501906120e8565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f2a9291906125e8565b61152860405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6115dd60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116bc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156116f8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611781576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146117f1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156118e5576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611956604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a79576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611b05576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611b7157600080fd5b505af1158015611b85573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611bfd919061251c565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c74576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610c859084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d29576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611d4c57506000818152600460205260409020600201544211155b15611d83576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611d9082600161251c565b60028190556000818152600460205260409020818155426001820181905591925090611dbf906220f58061251c565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161108b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e74576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611ec1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff8116611f7e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fee576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d857825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90911617825560209092019160019091019061207e565b506120e4929150612123565b5090565b8280548282559060005260206000209081019282156120d8579160200282015b828111156120d8578251825591602001919060010190612108565b5b808211156120e45760008155600101612124565b803573ffffffffffffffffffffffffffffffffffffffff8116811461215c57600080fd5b919050565b60006020828403121561217357600080fd5b611bfd82612138565b6000806040838503121561218f57600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e08301526101008084015181840152506101208084015181840152506101408084015161221d8285018215159052565b505092915050565b60006020828403121561223757600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156122b4576122b461223e565b604052919050565b600067ffffffffffffffff8211156122d6576122d661223e565b5060051b60200190565b600082601f8301126122f157600080fd5b81356020612306612301836122bc565b61226d565b82815260059290921b8401810191818101908684111561232557600080fd5b8286015b848110156123405780358352918301918301612329565b509695505050505050565b6000806040838503121561235e57600080fd5b823567ffffffffffffffff8082111561237657600080fd5b818501915085601f83011261238a57600080fd5b8135602061239a612301836122bc565b82815260059290921b840181019181810190898411156123b957600080fd5b948201945b838610156123de576123cf86612138565b825294820194908201906123be565b965050860135925050808211156123f457600080fd5b50612401858286016122e0565b9150509250929050565b6000806040838503121561241e57600080fd5b82359150602083013560ff8116811461243657600080fd5b809150509250929050565b6000806040838503121561245457600080fd5b61245d83612138565b946020939093013593505050565b60008060006060848603121561248057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156124aa57600080fd5b6124b383612138565b91506124c160208401612138565b90509250929050565b600080604083850312156124dd57600080fd5b823591506124c160208401612138565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611170576111706124ed565b8082028115828204841417611170576111706124ed565b60008261257c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036125e1576125e16124ed565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561263757815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612605565b5050508381038285015284518082528583019183019060005b8181101561266c57835183529284019291840191600101612650565b5090979650505050505050565b62ffffff81811683821602808216919082811461221d5761221d6124ed565b81810381811115611170576111706124ed56fea26469706673582212200324fe0aa0215ac69111fceb8a2cd753d766fed6932ba85a88eaf97557f8bceb64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50612839806100206000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e8566118146108ac578063f55484ac146108bf578063fca7129f146108d257600080fd5b8063dbcbb9a314610886578063df40958914610899578063e5ea3fdc1461046957600080fd5b8063d18b3d90116100c8578063d18b3d90146107d5578063d2b291d11461082d578063d822bb871461087357600080fd5b8063bc67f25f14610788578063c4882ed71461079057600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106e3578063b3afe49614610728578063b5e007901461077557600080fd5b80639d6c100f14610667578063a07693eb1461068b578063ae178fda1461069e57600080fd5b806395e2de331161017657806395e2de331461060f5780639a56f4e4146105065780639d0b7d5a1461065457600080fd5b80638a91af17146105e95780638aee8127146105fc57600080fd5b8063560cf6f51161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610564578063820d0ad7146105d857806385e3f997146105e057600080fd5b806366e017c3146105065780636bb70f6a146105295780636e06c64d1461055157600080fd5b80635c1624ab1161022f5780635c1624ab1461048c5780635e75a6c31461049f57806361ccdfba146104a757600080fd5b8063560cf6f514610456578063562b71531461046957600080fd5b80633361e38b116102ac5780634784f6bc116102865780634784f6bc146103ee5780634a477b14146104015780634dc0cd2b1461041457600080fd5b80633361e38b146103a557806336a4a844146103b85780633d55b37b146103cb57600080fd5b8063275b629e116102dd578063275b629e146103415780632c5682eb146103545780633175cbe81461037457600080fd5b80630c4ed799146102f95780630c7d72a71461030e575b600080fd5b61030c6103073660046122b9565b6108f5565b005b61032161031c3660046122b9565b610a23565b604080519384526020840192909252908201526060015b60405180910390f35b61030c61034f3660046122d4565b610beb565b6103676103623660046122b9565b610caf565b60405161033891906122f6565b61039761038236600461237d565b60009081526004602052604090206005015490565b604051908152602001610338565b61030c6103b33660046124a3565b610dc2565b61030c6103c6366004612563565b610f55565b6103976103d936600461237d565b60009081526004602052604090206002015490565b61030c6103fc36600461237d565b6110b7565b61039761040f366004612599565b61115a565b610397610422366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61030c6104643660046122d4565b611194565b61039761047736600461237d565b60009081526004602052604090206003015490565b61030c61049a3660046124a3565b6112ce565b600254610397565b6104f16104b5366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610338565b61039761051436600461237d565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610338565b61030c61055f3660046124a3565b6114b2565b61057761057236600461237d565b611638565b6040516103389190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105776116ed565b61039761271081565b61030c6105f736600461237d565b6117a4565b61030c61060a3660046122b9565b61188b565b61039761061d366004612599565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030c6106623660046122d4565b611991565b61039761067536600461237d565b6000908152600460208190526040909120015490565b610367610699366004612599565b611a4f565b6103976106ac366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103976106f1366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104f1610736366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030c6107833660046125c3565b611b61565b61030c611bed565b61039761079e366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61081d6107e3366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610338565b61039761083b3660046125ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b610397610881366004612622565b611d11565b61030c6108943660046122d4565b611d5c565b61030c6108a736600461237d565b611e11565b61030c6108ba3660046122b9565b611f5c565b61030c6108cd3660046122b9565b612088565b6103976108e036600461237d565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610943576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109b3576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b9d9190612674565b835160e0840151909850909150610bb682612710612687565b610bc0919061269e565b9550612710868360600151610bd59190612687565b610bdf919061269e565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610ca39084815260200190565b60405180910390a25050565b610d0e604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e32576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e6d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610eb357828181518110610e8c57610e8c6126d9565b602002602001015182610e9f9190612674565b915080610eab81612708565b915050610e71565b506127108114610eef576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610f029060099060208601906121b6565b508151610f1690600a906020850190612240565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f48929190612740565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fc5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fe857506000818152600460205260409020600201544211155b1561101f576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102a816001612674565b6002819055600081815260046020526040902090815542600182015561105660ff8416620151806127d1565b6110659062ffffff1642612674565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611127576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061122757506000818152600460205260409020600201544211155b1561125e576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611269816001612674565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906110a99087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461133e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611379576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611485576000828152600560205260408120865182908890859081106113ae576113ae6126d9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000858381518110611406576114066126d9565b60200260200101519050816000015460000361144e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461145d82826127f0565b6114679087612674565b6003909301919091555092508061147d81612708565b915050611381565b50600081815260046020526040812060070180548492906114a79084906127f0565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611522576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461155d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156115a35782818151811061157c5761157c6126d9565b60200260200101518261158f9190612674565b91508061159b81612708565b915050611561565b5061271081146115df576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516115f290600e9060208601906121b6565b50815161160690600f906020850190612240565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f48929190612740565b61168060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61173560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611850576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166118d9576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611949576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a01576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611a3d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611aae604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bd1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611cc957600080fd5b505af1158015611cdd573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611d559190612674565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611dcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610ca39084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e81576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611ea457506000818152600460205260409020600201544211155b15611edb576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ee8826001612674565b60028190556000818152600460205260409020818155426001820181905591925090611f17906220f580612674565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016110a9565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612019576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166120d6576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612146576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612230579160200282015b8281111561223057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906121d6565b5061223c92915061227b565b5090565b828054828255906000526020600020908101928215612230579160200282015b82811115612230578251825591602001919060010190612260565b5b8082111561223c576000815560010161227c565b803573ffffffffffffffffffffffffffffffffffffffff811681146122b457600080fd5b919050565b6000602082840312156122cb57600080fd5b611d5582612290565b600080604083850312156122e757600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516123758285018215159052565b505092915050565b60006020828403121561238f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561240c5761240c612396565b604052919050565b600067ffffffffffffffff82111561242e5761242e612396565b5060051b60200190565b600082601f83011261244957600080fd5b8135602061245e61245983612414565b6123c5565b82815260059290921b8401810191818101908684111561247d57600080fd5b8286015b848110156124985780358352918301918301612481565b509695505050505050565b600080604083850312156124b657600080fd5b823567ffffffffffffffff808211156124ce57600080fd5b818501915085601f8301126124e257600080fd5b813560206124f261245983612414565b82815260059290921b8401810191818101908984111561251157600080fd5b948201945b838610156125365761252786612290565b82529482019490820190612516565b9650508601359250508082111561254c57600080fd5b5061255985828601612438565b9150509250929050565b6000806040838503121561257657600080fd5b82359150602083013560ff8116811461258e57600080fd5b809150509250929050565b600080604083850312156125ac57600080fd5b6125b583612290565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561260257600080fd5b61260b83612290565b915061261960208401612290565b90509250929050565b6000806040838503121561263557600080fd5b8235915061261960208401612290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561118e5761118e612645565b808202811582820484141761118e5761118e612645565b6000826126d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361273957612739612645565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561278f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161275d565b5050508381038285015284518082528583019183019060005b818110156127c4578351835292840192918401916001016127a8565b5090979650505050505050565b62ffffff81811683821602808216919082811461237557612375612645565b8181038181111561118e5761118e61264556fea26469706673582212202f61e9354eda39d8d2bca93008a67b5dff155d52e0fac4c8786c2419cb26a69664736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e8566118146108ac578063f55484ac146108bf578063fca7129f146108d257600080fd5b8063dbcbb9a314610886578063df40958914610899578063e5ea3fdc1461046957600080fd5b8063d18b3d90116100c8578063d18b3d90146107d5578063d2b291d11461082d578063d822bb871461087357600080fd5b8063bc67f25f14610788578063c4882ed71461079057600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106e3578063b3afe49614610728578063b5e007901461077557600080fd5b80639d6c100f14610667578063a07693eb1461068b578063ae178fda1461069e57600080fd5b806395e2de331161017657806395e2de331461060f5780639a56f4e4146105065780639d0b7d5a1461065457600080fd5b80638a91af17146105e95780638aee8127146105fc57600080fd5b8063560cf6f51161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610564578063820d0ad7146105d857806385e3f997146105e057600080fd5b806366e017c3146105065780636bb70f6a146105295780636e06c64d1461055157600080fd5b80635c1624ab1161022f5780635c1624ab1461048c5780635e75a6c31461049f57806361ccdfba146104a757600080fd5b8063560cf6f514610456578063562b71531461046957600080fd5b80633361e38b116102ac5780634784f6bc116102865780634784f6bc146103ee5780634a477b14146104015780634dc0cd2b1461041457600080fd5b80633361e38b146103a557806336a4a844146103b85780633d55b37b146103cb57600080fd5b8063275b629e116102dd578063275b629e146103415780632c5682eb146103545780633175cbe81461037457600080fd5b80630c4ed799146102f95780630c7d72a71461030e575b600080fd5b61030c6103073660046122b9565b6108f5565b005b61032161031c3660046122b9565b610a23565b604080519384526020840192909252908201526060015b60405180910390f35b61030c61034f3660046122d4565b610beb565b6103676103623660046122b9565b610caf565b60405161033891906122f6565b61039761038236600461237d565b60009081526004602052604090206005015490565b604051908152602001610338565b61030c6103b33660046124a3565b610dc2565b61030c6103c6366004612563565b610f55565b6103976103d936600461237d565b60009081526004602052604090206002015490565b61030c6103fc36600461237d565b6110b7565b61039761040f366004612599565b61115a565b610397610422366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61030c6104643660046122d4565b611194565b61039761047736600461237d565b60009081526004602052604090206003015490565b61030c61049a3660046124a3565b6112ce565b600254610397565b6104f16104b5366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610338565b61039761051436600461237d565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610338565b61030c61055f3660046124a3565b6114b2565b61057761057236600461237d565b611638565b6040516103389190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105776116ed565b61039761271081565b61030c6105f736600461237d565b6117a4565b61030c61060a3660046122b9565b61188b565b61039761061d366004612599565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030c6106623660046122d4565b611991565b61039761067536600461237d565b6000908152600460208190526040909120015490565b610367610699366004612599565b611a4f565b6103976106ac366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103976106f1366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104f1610736366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030c6107833660046125c3565b611b61565b61030c611bed565b61039761079e366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61081d6107e3366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610338565b61039761083b3660046125ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b610397610881366004612622565b611d11565b61030c6108943660046122d4565b611d5c565b61030c6108a736600461237d565b611e11565b61030c6108ba3660046122b9565b611f5c565b61030c6108cd3660046122b9565b612088565b6103976108e036600461237d565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610943576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109b3576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b9d9190612674565b835160e0840151909850909150610bb682612710612687565b610bc0919061269e565b9550612710868360600151610bd59190612687565b610bdf919061269e565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610ca39084815260200190565b60405180910390a25050565b610d0e604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e32576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e6d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610eb357828181518110610e8c57610e8c6126d9565b602002602001015182610e9f9190612674565b915080610eab81612708565b915050610e71565b506127108114610eef576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610f029060099060208601906121b6565b508151610f1690600a906020850190612240565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f48929190612740565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fc5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fe857506000818152600460205260409020600201544211155b1561101f576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102a816001612674565b6002819055600081815260046020526040902090815542600182015561105660ff8416620151806127d1565b6110659062ffffff1642612674565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611127576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061122757506000818152600460205260409020600201544211155b1561125e576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611269816001612674565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906110a99087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461133e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611379576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611485576000828152600560205260408120865182908890859081106113ae576113ae6126d9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000858381518110611406576114066126d9565b60200260200101519050816000015460000361144e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461145d82826127f0565b6114679087612674565b6003909301919091555092508061147d81612708565b915050611381565b50600081815260046020526040812060070180548492906114a79084906127f0565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611522576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461155d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156115a35782818151811061157c5761157c6126d9565b60200260200101518261158f9190612674565b91508061159b81612708565b915050611561565b5061271081146115df576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516115f290600e9060208601906121b6565b50815161160690600f906020850190612240565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f48929190612740565b61168060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61173560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611850576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166118d9576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611949576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a01576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611a3d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611aae604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bd1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611cc957600080fd5b505af1158015611cdd573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611d559190612674565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611dcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610ca39084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e81576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611ea457506000818152600460205260409020600201544211155b15611edb576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ee8826001612674565b60028190556000818152600460205260409020818155426001820181905591925090611f17906220f580612674565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016110a9565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612019576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166120d6576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612146576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612230579160200282015b8281111561223057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906121d6565b5061223c92915061227b565b5090565b828054828255906000526020600020908101928215612230579160200282015b82811115612230578251825591602001919060010190612260565b5b8082111561223c576000815560010161227c565b803573ffffffffffffffffffffffffffffffffffffffff811681146122b457600080fd5b919050565b6000602082840312156122cb57600080fd5b611d5582612290565b600080604083850312156122e757600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516123758285018215159052565b505092915050565b60006020828403121561238f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561240c5761240c612396565b604052919050565b600067ffffffffffffffff82111561242e5761242e612396565b5060051b60200190565b600082601f83011261244957600080fd5b8135602061245e61245983612414565b6123c5565b82815260059290921b8401810191818101908684111561247d57600080fd5b8286015b848110156124985780358352918301918301612481565b509695505050505050565b600080604083850312156124b657600080fd5b823567ffffffffffffffff808211156124ce57600080fd5b818501915085601f8301126124e257600080fd5b813560206124f261245983612414565b82815260059290921b8401810191818101908984111561251157600080fd5b948201945b838610156125365761252786612290565b82529482019490820190612516565b9650508601359250508082111561254c57600080fd5b5061255985828601612438565b9150509250929050565b6000806040838503121561257657600080fd5b82359150602083013560ff8116811461258e57600080fd5b809150509250929050565b600080604083850312156125ac57600080fd5b6125b583612290565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561260257600080fd5b61260b83612290565b915061261960208401612290565b90509250929050565b6000806040838503121561263557600080fd5b8235915061261960208401612290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561118e5761118e612645565b808202811582820484141761118e5761118e612645565b6000826126d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361273957612739612645565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561278f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161275d565b5050508381038285015284518082528583019183019060005b818110156127c4578351835292840192918401916001016127a8565b5090979650505050505050565b62ffffff81811683821602808216919082811461237557612375612645565b8181038181111561118e5761118e61264556fea26469706673582212202f61e9354eda39d8d2bca93008a67b5dff155d52e0fac4c8786c2419cb26a69664736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4223,6 +4241,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x20B27C17c613CD82E8fDafCDA55Dd87BD4DA4b19" + "address": "0x0F464f551eA06d8f3B6ad7CaFF8c64Ad45aCD511" } } \ No newline at end of file diff --git a/scripts/startSeason.ts b/scripts/startSeason.ts index bc0f628..924bb73 100644 --- a/scripts/startSeason.ts +++ b/scripts/startSeason.ts @@ -43,13 +43,7 @@ async function main() { const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) const parsedRewards = ethers.parseEther(rewards.toString()) - console.log( - 'šŸš€ ~ file: startSeason.ts:46 ~ main ~ parsedRewards:', - parsedRewards.toString() - ) const duration = daysInMonth() - console.log('šŸš€ ~ file: startSeason.ts:51 ~ main ~ duration:', duration) - console.log('Attempting to start new season') const startSeasonTx = await DiamondManagerFacet.startNewSeasonWithDuration( parsedRewards.toString(), diff --git a/scripts/startSeasonFix.ts b/scripts/startSeasonFix.ts new file mode 100644 index 0000000..5e44c87 --- /dev/null +++ b/scripts/startSeasonFix.ts @@ -0,0 +1,55 @@ +import { ethers, network } from 'hardhat' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' + +/* + * Starting at 15,000 VAPE per season, on Season 1, + * we will decreate the emissions by 0.41217% per season. + */ +const calculateReward = (seasonId: number) => { + // Initial values + const initialRewards = 15000 + const reductionPercentage = 0.41217 / 100 + + let reward = initialRewards + for (let season = 2; season <= seasonId; season++) { + reward = reward - reward * reductionPercentage + } + + return reward +} + +async function main() { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) + const parsedRewards = ethers.parseEther(rewards.toString()) + console.log('Attempting to start new season') + const startSeasonTx = + await DiamondManagerFacet.startNewSeasonWithEndTimestamp( + parsedRewards.toString(), + 1696118400 // 2023-10-01 00:00:00 UTC + ) + await startSeasonTx.wait(1) + + console.log('āœ… New season started') + + const mintVAPETx = await DiamondManagerFacet.claimTokensForSeason() + await mintVAPETx.wait(1) + + console.log('āœ… Vape minted') + + console.log('āœ… All done') +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/src/facets/ClaimFacet.sol b/src/facets/ClaimFacet.sol index 22dd8b9..9f34c03 100644 --- a/src/facets/ClaimFacet.sol +++ b/src/facets/ClaimFacet.sol @@ -96,9 +96,9 @@ contract ClaimFacet { uint256 _unlockAmount = userData.unlockAmount; // If user has not participated in the season, skip - // if (_depositPoints == 0) { - // revert ClaimFacet__NotEnoughPoints(); - // } + if (_depositPoints == 0) { + revert ClaimFacet__NotEnoughPoints(); + } // If user has already claimed, skip if (userData.amountClaimed > 0) { revert ClaimFacet__AlreadyClaimed(); diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 237f78e..390f324 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -140,6 +140,25 @@ contract DiamondManagerFacet { emit SeasonStarted(s.currentSeasonId, _rewardTokenToDistribute); } + function startNewSeasonWithEndTimestamp( + uint256 _rewardTokenToDistribute, + uint256 _endTimestamp + ) external onlyOwner { + uint256 _currentSeason = s.currentSeasonId; + if (_currentSeason != 0 && s.seasons[_currentSeason].endTimestamp >= block.timestamp) { + revert DiamondManagerFacet__Season_Not_Finished(); + } + s.currentSeasonId = _currentSeason + 1; + Season storage season = s.seasons[s.currentSeasonId]; + season.id = s.currentSeasonId; + season.startTimestamp = block.timestamp; + season.endTimestamp = _endTimestamp; + season.rewardTokensToDistribute = _rewardTokenToDistribute; + season.rewardTokenBalance = _rewardTokenToDistribute; + + emit SeasonStarted(s.currentSeasonId, _rewardTokenToDistribute); + } + //this function is added to fix the points, it's temporary function changeBoostPoints(address[] memory addresses, uint256[] memory newBoostPoints) external onlyOwner { if (addresses.length != newBoostPoints.length) revert DiamondManagerFacet_InvalidArgs_ChangeBoostPoints(); diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index b89ee05..7cdcb84 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -37,7 +37,11 @@ task('automated-claim:single', 'Claim rewards for a single wallet') ) if (userData.depositAmount > 0 && !userData.hasWithdrawnOrRestaked) { console.log(`Claiming for ${wallet}`) - await (await ClaimFacet.automatedClaim(seasonId, wallet)).wait(3) + const tx = await ClaimFacet.automatedClaim(seasonId, wallet) + await tx.wait(3) + console.log( + `āœ… Claimed for ${wallet}: https://snowtrace.io/tx/${tx.hash}` + ) } else { console.log(`Skipping ${wallet} because they have no deposits`) } @@ -83,6 +87,16 @@ task('automated-claim:all', 'Claim all rewards for a season') return } + // Load all Deposit events + const depositorsSource = loadFromSubgraph + ? 'subgraph' + : loadFromDisk + ? 'disk' + : 'rpc' + const depositors = await run(`loadDepositors:${depositorsSource}`, { + seasonId: seasonId.toString(), + }) + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() if (seasonId === currentSeasonId.toString()) { @@ -109,16 +123,6 @@ task('automated-claim:all', 'Claim all rewards for a season') } } - // Load all Deposit events - const depositorsSource = loadFromSubgraph - ? 'subgraph' - : loadFromDisk - ? 'disk' - : 'rpc' - const depositors = await run(`loadDepositors:${depositorsSource}`, { - seasonId: seasonId.toString(), - }) - try { // Slice the array into chunks of 100 const chunkedDepositors = chunk(depositors, 100) @@ -154,15 +158,16 @@ task('automated-claim:all', 'Claim all rewards for a season') } if (!dryRun) { - await ( - await ClaimFacet.automatedClaimBatch( - currentSeasonId.toString(), - filteredWallets, - { - gasLimit: 13_000_000, - } - ) - ).wait(3) + const tx = await ClaimFacet.automatedClaimBatch( + currentSeasonId.toString(), + filteredWallets, + { + gasLimit: 13_000_000, + } + ) + await tx.wait(5) + console.log(`https://snowtrace.io/tx/${tx.hash}`) + await new Promise((resolve) => setTimeout(resolve, 1000)) } else { console.log('Dry run, skipping claim') } diff --git a/tasks/data/season-depositors-avalanche-2.json b/tasks/data/season-depositors-avalanche-2.json new file mode 100644 index 0000000..8abdf14 --- /dev/null +++ b/tasks/data/season-depositors-avalanche-2.json @@ -0,0 +1 @@ +["0x721100c936494fe26d91ecaed06ea117eaa7164e","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x1206a6efe2adeaeedb0471736f7c339801999423","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xfe4b53eeb334263bdc5dd76054d3517a7b757259","0xe0b84e9c62a260b6f28baf3a4cc95bb11e2d532e","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x041eed0172d0d193176913a4415ac66ce8185319","0x99c16079c89f47feecf45546053a859dcaaac997","0x4ddbb04e5d5cb68f0fc1f089fb7471e5d8deccb4","0xde8266bf77d65a02e4cc5bf5e526e4c2140aabc1","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x04236988c39c28fb0cc15d50af22515eaa038c13","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x864ea716df37cb55823681d04cf3332a851d54e0","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x357d2a5ab09c47ea8f8b458cf6cbbdf60385fa62","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x8f447437a9197299fdd9f8318cd9964a3a9d8508","0xf6878bc768d664afdf815898d1f908be54eedc52","0x4180a0da3c4d833452150634a1e0141c20d34196","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x06972cc41d56e548e615e3395f236fd0e812a991","0x7b52f833c225133a6c849584325a554588a6b597","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0xc28e635715b808494187941bbb26248e1ce8e1b2","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x227c2411f03630303483a88b6d4c49eb32a92f84","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0xaa704fe1277431015f48231909f15c958fb74940","0x9de1925269f2c68a2a570647ecb170fc245db448","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x13751aab15d6d1070049dd48b6a01328f263f333","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0xdf0c403bf50801b0437671114e6c05ea6e310499","0xada131233325bf6b08d4e245e202cb2351d28bc5","0x611f82431ded5b850d083f3742b7c0f4418b8957","0xe6223be27e5ef29d9766a992e3b58bd082416c45","0xd141f1bffd9c0c9944c9f27172f1a1bf56ddee74","0xc8b50a8666d3192febf3df068f6ac6a2f9e29d13","0xd2eff1011f61eecfadb41929d9e68a22e2e1e4bd","0xbaed546e54ffac3b9ca127a2254876790aed265f","0xecc98d31cbe8fea03ad9b6dc3c65b1b66b424361","0x8c862dff50699290a6043427d073bd4a6e42763e","0x253902b38f19ccc22e589b4c12beb21293a89353","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0x474118147a047f8dd2679d14e5947490a21cb74f","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0x27a90a6825132eb88e8feaafe035658663c8944f","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0xc0a2bfbffce1071071c8ea7cb0d3f342e5c27a12","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x150d63350f27db753ed2e602d6474b27fcab713c","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x9e57f52c7984dfdf32ea028552312f48de9f7f34","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0x43216c0b7ed42325020ad460134ac8dc48d98ccc","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x69094b7855eccc06d374fa604d594779072b04ad","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x2a922fed52c4e039e67533b2c0785f1255960d85","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0x699be501fd6e4e79415ce9db729a39dd3c04d279","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x3a2e4f9e843de3a2d5e1ca3d30efba58a3545150","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x97f46368175b980b7124e38f0af4daac008a058f","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x051420d034c5b5f3871ef75626347721744ada83","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xd5240b3e10cfa566cf3be3084e4c029ec62e5972","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0xf854eb944eee9dd131fcaa2e55be053dbf3e7b93","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xa15704171245d148206a8f1240eb51cf3dadc368","0x69479e349af2cc60b33e11373831e4209f74c5e4","0xae8ab67bd43326e424b649050d33b704288af1b5","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x62fa1525fa43621c0a72f39bded0759063f297a1","0x03ea3830138e1a986a8013e180a6de5a8beee6cd","0x83f3df36610f3a07304d246d197c5036ec11239b","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0x5ddb8e92911fe1685521106fd7bf15479059f412","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0x25280a733b3ccc8ba20413e8d72a5889b0bacdcb","0x309b936952bf22d19655ae90b1164c483bef4774","0x257d1f543d2c934b85e864403a04a088f43f05e2","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xc72c396e48799ed5c52025fee5485ae7aa1429f5","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0xf4e6232d2f86bd3399d956b3892d6b1893e1e06e","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0x8ed78db365fa885cb7a5bd29093dfdc54f8c944f","0xbb1f823554d8f62804686edda026022db7454195","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0x5edc6a966b477a3b1b0b874771206cd24cd3b832","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0x93fe43db40c997ae784143f060032db16293d93f","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x28656ee0640c0f54a9cb892ddecce5f021c993f8","0x1bb01159ab168acd0cc055ead980729a2adae919","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xcf0758f9cc8c6ce84609e94bd5e1f856fd595657","0x07737aba415bd610700663b633c4babb827f38aa","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0xee318930f864178119bd8f3d36cbdc43b986c06d","0x461fe77f0b6a893ca5b271bd8b8fff6b12c498b6","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xee096417d22cd50c472edbe9438f851cb50199f7","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0x5c263db138be88737ad66c01428ff847861ad8f1","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0x97b0315a1e35ff45070c1394ed06f6207c1b46f5","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xce833bb28d15455af31af5a30c4626bf2939e389","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0xcde467f92434094b8c16c953da550b750b5cf6c5","0xff8c87595495750f407bb94dd35ef7db034fdb59","0x2923f5ed47c69549f0ecae49b06085c7c5430db1","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0xfe9b4781893a22eb10913cabf3d578ebc24be1cd","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x28c43574e0dfae322c49e266e516c41630686775","0xa7774f5ecdbab450d6a04be8f430448bf28a9d26","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x813de8be827a526c271e5226af912441d3b63700","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x4f4e2ca98489235a5442f6b7ab80731bd64f7d27","0xd43c861e1747f9b262cbb91bb089205b3af80458","0xeb189824041d66ed1fc10b3991242c245f88c74c","0xb841ddb964e7c9309941732d6c3270f60986893e","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0xcc81f3fbaf04a41c226a12b25877f58703b8c364","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x670dfbf4b16e7f4146e3e565a496b039e6c1b5aa","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x0e10816ac60b5ed3776864b259b31abd22b66955","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x1c6300a7bd150926c237ef482805e93574bb276d","0x85029f5ea54742c64632a27f47526825240fe285","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0xed45fefaa2fe28763e7e0629678ed6c2debb5701","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x83771c019a51462a3407c54345a02dc8c6a85108","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0x1635ce4325eb96817610255fed3b39273deea95e","0x0467e993ae5216e318cf7cf27dd17d44d7724666","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x1f1cfe5e8afd4106632548a9e67401ac28572e05","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0x1cf78459cc0960f5b611b5e95ebc4cb7b2c24846","0x5dcd2a775d7d71fc4e7d70c49d2fca078a2d870e","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x2feb527119346af9c42598ebc414f781a9777ccb","0x5d315beb4c49178231103248c0198ba70fbdc76f","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x83973e694d35461a33eb056a36d02e4e6e56cee1","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x8316d8837b456ea3b60536b14c62357652b7e416","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0xaad1557ef67d88221bd1e029d0aae501390cc7ac","0x0d2c5018723475800677676dbe58725f5ec788a5","0x980ece433b54caa56251d050cb90e706871cec8d","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x21c4ddadda9c960788a4d8b8c5e7febbd4850ec0","0x59cf09d68940636efc588cf86618d3efa2414c39","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0x102110a6f8196b0b21525a2f4392ced7f3cb4e4a","0x3983f90047a33db4369259fae42f13429fe46bb8","0xe05e5d7570a178347d184eee8f1d3b3c37ebb52f","0x96b66b565748afcee772cfa12b728aeda0a67d40","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x8c4ca0570f0251b72ab74dc24be6c1fbe8333fea","0x5cbfce8a39cbe662222bb0e5a6c3989bbe11eeb7","0x515574ce0e25d65496647999231fe2145ff62408","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0xf7da27d41c96fc150a45d4feed630f55464faea0","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xdbeef580eb836f68d1e08769372799f84766d9c5","0xb6c2e5675efa86c84561d22f6f5bbfdb4552a2df","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0xb533c39bdc314a5469b3a668ec8110985ad29ea2","0xf9c2f322398e58dad8532716d751a7447ab7e299","0xfc749385de796532a31a2c8976bb4d537647d825","0xf1a98729ff297218f7e57621fe6e9cca00bbb9a9","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0xb49b4f3d3355aeb84992e81986a52f730298bbc4","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0xe5a9a8804c6a8ceff89bc20c7c4c1e719a0a442f","0x8a316a029f7766536de36e226cb58d9afb39d1fd","0x74f3acb558017f2987e17d27b1cd101100e33095","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0xff61a30a954367758552d5fd9ce7a28369898496","0x76453095ab298978b4e88958e18d53385e2e3dfd","0x6547d9afcba5e32f8bff0ffb7b07c2377a570995","0x335977b2165dabe24fa0acc284adee6bc2760e8f","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x7786126e5e953ddab491bcef27482eb3365a0708","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x61e833e1e7476f047cab466603f7671438f07397","0x77b41acbc72d4c64d88fce50428100a13a84c186","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x321efe1ec6502ccde67216d87bde707cd3deca03","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x44a51f42650e8660c0dc6f1cd5362f90c1761322","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x66345a99a53b43026e35e53794f08ac1ec9a4739","0xc0ae894812966887c0ce367acc41fdf84c5f3314","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0xd153bb8c1245545728551ebf87a6a7fe6e5a5793","0x3793deb92101be0f2b9dace8e612511ab4b1c554","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0xac3d6efc9e9b8c90b1b1d2ff35b1d4a84c9ce80c","0x827dbbe748a492b242a9a189ac578ef8876ee635","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x2f381172e2224f922bcc4886c98c147be34fd59d","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xf0ee65d910037e35225fda039521a8b73b8e073a","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0x58ef3367de9fa4430a78675ba91a1a162e322d79","0x1e741f9bb96b9a990051936d841fd136d605e531","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x3287942fb70d1b963d8688717ea74620d4898593","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x3c9f50c9d4be35c734290b95f563d4dd621e240c","0x510b994672200a21316e4665b15d4b6f1a16770e","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x9cd81c8f705fbbd6fd8b7fba9a4e6e4e5f2f97d8","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0xfbae75cfd09650ec3adbd31f74f147c47f2316eb","0xa8300b92a403f9abe944d04512d07130770149fe","0xef103307ba56e3f079631dc5dceb31f4e4eabdb5","0x2c4113ffea6514ff91a7697b758128c80f59a2e3","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x72d0779298e3297c63063e4d351252209129c7b1","0x2fd71aa5e1906741b22ed561d04cb1a2a5aca72a","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0xf03ce6f21164ba3c7cd5c3f4dca214a9f250b096","0xb3a4d65c780eb6139bc0ddcca59462a4f8f931bf","0x9b9e1b73d7346286520a3ddb36dd6e530db1537e","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x5d9fa323d70441c70d8b9be597b629016c3af898","0xb1f3dfa1d37487d7f19521ab40c61f4de3a28d25","0x681caa36d91aeb81f0c65b3de0b7bddfbccafdc8","0x40161ad3ee3c9b4b5753d5a72035ca3ca74f2380","0xac56fc694e06e536a384d273bfc318650cb135f6","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xd1cc1e35c6d0387351cf84a71a2790bc112dadeb","0x7c003de27a0b5b15af447cdd6493c98885042c68","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xf02ba499e2eb34e66da6cb6b1ca930945e867610","0xed92fde5aba69b9596ce11f77639e0d6a21160ea","0x4d275214be7487ba210158c29d27c216829489bf","0x7c06b789931e8df25cbc9f60fa916604f6af1464","0xd8c0d5523824994d43743f94dab72f16b306b248","0x5599746948950205b229ba683824652cfb504e5d","0xbbe2b49d637629280543d9550bceb80bf802287e","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0x5b67991a2bd9849ca8968633f912ecd8b628772b","0x59e965157c8da51b48c52cac5504b7b981995322","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0xe99ef353a00f0a0d07c418a439b00ca7e18a2613","0xf12008f7a04b81dcfc58924157c95def01977b05","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0x1f94a12e745ce696c9338a1db393e0125f218740","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xe74a0f121b171834961424f9216a91555456a983","0x483028f6531db87645c67cec4bd97777ea90b4f3","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0xd445873c98f5f0b8d6d40887f50ae869da5fbee3","0xb05b2e41fede4ea329cdf5024cf6127ddfaecaa2","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0x400139b09097fc4c43634018359e286f85bcd469","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0xfee740fb924b7e680581593db068ac0dc9ce9250","0x3fcaaacc54f5240aea1d8767b4238b9a0eb11952","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0xe85054783ac72b93a082bf579b48615993c1559b","0x510388680d11d4473b4fca975dbc8b1922912e72","0x509302c3d574ffaedc51b6784d0b5b482c591e45","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x7643df115bcd333a0b4c651d114f25a617c735a4","0xda0caa74de7a58734b65d7327c4e169d1e5049ba","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x7bb2c71db0dfbdb63dd70ea6dcba442be7aa3c87","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0x144fe10482fc1384cde291b6e01ca868b9355eca","0x29372570acecdcbfbbbe95837176aa7765563a58","0xf568af57b088e565624409cae2147db23da72795","0x2bfdea06e45097a135e1e22e5dbe5eff9b7b06db","0xfb8adb4ac722ed019a8ea51a05fdae0692bdf02a","0x1d9e9965b8509628628a225c35ed140819aad7d0","0x3200f484ccb390b38814c142b6a30e4885100e28","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0xa82f14e8241cd61f823579ff89c805bbca270feb","0x7f78566ab762ea753baa23087f9b064a5d6a1219","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0x776b3fab4f3063eaf12204407cecde719be09267","0x945f4f35eb97a7baaac343e07de61e9697adddaa","0x53b25faf9492285831d7a9b3cef7e4dd78060b1e","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x3cf2a68724ea878f8a216716c5741808070a6d31","0xebcd8aec57cfc69065578e1f4ace589c6d60be84","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0xe7c3395111d739908d1d6671a1acc69f6b6538fb","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x558188b83af5168b62ca8f928d07dd51433b3425","0xc54772b82ee323a4e52b1918dfec580136e22507","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0xfc2b322799db5b892805b250347083c749b61d9e","0x53b4331987798f2ec6673f479d5311735067787d","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xd2b189531c1260009d8c014ca9d1fb407f5bc529","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0x386f745d246b2080c457811c99bd667ec1b08061","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x87fc6665593d82cf5b5da73e6d4165c06513b1f1","0xb27f45683c6511259790bfdb5af82a96c438cad0","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0x6760c950ecc85be1955ffc47cf3a3f25e277b6d6","0x4c5d8e215541e58020c1d044c0c27f2fc9289aaf","0xf4a0eb7f6c2a2e2bc582e66824553cccd8990ca3","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0x1e050ca02787ab13d2006c9f06801789546a9eda","0xe4d365f2314d5dd16dd597ff45b3f3fa97db448f","0x88f279aaccb7294d9580babee56042c1c79290cf","0x6e5c61ea802d020ef81b9a7a406ec9cb1921dcb3","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0x4efce69a3460620556c4ea933192764d984b6ab5","0xf8f3e3f52a74c9b6d453c70bc05e5d70a58057ff","0x17df6eddcffe738d1b80b2abcf159c5adba82665","0xf0f192516a1ecd91f87dcda6bbe538ba8a15f9b8","0xde525cb6d2dc9a95afce32af16eb199ea37c580a","0x7fc5502c94b36de68dde3980415679c72ceb113a","0xccabb60dc71cb454a325e242281e288da7126349","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x9da0eec1b078c13d838c2fb530a978f6c438d872","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0x2464c45cb3040821a49773717ae4d375dee3915b","0x0c6d80187b3f37a6cbd234f37a95761fbff7f4d3","0x237deb0192880732869926af2ec85a6a64c88e8f","0xd1db9ab9dbde811020f2a001df92e547391ba97a","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x087719013c6645ebfac905ecbc91603944595c58","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0xfe077a5576c085a0e745632518244087b91cd155","0x26672765c04c1dc3cc3290a79d8550a7993d785c","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0xe8db468aa3f8d997c96ed7674784dbd39067e839","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0xce2fdbf148358836c9738bbe342db3a9f7ac6301","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x591860a562d48a7c9006105612b573f8b1ef6817","0x9ba1b661586b0b06fdcb6c06ca302c785746d4ef","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x7dafc90f5b1533875705872b4b77430aa491ec17","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0xe4b9bf68adb9edccd599adbee90c40c6670e60ae","0x0dcaa84602bdc605eaf5667f784266d20a7f91f2","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0xedc2d72b697d62913e1709e929981055a612de6e","0xd9cc3d7a00c332b965d94358e66f93dc11b42e43","0x45bdec2e54d476fd6dfd5ab9954856aee921204e","0x165e02cfac87b846cec7cbf5e80cd19748fb0227","0xa333e486608821200004b98212355a7df32491dc","0x0a005b68c19f43964bd48d3cd7b90b839acf2acd","0x00c72f6056b4ddd3e684e22daef0dff18a367d0f","0x21b0ccc901b86ea1277b2865c73aee9d867780d7","0xdb48dce5b9a0e03a3382d27228844f90701d5df8","0x73730e672c5b6696e85f6496d0aae51f7a631d71","0xd0ad343f78d3864f4ffca528ace86551754adec7","0x6e8f37ee5915749afc8b291173837fd132099837","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0x23e6df2693de753252f034be95116faa7270b4c4","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0xb7f78106935607d2003ac997894c8271173ebfeb","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x04db3d28f9120c63992db875fc2dcea2a19c04d7","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0x958d983fe50176d844bcecf137edb95fd1afc540","0x6a8bde342b734db028ddcd6527787dd4261240c8","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x3ae494842a0117315c532370e9485f8930279ea1","0xe9707be0764388e38945e6322dee740557b3ff3d","0x5e9def163ece7711d23d4e7319013b10596dc14e","0xc913b10980b3d079cd9b0aa39c73714c76470bea","0x12cdd62fea8c62657d0dc4662ecdf33150513a73","0x600c34bcf247d7efac731d4b0163d6307aff9dfc","0xfe2202c2ee6630450321ad7c383c6e10c593bb70","0xb212e9606c0986720ec07e3e66de206b752653d9","0x7318c5252e06a09db4953702119e226bf9845c16","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0xabaf7ae21fab058edfd665c118adea740390159b","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0xd7aa74781bebbd0582f255c91fcc43ab3a391037","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0x4959aee7ee78186100f725573703a6a5701f645a","0x72efd08a0c7515b2deb67ac70664a6f048a2520d","0xce2fbe6cfcc074e8097795e0592df436f596c7b2","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x59cc61f7fe1788a0db102143444ffed4f01cb10a","0x207b173bc4c6b990bcc04cef9ac6d26f36e1be11","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xcae1055f11b88237665d37effa8a294c8224533d","0x9c94cc6264be038f3a36d98dfac0a7d8d6d63b8e","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x0e82df237fcdffe4209d0b7d53a4a0936311c23c","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x77330ab6cc7db76038db9aa9e00eac7aca4913ad","0xacac090ed87c72c804566f1db8dc4ddfad7a8be6","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x246fa3c7d3f319499a8234003f79515f2462eabb","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0xe38b04f83bb9c9648ceb86fd7d801c8d0768e3bc","0x6cb062197e25c84e9fec7607bc2769d1f2b51415","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x75040bf74846972705a5aba861cb196a5e0a5eb1","0x628ff0af9dc13c8c32949f389aed3113f83e2094","0x916d43375b97ed1921f84319e3f42300c523e7c8","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x0232da6476a69f9b70d311b1eb82f078e557d5c7","0xc332aa1d72f0847f57eb179c7a9f6650d2d6d5b6","0x86bddfeb23945f869099d295e84f9036b4e83d18","0xf58886c5a06873357e946e75a4a7e3051a1f061a","0xe1b03b5a2cfb816f3ed324ddf3c94589326f5c17","0xe7b87150991634d6b8fdb2dea037436764680984","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0xfebba470b68542ee297b18affd0959ffa246b359","0x8c064c77364e617ff562b491c10485eb6a4ebc74","0x773e6a11a6450fd1007d35a36eb2333decd1917b","0x9ab348843028ff3a50d739a119761cfd8b52fd2b","0xf33720272b829c85109a31b3ac479ac443756a9b","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0x6735fac051316385e63342c7c44c7b55a5187860","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0xf437946f812dee52f615ec9963251b8527bdbf0f","0x8418626867183397355afb3eba16442c1ecc23c9","0xea6117e46dc4bace7210a03b51804b46401debbd","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0x26cd3876eb91cace7eadd2b437a65d249c635128","0x368fc84891313572e9b4d0d9332cc34b4a4e9eb0","0x752e5fe4ca41aa32b82a0cb842e3dec13e23f709","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x57066bca9a8be58929067c1a6549bb8f2efaa30c","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x0dd643c5d43e06bc5b5691ab157a03da0fde0d68","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x64b876db97b3338334f8cbe1f8b662c9c4b03fd8","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xcdde3935d2e655264ccdbcf544e380c53b23d3c8","0xa845b97dfe63912a2b1b915f111dd630a630c787","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0xadd62bc61b3f16ca964a0670c6cd143dca2d0f73","0x469ed74eda294760b26b32ec6e306ee196cc7937","0x5e95128f86908f9308dc79c7f5a27ed4e77ab137","0x7ba1a543ae17941c706702c087e58ebb07967721","0x5b72294bc574466665359f379437fb17a7560923","0xd5abfcaae5b421dbc3660c73a5724795c4917b79","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x16839506658f0c42ca7ceea9317d3546dc75df0d","0xa24e2a8e4840564821f109d5b3a908194143e636","0x5a73dcd82bfd45b84aa9c70477b049874ee4bc3c","0x7ef447ef322a441666162c996cf98449dfce920d","0x69cfecc77d5c218093a7d2c85d4705040d75924a","0x877e7fdaa8d76d20c41762d063c3b7947dac76bd","0x4da48333589d54956f4b8c497e274867630a8bad","0x6e22158961608f3c3ba0d9e0ae642f1b925f14e9","0x075ca46d58d4447ce855f52a1edf4857d02a02fc","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x813836809203abb4b83eeb1aa7406daf266ce7bd","0x43481e045b140b8bababf151568f73a223060b02","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0x75f4ce1b4182a9b8627c547221dbcea68804e1fd","0x659ebb7a0813ad2107592b3ec67be500e2792992","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xad3123239bf2ed5e507aebf84a47b3760169ea23","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0xd4e56eebb6001cd7b56eaedec097d988efcba73b","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0xbbfdf1f358ff094b7f3cf2b484748c3f9e5dd037","0xe6cbf7333303fc382c8cace99f138fda788d3154","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0x3a25f0d43fd0f88faf94a4904af7d9faaec1d1c4","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x78133bc446f67848255781e79743902f7c762bcc","0x83b576a54217017325b70c9e43363c69fbfcfa2e","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0xb7d50752a2d3faa7bbdedd7f9235045c4340e64d","0x2647050446e6437558c6df9313c412ee97ba7d19","0xceb63b823a22310af59de9960c3a78fea77e3b82","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0xce86d63a859d5c2f9ff5bd5145330bd30ddd8f10","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0xdc8915723bc7115f28f85e3777bbe7340b45215b","0x32ce34a267e617410f25c4879af780b602a599ba","0x65053579065da1fa4d60b800ca47e633874ad780","0x892a7c4ab693d12d41af3ade27884e2b94745681","0x416552278815a25c96acd6d4dccd2a417653d85f","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x65f4923c646c62d5803940e94ac03da955c3c814","0x6f428ffc388787935b9c5ddb9f6e26bbdac8fae5","0x5e5547f8c425bb60870820907172c2a5b7d90283","0x68b6388f57cf22d19f84e7e9bb85907005ee80da","0x6c1a321bdc2ea45b64823a77524932d4b361a48a","0x77f62b2dd47520f0e29663c8f208a40682202936","0x82ad9768e5129784938e1d6ba1b1ea94c0d56003","0x7df31f739b518a4821c2c5fee276407202b088f4","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0xd71696bd4d276d9b8b2a764bc1c22e94548032a2","0x77b3a67ccedcfebe4f6099a319bdef2dda99b69d","0x21e1882df2fa4744e0cd0e2ae8819757692dbf4e","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0x46b23eef1ae28966da007f3ac521d7aa257f6ee0","0x26ae5492a42863edc7c6b9110de70bf3702c92c6","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x697652ad036a251bee98821e0dba68e196029f0f","0xe76e1015997c1913303341f9b19a577114147563","0x8a962400c37e36d42aa0270b05ff1f6ebb8cbe34","0x1351e22ec082a31b573eb7e1deeb1e9308628f57","0x822df343216dd41e8bcd389eae342117462407a7","0x756b49da56257a73b487ba56d0b580410a8719a5","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xef6612cb458342eb7c374619860a9bae998fd350","0x6248d23207c36ee03788060a136d781baec52a0d","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0xd91d0b645ca1193645cdb3ddf1b2a8961bc90699","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0xa2d5626feb0478243c253a4419e661a679a0de81","0x0e37e431057711c9c1aeea56ee5f6f169281657b","0x1d83969532fac5ffef2ed293e423f634ddac94c4","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x51f614ee00960ec37b743236499af47d7caec396","0xd9daedb465ec48a8431cecb081299e4544efeea5","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xa351103f950bcd9a3dc8aaf5961fb4e94c542a5e","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x4734cbccc556efc2e07d9e8fa8de13eaa8716758","0xbe74d6a390c8aa50880abe227fc30b42261a05d3","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x472ee521f8f9ac4f05b228d6c3c5e12d4cf27705","0x32f8cbe48fa82cf3243954229190b85e483ac798","0x26014c73e070a30e5468225f19d1d799397a2df6","0xa23a7810386ba13132ac4eb2097395e2c1fbaf8b","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0x3dfadcf87494364735076cd50be4a62864e65ded","0x6656da8e7339ba707ec346d660276e7799843eaa","0x9467135a90023c731803289676302fa18e75f5fe","0xc2b6493c1b6a99840ea6fddfae0846ac7c1a5e5d","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0xa7c858615b615cae98966cd06433c5e8734fb875","0x993e1df7606613b14366dfd90dd0478d21772e80","0x3f0e58eb1e93a00902b8a22b23731d0ea0e049f4","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x78beded191ed18e8b613e7a43f60b2dc2fc1e366","0xa187712d483127ed9c0f223119dcc49213123143","0xe5f0da122c1b40372ffa80245f731db57366756a","0x99917ad32169a3ded7ec4d8b21a3a845818fbee1","0x5ed8f096aea95650391a995585f86310434f0696","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0xa00884b65c3683c258d3d84cc36f9f62886521c2","0xdb2656d7fb4574bc1aa98d0bd8865608852d1b95","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0x88162334cea7faba386b7ffaf84325c616e9b3a8","0xd3342f41b1a03de920a837952ef25781a3edd25b","0x3d53958e6e378dfae3a84aef0bb2ea820ca790a3","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x8eaed448b6e986ec8c57768b35694873e1951a45","0x24cd0db23a635f115300091449ffce559dda1b76","0x6428f74aa7fc2770b2278d457059025d0f5704ee","0x209329b630ee09a04b37b168970eb66f422a2025","0x945f8c340c29e3c9e0342787581027a8d3faf413","0xb67ec30fc613ebce187be984b8cc92e8bd3c8e98","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x6921e0e32a3156255c2dc66740308cef29854a4b","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x7e626e48f5d8079ede2b09c110d5d2c551c23f86","0x3816fd9ec02c444a36dfd5ab3dc18bbb16bc7357","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0xa8a0e087edc88b37074ae3cfcd39ca18c2ae8f6a","0x815493f7bf6623844435a4eea34860c810905588","0xd1a0834c59478e6c1566359bc56d23b08d40e41b","0x555ca650f47df86c16912258a710aca4dbf50c44","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x12cda495416b7ac0d7a089b03f9654470e48c654","0xa8b4c1c78e30b9a169de733a6e4e04b6ecf902eb","0x1bcca5b62a017a81b51882b0f2d30f15e4671179","0x908d3df971e8385f96d39ef42bab626c26a3227e","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x49afcac51e4deb957708aa8ba51d8d51845aa99f","0x885eb28b9b629f0829cd107f33c09821c200072c","0xfd408ff84333e1201a057e4a5c2775303fe489eb","0x90494971e8ee7d751f512892fb7b6e28d64032bf","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x7f60c6b3cf860b2a32567c755c5d06d380f6d557","0xd728e5857e8f39bc460bc41adf6e7ce5921b13ee","0xede982ed15790e561c605cef2c266c023c43d2d3","0x745c4a0a8031b03e870116bc9080d96de2ad9e37","0xd85c63984630836d1403f4e77682bba128bcdd25","0xb81749c72db5b5209098f2bd45a7a0293925da13","0xc1d06b5ac137b820938314799d65aa688fae8794","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0x240153fe685a881cb0d03323dcef6f12a4378806","0xd9d9d13eeeb2242a105329630d16fbf6567be719","0xf05fc8b1a6e5f811834f8c85ee856aaef65d5862","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x31adbfaf24daf11c5602eb218e89f02f34ee8f18","0xa2351b384384e0d632781adf423d7a14458d8375","0xd3a675df46208cebed56e236f86e650829e22f9d","0x37edfb2576810db078e9a838ac405e787578996e","0xc0561558b7d18f971a8ab25753eea597215c893b","0x3b7619c7aab7f0392d355f41677526680443cd9d","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0xc969126cab6501aa0da1ac472503a4dffd262b36","0xd2d4b326fc813c966264b4a5c354247db774753b","0x253fbf8468015413bc7bf460f7f8faa96171e5c3","0xe27e8c08e5539b66aa4d2bcf4c9d324d93738f7a","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0xfa74c2d1fd1f1512ae8abd5d9ed693d469cce9b2","0xf339bf29a7648f2059c49a6fb72e42f522b4af5b","0xc8808d553c74aa87ee74acd611491e59f5a518a2","0xb931700857eb136231f57d6f401855e8e69e84a7","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0xfa9e13e7dc701e61ec3c85a9565925a4737c0a42","0x6589b836d7bb004bad328fd4dd7e04c999ef1e2e","0xd0d5aef2dfc3f1648a96c0fc53b3ab17a15d52d5","0xf02d03275124f262963b94e1078ba61be52c2f48","0x97b9864115ed3d3dc428799c525bbe9215c34464","0x845ec8bd463364e72830421c5b02fd5b94619bf1","0x095ce1a6a1a916c0f13271bc40e6b0a6bb9186f7","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0xd9e80bf3bd597921b1fea20737bffbf4e49966c6","0xcb443a5f156b94dbc83ffbb25cba8099bf183cab","0x45b447b7443ea23dc30acdd99b1ab8f5daa209da","0x59409e39c5fbb2629e08fd4c1c08907c7b935c87","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0x1069a62957648c177276c13f051391c10e3b7464","0xc37388cb00a131e0e23e056571c23d0566ec93b2","0x8cc688d7485a86c9f798c785e795fa11f3126420","0x36a9287d76e6e90c06424d9fcf130f20a9c3ddb6","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x09b0a591c4f1337d79cb2a51423f8f07bb2aca11","0xb6bc2b118bcdb6ff06cb164fbb428e03a6efd255","0xc4d1680fbcaf38b497f396f4cd4330cc002d6a88","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0xb7ccd311a970388ceeaa2f55c427889242b297d6","0xec49ebeed63af5049d729d9840f5b49854a47156","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x6ee26afdde94b7985df756d7f2d70418bc9f0720","0xfe52607e1482fe634fd82ca82d74f12990d3dcbd","0xde639c2f28378ab59702354608d51b11a5019c3f","0x35108d1a99c6338feb81eeeba146c91d7e1f387b","0xbd01b2e5a682a63757444e7558671c2cdb4e4d22","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0xffda445efd3f5d458703e68af6113cd4634a77da","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0xc54e59d98f2eb974d6eda8f015ad7cdd3126b9ce","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0x4108d6ffafc215c743ad83f144f3ae0d18e7bbce","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x1518c115215f7dfddc3efe4b0379f329dfb54c88","0x7e0e62ce5e660534931c6bf0055c7d97e61e1ed6","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x013644c5e5d5834da7ef8f56365c979c7bda671c","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0x2d814ed77caf027209efa93f0f4a1010ff985b75","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0x907e812ecd235cb6fb2665d048cde02070962333","0x129fded8e1e03b0b87b8da98037fb2dff30e3b35","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x174fe2068ac1b8b46a93f7a68efb554705f6348b","0xf784b34488027604630e9678d1f4ef4a99a7f0ee","0x6baef8ad4634a93a6c002abc06d57020701d717c","0x63ce35c783610966b29afba7280b1182f59d3ed0","0xf89a2dce493f26d27490f80c511cea9ced991408","0x89e90cb7fc2f27c1cd026a114dbd5a3dc0a68fcc","0x9fcf9b2a26eecf7996594f6250eebb5ef1d2e12e","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x9c5d846415347062a55616758a91b1182431e365","0x964bc2bd62e6635dd68be2918fa70517e85fe0a1","0x14150dfebc22459e3bb67cfaee13aeaf6183b9b6","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0x7b821b5031b24fca25f55c3da578e7b9229791e2","0x7bc332f85a246b02762971e59a487631eadd84cd","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xd82e0ee8fcda9dc125428cfcdc9aed3fc08e428a","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0x39d4ef6897afd69d9baf9405a7256f6943495377","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0xd8200467b363434df309e65ff3a4ea0e4d27a6d4","0xfbdc3f73a2443bb416ed326b006041b7bae6f615","0x9bd1ebe10c018269b9b1152af1dee2ab9711ec98","0x0f985e864fb5791d812edbe6009cd1f7a5e398a7","0x40a7c0ddb32d8ec01f6239e0f511bf9587805fe9","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9c4b88fbe06b6b1e461d9d294ecb7fb0c841db4f","0x535a819f39a5bfb8821787887518b8fc32b50a89","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x97e5f442ca14a8759d08566a9e5630d9b1fe3f98","0xd6e626dd0b76b30b1c44b62a472e2a1c4ae41b9e","0x32843cb7d41d5db861c58199e0fcece1bd4f0d0a","0x8d3c8b87310dff9005509d08715123037c965855","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x2706535a245aef76b7a23a0a86964205e46d61a2","0xecde882a27fb5bc39991119fc2e8788c22f55b30","0xecb09271da0879d6a1d03a4efba45b8397116c4d","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0x769ebd6ee9264ace412828100700a8f5448ed0f6","0xa7f2ed0a5f3d91f5cd22cf9db0dcbc10f8d26647","0x224bc9fe2924c82aceea6b3881c91ee262ba4aaa","0x095e52cd0915635b6e7c11a95368b4b60dbe9f1f","0xe526165b96b777f905e0325441a2d5eba7a43209","0x1639314b1adcc1f150903c1b6e14bc0e2ee5f409","0x718ce2358546ecb268d060417006f95902ad76e7","0x523044de194911829e303470e5ccb284e1d4c96d","0xc384ea49d7933bb841d88380e9f02da6397abbfe","0x7973502200b08ed0f493d8e3ffa10750f2897d05","0xfae0094339e4c378aebdf8e1bfa1bfc3f74b0fd4","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xc00725d9fca87bece7ce9aa0fed5d1c4f8b828b7","0x74ee5664b1ed394f931cae6e4effd975cb6b080c"] \ No newline at end of file From 87c39cc71e0a6f64c346d8732b16916fb252ab6a Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Tue, 5 Sep 2023 13:32:01 +0200 Subject: [PATCH 05/34] chore: rerun automated claim for season 2 --- tasks/automatedClaim.ts | 28 +++++++++++-------- tasks/data/season-depositors-avalanche-2.json | 2 +- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 7cdcb84..281313d 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -87,18 +87,9 @@ task('automated-claim:all', 'Claim all rewards for a season') return } - // Load all Deposit events - const depositorsSource = loadFromSubgraph - ? 'subgraph' - : loadFromDisk - ? 'disk' - : 'rpc' - const depositors = await run(`loadDepositors:${depositorsSource}`, { - seasonId: seasonId.toString(), - }) - const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + let seasonToClaim: string if (seasonId === currentSeasonId.toString()) { const seasonEndTimestamp = await DiamondManagerFacet.getSeasonEndTimestamp( @@ -120,9 +111,22 @@ task('automated-claim:all', 'Claim all rewards for a season') currentTimestamp, seasonEndTimestamp: +seasonEndTimestamp.toString(), }) + seasonToClaim = currentSeasonId.toString() } + } else { + seasonToClaim = seasonId.toString() } + // Load all Deposit events + const depositorsSource = loadFromSubgraph + ? 'subgraph' + : loadFromDisk + ? 'disk' + : 'rpc' + const depositors = await run(`loadDepositors:${depositorsSource}`, { + seasonId: seasonToClaim, + }) + try { // Slice the array into chunks of 100 const chunkedDepositors = chunk(depositors, 100) @@ -133,7 +137,7 @@ task('automated-claim:all', 'Claim all rewards for a season') chunk.map(async (wallet: string) => { const userData = await DiamondManagerFacet.getUserDataForSeason( wallet, - currentSeasonId.toString() + seasonToClaim ) await new Promise((resolve) => setTimeout(resolve, 100)) if ( @@ -159,7 +163,7 @@ task('automated-claim:all', 'Claim all rewards for a season') if (!dryRun) { const tx = await ClaimFacet.automatedClaimBatch( - currentSeasonId.toString(), + seasonToClaim, filteredWallets, { gasLimit: 13_000_000, diff --git a/tasks/data/season-depositors-avalanche-2.json b/tasks/data/season-depositors-avalanche-2.json index 8abdf14..4053bb0 100644 --- a/tasks/data/season-depositors-avalanche-2.json +++ b/tasks/data/season-depositors-avalanche-2.json @@ -1 +1 @@ -["0x721100c936494fe26d91ecaed06ea117eaa7164e","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x1206a6efe2adeaeedb0471736f7c339801999423","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xfe4b53eeb334263bdc5dd76054d3517a7b757259","0xe0b84e9c62a260b6f28baf3a4cc95bb11e2d532e","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x041eed0172d0d193176913a4415ac66ce8185319","0x99c16079c89f47feecf45546053a859dcaaac997","0x4ddbb04e5d5cb68f0fc1f089fb7471e5d8deccb4","0xde8266bf77d65a02e4cc5bf5e526e4c2140aabc1","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x04236988c39c28fb0cc15d50af22515eaa038c13","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x864ea716df37cb55823681d04cf3332a851d54e0","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x357d2a5ab09c47ea8f8b458cf6cbbdf60385fa62","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x8f447437a9197299fdd9f8318cd9964a3a9d8508","0xf6878bc768d664afdf815898d1f908be54eedc52","0x4180a0da3c4d833452150634a1e0141c20d34196","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x06972cc41d56e548e615e3395f236fd0e812a991","0x7b52f833c225133a6c849584325a554588a6b597","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0xc28e635715b808494187941bbb26248e1ce8e1b2","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x227c2411f03630303483a88b6d4c49eb32a92f84","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0xaa704fe1277431015f48231909f15c958fb74940","0x9de1925269f2c68a2a570647ecb170fc245db448","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x13751aab15d6d1070049dd48b6a01328f263f333","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0xdf0c403bf50801b0437671114e6c05ea6e310499","0xada131233325bf6b08d4e245e202cb2351d28bc5","0x611f82431ded5b850d083f3742b7c0f4418b8957","0xe6223be27e5ef29d9766a992e3b58bd082416c45","0xd141f1bffd9c0c9944c9f27172f1a1bf56ddee74","0xc8b50a8666d3192febf3df068f6ac6a2f9e29d13","0xd2eff1011f61eecfadb41929d9e68a22e2e1e4bd","0xbaed546e54ffac3b9ca127a2254876790aed265f","0xecc98d31cbe8fea03ad9b6dc3c65b1b66b424361","0x8c862dff50699290a6043427d073bd4a6e42763e","0x253902b38f19ccc22e589b4c12beb21293a89353","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0x474118147a047f8dd2679d14e5947490a21cb74f","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0x27a90a6825132eb88e8feaafe035658663c8944f","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0xc0a2bfbffce1071071c8ea7cb0d3f342e5c27a12","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x150d63350f27db753ed2e602d6474b27fcab713c","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x9e57f52c7984dfdf32ea028552312f48de9f7f34","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0x43216c0b7ed42325020ad460134ac8dc48d98ccc","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x69094b7855eccc06d374fa604d594779072b04ad","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x2a922fed52c4e039e67533b2c0785f1255960d85","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0x699be501fd6e4e79415ce9db729a39dd3c04d279","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x3a2e4f9e843de3a2d5e1ca3d30efba58a3545150","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x97f46368175b980b7124e38f0af4daac008a058f","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x051420d034c5b5f3871ef75626347721744ada83","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xd5240b3e10cfa566cf3be3084e4c029ec62e5972","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0xf854eb944eee9dd131fcaa2e55be053dbf3e7b93","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xa15704171245d148206a8f1240eb51cf3dadc368","0x69479e349af2cc60b33e11373831e4209f74c5e4","0xae8ab67bd43326e424b649050d33b704288af1b5","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x62fa1525fa43621c0a72f39bded0759063f297a1","0x03ea3830138e1a986a8013e180a6de5a8beee6cd","0x83f3df36610f3a07304d246d197c5036ec11239b","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0x5ddb8e92911fe1685521106fd7bf15479059f412","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0x25280a733b3ccc8ba20413e8d72a5889b0bacdcb","0x309b936952bf22d19655ae90b1164c483bef4774","0x257d1f543d2c934b85e864403a04a088f43f05e2","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xc72c396e48799ed5c52025fee5485ae7aa1429f5","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0xf4e6232d2f86bd3399d956b3892d6b1893e1e06e","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0x8ed78db365fa885cb7a5bd29093dfdc54f8c944f","0xbb1f823554d8f62804686edda026022db7454195","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0x5edc6a966b477a3b1b0b874771206cd24cd3b832","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0x93fe43db40c997ae784143f060032db16293d93f","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x28656ee0640c0f54a9cb892ddecce5f021c993f8","0x1bb01159ab168acd0cc055ead980729a2adae919","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xcf0758f9cc8c6ce84609e94bd5e1f856fd595657","0x07737aba415bd610700663b633c4babb827f38aa","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0xee318930f864178119bd8f3d36cbdc43b986c06d","0x461fe77f0b6a893ca5b271bd8b8fff6b12c498b6","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xee096417d22cd50c472edbe9438f851cb50199f7","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0x5c263db138be88737ad66c01428ff847861ad8f1","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0x97b0315a1e35ff45070c1394ed06f6207c1b46f5","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xce833bb28d15455af31af5a30c4626bf2939e389","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0xcde467f92434094b8c16c953da550b750b5cf6c5","0xff8c87595495750f407bb94dd35ef7db034fdb59","0x2923f5ed47c69549f0ecae49b06085c7c5430db1","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0xfe9b4781893a22eb10913cabf3d578ebc24be1cd","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x28c43574e0dfae322c49e266e516c41630686775","0xa7774f5ecdbab450d6a04be8f430448bf28a9d26","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x813de8be827a526c271e5226af912441d3b63700","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x4f4e2ca98489235a5442f6b7ab80731bd64f7d27","0xd43c861e1747f9b262cbb91bb089205b3af80458","0xeb189824041d66ed1fc10b3991242c245f88c74c","0xb841ddb964e7c9309941732d6c3270f60986893e","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0xcc81f3fbaf04a41c226a12b25877f58703b8c364","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x670dfbf4b16e7f4146e3e565a496b039e6c1b5aa","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x0e10816ac60b5ed3776864b259b31abd22b66955","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x1c6300a7bd150926c237ef482805e93574bb276d","0x85029f5ea54742c64632a27f47526825240fe285","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0xed45fefaa2fe28763e7e0629678ed6c2debb5701","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x83771c019a51462a3407c54345a02dc8c6a85108","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0x1635ce4325eb96817610255fed3b39273deea95e","0x0467e993ae5216e318cf7cf27dd17d44d7724666","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x1f1cfe5e8afd4106632548a9e67401ac28572e05","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0x1cf78459cc0960f5b611b5e95ebc4cb7b2c24846","0x5dcd2a775d7d71fc4e7d70c49d2fca078a2d870e","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x2feb527119346af9c42598ebc414f781a9777ccb","0x5d315beb4c49178231103248c0198ba70fbdc76f","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x83973e694d35461a33eb056a36d02e4e6e56cee1","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x8316d8837b456ea3b60536b14c62357652b7e416","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0xaad1557ef67d88221bd1e029d0aae501390cc7ac","0x0d2c5018723475800677676dbe58725f5ec788a5","0x980ece433b54caa56251d050cb90e706871cec8d","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x21c4ddadda9c960788a4d8b8c5e7febbd4850ec0","0x59cf09d68940636efc588cf86618d3efa2414c39","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0x102110a6f8196b0b21525a2f4392ced7f3cb4e4a","0x3983f90047a33db4369259fae42f13429fe46bb8","0xe05e5d7570a178347d184eee8f1d3b3c37ebb52f","0x96b66b565748afcee772cfa12b728aeda0a67d40","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x8c4ca0570f0251b72ab74dc24be6c1fbe8333fea","0x5cbfce8a39cbe662222bb0e5a6c3989bbe11eeb7","0x515574ce0e25d65496647999231fe2145ff62408","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0xf7da27d41c96fc150a45d4feed630f55464faea0","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xdbeef580eb836f68d1e08769372799f84766d9c5","0xb6c2e5675efa86c84561d22f6f5bbfdb4552a2df","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0xb533c39bdc314a5469b3a668ec8110985ad29ea2","0xf9c2f322398e58dad8532716d751a7447ab7e299","0xfc749385de796532a31a2c8976bb4d537647d825","0xf1a98729ff297218f7e57621fe6e9cca00bbb9a9","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0xb49b4f3d3355aeb84992e81986a52f730298bbc4","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0xe5a9a8804c6a8ceff89bc20c7c4c1e719a0a442f","0x8a316a029f7766536de36e226cb58d9afb39d1fd","0x74f3acb558017f2987e17d27b1cd101100e33095","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0xff61a30a954367758552d5fd9ce7a28369898496","0x76453095ab298978b4e88958e18d53385e2e3dfd","0x6547d9afcba5e32f8bff0ffb7b07c2377a570995","0x335977b2165dabe24fa0acc284adee6bc2760e8f","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x7786126e5e953ddab491bcef27482eb3365a0708","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x61e833e1e7476f047cab466603f7671438f07397","0x77b41acbc72d4c64d88fce50428100a13a84c186","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x321efe1ec6502ccde67216d87bde707cd3deca03","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x44a51f42650e8660c0dc6f1cd5362f90c1761322","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x66345a99a53b43026e35e53794f08ac1ec9a4739","0xc0ae894812966887c0ce367acc41fdf84c5f3314","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0xd153bb8c1245545728551ebf87a6a7fe6e5a5793","0x3793deb92101be0f2b9dace8e612511ab4b1c554","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0xac3d6efc9e9b8c90b1b1d2ff35b1d4a84c9ce80c","0x827dbbe748a492b242a9a189ac578ef8876ee635","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x2f381172e2224f922bcc4886c98c147be34fd59d","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xf0ee65d910037e35225fda039521a8b73b8e073a","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0x58ef3367de9fa4430a78675ba91a1a162e322d79","0x1e741f9bb96b9a990051936d841fd136d605e531","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x3287942fb70d1b963d8688717ea74620d4898593","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x3c9f50c9d4be35c734290b95f563d4dd621e240c","0x510b994672200a21316e4665b15d4b6f1a16770e","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x9cd81c8f705fbbd6fd8b7fba9a4e6e4e5f2f97d8","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0xfbae75cfd09650ec3adbd31f74f147c47f2316eb","0xa8300b92a403f9abe944d04512d07130770149fe","0xef103307ba56e3f079631dc5dceb31f4e4eabdb5","0x2c4113ffea6514ff91a7697b758128c80f59a2e3","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x72d0779298e3297c63063e4d351252209129c7b1","0x2fd71aa5e1906741b22ed561d04cb1a2a5aca72a","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0xf03ce6f21164ba3c7cd5c3f4dca214a9f250b096","0xb3a4d65c780eb6139bc0ddcca59462a4f8f931bf","0x9b9e1b73d7346286520a3ddb36dd6e530db1537e","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x5d9fa323d70441c70d8b9be597b629016c3af898","0xb1f3dfa1d37487d7f19521ab40c61f4de3a28d25","0x681caa36d91aeb81f0c65b3de0b7bddfbccafdc8","0x40161ad3ee3c9b4b5753d5a72035ca3ca74f2380","0xac56fc694e06e536a384d273bfc318650cb135f6","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xd1cc1e35c6d0387351cf84a71a2790bc112dadeb","0x7c003de27a0b5b15af447cdd6493c98885042c68","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xf02ba499e2eb34e66da6cb6b1ca930945e867610","0xed92fde5aba69b9596ce11f77639e0d6a21160ea","0x4d275214be7487ba210158c29d27c216829489bf","0x7c06b789931e8df25cbc9f60fa916604f6af1464","0xd8c0d5523824994d43743f94dab72f16b306b248","0x5599746948950205b229ba683824652cfb504e5d","0xbbe2b49d637629280543d9550bceb80bf802287e","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0x5b67991a2bd9849ca8968633f912ecd8b628772b","0x59e965157c8da51b48c52cac5504b7b981995322","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0xe99ef353a00f0a0d07c418a439b00ca7e18a2613","0xf12008f7a04b81dcfc58924157c95def01977b05","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0x1f94a12e745ce696c9338a1db393e0125f218740","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xe74a0f121b171834961424f9216a91555456a983","0x483028f6531db87645c67cec4bd97777ea90b4f3","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0xd445873c98f5f0b8d6d40887f50ae869da5fbee3","0xb05b2e41fede4ea329cdf5024cf6127ddfaecaa2","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0x400139b09097fc4c43634018359e286f85bcd469","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0xfee740fb924b7e680581593db068ac0dc9ce9250","0x3fcaaacc54f5240aea1d8767b4238b9a0eb11952","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0xe85054783ac72b93a082bf579b48615993c1559b","0x510388680d11d4473b4fca975dbc8b1922912e72","0x509302c3d574ffaedc51b6784d0b5b482c591e45","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x7643df115bcd333a0b4c651d114f25a617c735a4","0xda0caa74de7a58734b65d7327c4e169d1e5049ba","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x7bb2c71db0dfbdb63dd70ea6dcba442be7aa3c87","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0x144fe10482fc1384cde291b6e01ca868b9355eca","0x29372570acecdcbfbbbe95837176aa7765563a58","0xf568af57b088e565624409cae2147db23da72795","0x2bfdea06e45097a135e1e22e5dbe5eff9b7b06db","0xfb8adb4ac722ed019a8ea51a05fdae0692bdf02a","0x1d9e9965b8509628628a225c35ed140819aad7d0","0x3200f484ccb390b38814c142b6a30e4885100e28","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0xa82f14e8241cd61f823579ff89c805bbca270feb","0x7f78566ab762ea753baa23087f9b064a5d6a1219","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0x776b3fab4f3063eaf12204407cecde719be09267","0x945f4f35eb97a7baaac343e07de61e9697adddaa","0x53b25faf9492285831d7a9b3cef7e4dd78060b1e","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x3cf2a68724ea878f8a216716c5741808070a6d31","0xebcd8aec57cfc69065578e1f4ace589c6d60be84","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0xe7c3395111d739908d1d6671a1acc69f6b6538fb","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x558188b83af5168b62ca8f928d07dd51433b3425","0xc54772b82ee323a4e52b1918dfec580136e22507","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0xfc2b322799db5b892805b250347083c749b61d9e","0x53b4331987798f2ec6673f479d5311735067787d","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xd2b189531c1260009d8c014ca9d1fb407f5bc529","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0x386f745d246b2080c457811c99bd667ec1b08061","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x87fc6665593d82cf5b5da73e6d4165c06513b1f1","0xb27f45683c6511259790bfdb5af82a96c438cad0","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0x6760c950ecc85be1955ffc47cf3a3f25e277b6d6","0x4c5d8e215541e58020c1d044c0c27f2fc9289aaf","0xf4a0eb7f6c2a2e2bc582e66824553cccd8990ca3","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0x1e050ca02787ab13d2006c9f06801789546a9eda","0xe4d365f2314d5dd16dd597ff45b3f3fa97db448f","0x88f279aaccb7294d9580babee56042c1c79290cf","0x6e5c61ea802d020ef81b9a7a406ec9cb1921dcb3","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0x4efce69a3460620556c4ea933192764d984b6ab5","0xf8f3e3f52a74c9b6d453c70bc05e5d70a58057ff","0x17df6eddcffe738d1b80b2abcf159c5adba82665","0xf0f192516a1ecd91f87dcda6bbe538ba8a15f9b8","0xde525cb6d2dc9a95afce32af16eb199ea37c580a","0x7fc5502c94b36de68dde3980415679c72ceb113a","0xccabb60dc71cb454a325e242281e288da7126349","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x9da0eec1b078c13d838c2fb530a978f6c438d872","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0x2464c45cb3040821a49773717ae4d375dee3915b","0x0c6d80187b3f37a6cbd234f37a95761fbff7f4d3","0x237deb0192880732869926af2ec85a6a64c88e8f","0xd1db9ab9dbde811020f2a001df92e547391ba97a","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x087719013c6645ebfac905ecbc91603944595c58","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0xfe077a5576c085a0e745632518244087b91cd155","0x26672765c04c1dc3cc3290a79d8550a7993d785c","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0xe8db468aa3f8d997c96ed7674784dbd39067e839","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0xce2fdbf148358836c9738bbe342db3a9f7ac6301","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x591860a562d48a7c9006105612b573f8b1ef6817","0x9ba1b661586b0b06fdcb6c06ca302c785746d4ef","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x7dafc90f5b1533875705872b4b77430aa491ec17","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0xe4b9bf68adb9edccd599adbee90c40c6670e60ae","0x0dcaa84602bdc605eaf5667f784266d20a7f91f2","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0xedc2d72b697d62913e1709e929981055a612de6e","0xd9cc3d7a00c332b965d94358e66f93dc11b42e43","0x45bdec2e54d476fd6dfd5ab9954856aee921204e","0x165e02cfac87b846cec7cbf5e80cd19748fb0227","0xa333e486608821200004b98212355a7df32491dc","0x0a005b68c19f43964bd48d3cd7b90b839acf2acd","0x00c72f6056b4ddd3e684e22daef0dff18a367d0f","0x21b0ccc901b86ea1277b2865c73aee9d867780d7","0xdb48dce5b9a0e03a3382d27228844f90701d5df8","0x73730e672c5b6696e85f6496d0aae51f7a631d71","0xd0ad343f78d3864f4ffca528ace86551754adec7","0x6e8f37ee5915749afc8b291173837fd132099837","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0x23e6df2693de753252f034be95116faa7270b4c4","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0xb7f78106935607d2003ac997894c8271173ebfeb","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x04db3d28f9120c63992db875fc2dcea2a19c04d7","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0x958d983fe50176d844bcecf137edb95fd1afc540","0x6a8bde342b734db028ddcd6527787dd4261240c8","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x3ae494842a0117315c532370e9485f8930279ea1","0xe9707be0764388e38945e6322dee740557b3ff3d","0x5e9def163ece7711d23d4e7319013b10596dc14e","0xc913b10980b3d079cd9b0aa39c73714c76470bea","0x12cdd62fea8c62657d0dc4662ecdf33150513a73","0x600c34bcf247d7efac731d4b0163d6307aff9dfc","0xfe2202c2ee6630450321ad7c383c6e10c593bb70","0xb212e9606c0986720ec07e3e66de206b752653d9","0x7318c5252e06a09db4953702119e226bf9845c16","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0xabaf7ae21fab058edfd665c118adea740390159b","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0xd7aa74781bebbd0582f255c91fcc43ab3a391037","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0x4959aee7ee78186100f725573703a6a5701f645a","0x72efd08a0c7515b2deb67ac70664a6f048a2520d","0xce2fbe6cfcc074e8097795e0592df436f596c7b2","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x59cc61f7fe1788a0db102143444ffed4f01cb10a","0x207b173bc4c6b990bcc04cef9ac6d26f36e1be11","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xcae1055f11b88237665d37effa8a294c8224533d","0x9c94cc6264be038f3a36d98dfac0a7d8d6d63b8e","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x0e82df237fcdffe4209d0b7d53a4a0936311c23c","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x77330ab6cc7db76038db9aa9e00eac7aca4913ad","0xacac090ed87c72c804566f1db8dc4ddfad7a8be6","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x246fa3c7d3f319499a8234003f79515f2462eabb","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0xe38b04f83bb9c9648ceb86fd7d801c8d0768e3bc","0x6cb062197e25c84e9fec7607bc2769d1f2b51415","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x75040bf74846972705a5aba861cb196a5e0a5eb1","0x628ff0af9dc13c8c32949f389aed3113f83e2094","0x916d43375b97ed1921f84319e3f42300c523e7c8","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x0232da6476a69f9b70d311b1eb82f078e557d5c7","0xc332aa1d72f0847f57eb179c7a9f6650d2d6d5b6","0x86bddfeb23945f869099d295e84f9036b4e83d18","0xf58886c5a06873357e946e75a4a7e3051a1f061a","0xe1b03b5a2cfb816f3ed324ddf3c94589326f5c17","0xe7b87150991634d6b8fdb2dea037436764680984","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0xfebba470b68542ee297b18affd0959ffa246b359","0x8c064c77364e617ff562b491c10485eb6a4ebc74","0x773e6a11a6450fd1007d35a36eb2333decd1917b","0x9ab348843028ff3a50d739a119761cfd8b52fd2b","0xf33720272b829c85109a31b3ac479ac443756a9b","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0x6735fac051316385e63342c7c44c7b55a5187860","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0xf437946f812dee52f615ec9963251b8527bdbf0f","0x8418626867183397355afb3eba16442c1ecc23c9","0xea6117e46dc4bace7210a03b51804b46401debbd","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0x26cd3876eb91cace7eadd2b437a65d249c635128","0x368fc84891313572e9b4d0d9332cc34b4a4e9eb0","0x752e5fe4ca41aa32b82a0cb842e3dec13e23f709","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x57066bca9a8be58929067c1a6549bb8f2efaa30c","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x0dd643c5d43e06bc5b5691ab157a03da0fde0d68","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x64b876db97b3338334f8cbe1f8b662c9c4b03fd8","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xcdde3935d2e655264ccdbcf544e380c53b23d3c8","0xa845b97dfe63912a2b1b915f111dd630a630c787","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0xadd62bc61b3f16ca964a0670c6cd143dca2d0f73","0x469ed74eda294760b26b32ec6e306ee196cc7937","0x5e95128f86908f9308dc79c7f5a27ed4e77ab137","0x7ba1a543ae17941c706702c087e58ebb07967721","0x5b72294bc574466665359f379437fb17a7560923","0xd5abfcaae5b421dbc3660c73a5724795c4917b79","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x16839506658f0c42ca7ceea9317d3546dc75df0d","0xa24e2a8e4840564821f109d5b3a908194143e636","0x5a73dcd82bfd45b84aa9c70477b049874ee4bc3c","0x7ef447ef322a441666162c996cf98449dfce920d","0x69cfecc77d5c218093a7d2c85d4705040d75924a","0x877e7fdaa8d76d20c41762d063c3b7947dac76bd","0x4da48333589d54956f4b8c497e274867630a8bad","0x6e22158961608f3c3ba0d9e0ae642f1b925f14e9","0x075ca46d58d4447ce855f52a1edf4857d02a02fc","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x813836809203abb4b83eeb1aa7406daf266ce7bd","0x43481e045b140b8bababf151568f73a223060b02","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0x75f4ce1b4182a9b8627c547221dbcea68804e1fd","0x659ebb7a0813ad2107592b3ec67be500e2792992","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xad3123239bf2ed5e507aebf84a47b3760169ea23","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0xd4e56eebb6001cd7b56eaedec097d988efcba73b","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0xbbfdf1f358ff094b7f3cf2b484748c3f9e5dd037","0xe6cbf7333303fc382c8cace99f138fda788d3154","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0x3a25f0d43fd0f88faf94a4904af7d9faaec1d1c4","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x78133bc446f67848255781e79743902f7c762bcc","0x83b576a54217017325b70c9e43363c69fbfcfa2e","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0xb7d50752a2d3faa7bbdedd7f9235045c4340e64d","0x2647050446e6437558c6df9313c412ee97ba7d19","0xceb63b823a22310af59de9960c3a78fea77e3b82","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0xce86d63a859d5c2f9ff5bd5145330bd30ddd8f10","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0xdc8915723bc7115f28f85e3777bbe7340b45215b","0x32ce34a267e617410f25c4879af780b602a599ba","0x65053579065da1fa4d60b800ca47e633874ad780","0x892a7c4ab693d12d41af3ade27884e2b94745681","0x416552278815a25c96acd6d4dccd2a417653d85f","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x65f4923c646c62d5803940e94ac03da955c3c814","0x6f428ffc388787935b9c5ddb9f6e26bbdac8fae5","0x5e5547f8c425bb60870820907172c2a5b7d90283","0x68b6388f57cf22d19f84e7e9bb85907005ee80da","0x6c1a321bdc2ea45b64823a77524932d4b361a48a","0x77f62b2dd47520f0e29663c8f208a40682202936","0x82ad9768e5129784938e1d6ba1b1ea94c0d56003","0x7df31f739b518a4821c2c5fee276407202b088f4","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0xd71696bd4d276d9b8b2a764bc1c22e94548032a2","0x77b3a67ccedcfebe4f6099a319bdef2dda99b69d","0x21e1882df2fa4744e0cd0e2ae8819757692dbf4e","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0x46b23eef1ae28966da007f3ac521d7aa257f6ee0","0x26ae5492a42863edc7c6b9110de70bf3702c92c6","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x697652ad036a251bee98821e0dba68e196029f0f","0xe76e1015997c1913303341f9b19a577114147563","0x8a962400c37e36d42aa0270b05ff1f6ebb8cbe34","0x1351e22ec082a31b573eb7e1deeb1e9308628f57","0x822df343216dd41e8bcd389eae342117462407a7","0x756b49da56257a73b487ba56d0b580410a8719a5","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xef6612cb458342eb7c374619860a9bae998fd350","0x6248d23207c36ee03788060a136d781baec52a0d","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0xd91d0b645ca1193645cdb3ddf1b2a8961bc90699","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0xa2d5626feb0478243c253a4419e661a679a0de81","0x0e37e431057711c9c1aeea56ee5f6f169281657b","0x1d83969532fac5ffef2ed293e423f634ddac94c4","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x51f614ee00960ec37b743236499af47d7caec396","0xd9daedb465ec48a8431cecb081299e4544efeea5","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xa351103f950bcd9a3dc8aaf5961fb4e94c542a5e","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x4734cbccc556efc2e07d9e8fa8de13eaa8716758","0xbe74d6a390c8aa50880abe227fc30b42261a05d3","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x472ee521f8f9ac4f05b228d6c3c5e12d4cf27705","0x32f8cbe48fa82cf3243954229190b85e483ac798","0x26014c73e070a30e5468225f19d1d799397a2df6","0xa23a7810386ba13132ac4eb2097395e2c1fbaf8b","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0x3dfadcf87494364735076cd50be4a62864e65ded","0x6656da8e7339ba707ec346d660276e7799843eaa","0x9467135a90023c731803289676302fa18e75f5fe","0xc2b6493c1b6a99840ea6fddfae0846ac7c1a5e5d","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0xa7c858615b615cae98966cd06433c5e8734fb875","0x993e1df7606613b14366dfd90dd0478d21772e80","0x3f0e58eb1e93a00902b8a22b23731d0ea0e049f4","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x78beded191ed18e8b613e7a43f60b2dc2fc1e366","0xa187712d483127ed9c0f223119dcc49213123143","0xe5f0da122c1b40372ffa80245f731db57366756a","0x99917ad32169a3ded7ec4d8b21a3a845818fbee1","0x5ed8f096aea95650391a995585f86310434f0696","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0xa00884b65c3683c258d3d84cc36f9f62886521c2","0xdb2656d7fb4574bc1aa98d0bd8865608852d1b95","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0x88162334cea7faba386b7ffaf84325c616e9b3a8","0xd3342f41b1a03de920a837952ef25781a3edd25b","0x3d53958e6e378dfae3a84aef0bb2ea820ca790a3","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x8eaed448b6e986ec8c57768b35694873e1951a45","0x24cd0db23a635f115300091449ffce559dda1b76","0x6428f74aa7fc2770b2278d457059025d0f5704ee","0x209329b630ee09a04b37b168970eb66f422a2025","0x945f8c340c29e3c9e0342787581027a8d3faf413","0xb67ec30fc613ebce187be984b8cc92e8bd3c8e98","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x6921e0e32a3156255c2dc66740308cef29854a4b","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x7e626e48f5d8079ede2b09c110d5d2c551c23f86","0x3816fd9ec02c444a36dfd5ab3dc18bbb16bc7357","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0xa8a0e087edc88b37074ae3cfcd39ca18c2ae8f6a","0x815493f7bf6623844435a4eea34860c810905588","0xd1a0834c59478e6c1566359bc56d23b08d40e41b","0x555ca650f47df86c16912258a710aca4dbf50c44","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x12cda495416b7ac0d7a089b03f9654470e48c654","0xa8b4c1c78e30b9a169de733a6e4e04b6ecf902eb","0x1bcca5b62a017a81b51882b0f2d30f15e4671179","0x908d3df971e8385f96d39ef42bab626c26a3227e","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x49afcac51e4deb957708aa8ba51d8d51845aa99f","0x885eb28b9b629f0829cd107f33c09821c200072c","0xfd408ff84333e1201a057e4a5c2775303fe489eb","0x90494971e8ee7d751f512892fb7b6e28d64032bf","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x7f60c6b3cf860b2a32567c755c5d06d380f6d557","0xd728e5857e8f39bc460bc41adf6e7ce5921b13ee","0xede982ed15790e561c605cef2c266c023c43d2d3","0x745c4a0a8031b03e870116bc9080d96de2ad9e37","0xd85c63984630836d1403f4e77682bba128bcdd25","0xb81749c72db5b5209098f2bd45a7a0293925da13","0xc1d06b5ac137b820938314799d65aa688fae8794","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0x240153fe685a881cb0d03323dcef6f12a4378806","0xd9d9d13eeeb2242a105329630d16fbf6567be719","0xf05fc8b1a6e5f811834f8c85ee856aaef65d5862","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x31adbfaf24daf11c5602eb218e89f02f34ee8f18","0xa2351b384384e0d632781adf423d7a14458d8375","0xd3a675df46208cebed56e236f86e650829e22f9d","0x37edfb2576810db078e9a838ac405e787578996e","0xc0561558b7d18f971a8ab25753eea597215c893b","0x3b7619c7aab7f0392d355f41677526680443cd9d","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0xc969126cab6501aa0da1ac472503a4dffd262b36","0xd2d4b326fc813c966264b4a5c354247db774753b","0x253fbf8468015413bc7bf460f7f8faa96171e5c3","0xe27e8c08e5539b66aa4d2bcf4c9d324d93738f7a","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0xfa74c2d1fd1f1512ae8abd5d9ed693d469cce9b2","0xf339bf29a7648f2059c49a6fb72e42f522b4af5b","0xc8808d553c74aa87ee74acd611491e59f5a518a2","0xb931700857eb136231f57d6f401855e8e69e84a7","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0xfa9e13e7dc701e61ec3c85a9565925a4737c0a42","0x6589b836d7bb004bad328fd4dd7e04c999ef1e2e","0xd0d5aef2dfc3f1648a96c0fc53b3ab17a15d52d5","0xf02d03275124f262963b94e1078ba61be52c2f48","0x97b9864115ed3d3dc428799c525bbe9215c34464","0x845ec8bd463364e72830421c5b02fd5b94619bf1","0x095ce1a6a1a916c0f13271bc40e6b0a6bb9186f7","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0xd9e80bf3bd597921b1fea20737bffbf4e49966c6","0xcb443a5f156b94dbc83ffbb25cba8099bf183cab","0x45b447b7443ea23dc30acdd99b1ab8f5daa209da","0x59409e39c5fbb2629e08fd4c1c08907c7b935c87","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0x1069a62957648c177276c13f051391c10e3b7464","0xc37388cb00a131e0e23e056571c23d0566ec93b2","0x8cc688d7485a86c9f798c785e795fa11f3126420","0x36a9287d76e6e90c06424d9fcf130f20a9c3ddb6","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x09b0a591c4f1337d79cb2a51423f8f07bb2aca11","0xb6bc2b118bcdb6ff06cb164fbb428e03a6efd255","0xc4d1680fbcaf38b497f396f4cd4330cc002d6a88","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0xb7ccd311a970388ceeaa2f55c427889242b297d6","0xec49ebeed63af5049d729d9840f5b49854a47156","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x6ee26afdde94b7985df756d7f2d70418bc9f0720","0xfe52607e1482fe634fd82ca82d74f12990d3dcbd","0xde639c2f28378ab59702354608d51b11a5019c3f","0x35108d1a99c6338feb81eeeba146c91d7e1f387b","0xbd01b2e5a682a63757444e7558671c2cdb4e4d22","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0xffda445efd3f5d458703e68af6113cd4634a77da","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0xc54e59d98f2eb974d6eda8f015ad7cdd3126b9ce","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0x4108d6ffafc215c743ad83f144f3ae0d18e7bbce","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x1518c115215f7dfddc3efe4b0379f329dfb54c88","0x7e0e62ce5e660534931c6bf0055c7d97e61e1ed6","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x013644c5e5d5834da7ef8f56365c979c7bda671c","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0x2d814ed77caf027209efa93f0f4a1010ff985b75","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0x907e812ecd235cb6fb2665d048cde02070962333","0x129fded8e1e03b0b87b8da98037fb2dff30e3b35","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x174fe2068ac1b8b46a93f7a68efb554705f6348b","0xf784b34488027604630e9678d1f4ef4a99a7f0ee","0x6baef8ad4634a93a6c002abc06d57020701d717c","0x63ce35c783610966b29afba7280b1182f59d3ed0","0xf89a2dce493f26d27490f80c511cea9ced991408","0x89e90cb7fc2f27c1cd026a114dbd5a3dc0a68fcc","0x9fcf9b2a26eecf7996594f6250eebb5ef1d2e12e","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x9c5d846415347062a55616758a91b1182431e365","0x964bc2bd62e6635dd68be2918fa70517e85fe0a1","0x14150dfebc22459e3bb67cfaee13aeaf6183b9b6","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0x7b821b5031b24fca25f55c3da578e7b9229791e2","0x7bc332f85a246b02762971e59a487631eadd84cd","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xd82e0ee8fcda9dc125428cfcdc9aed3fc08e428a","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0x39d4ef6897afd69d9baf9405a7256f6943495377","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0xd8200467b363434df309e65ff3a4ea0e4d27a6d4","0xfbdc3f73a2443bb416ed326b006041b7bae6f615","0x9bd1ebe10c018269b9b1152af1dee2ab9711ec98","0x0f985e864fb5791d812edbe6009cd1f7a5e398a7","0x40a7c0ddb32d8ec01f6239e0f511bf9587805fe9","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9c4b88fbe06b6b1e461d9d294ecb7fb0c841db4f","0x535a819f39a5bfb8821787887518b8fc32b50a89","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x97e5f442ca14a8759d08566a9e5630d9b1fe3f98","0xd6e626dd0b76b30b1c44b62a472e2a1c4ae41b9e","0x32843cb7d41d5db861c58199e0fcece1bd4f0d0a","0x8d3c8b87310dff9005509d08715123037c965855","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x2706535a245aef76b7a23a0a86964205e46d61a2","0xecde882a27fb5bc39991119fc2e8788c22f55b30","0xecb09271da0879d6a1d03a4efba45b8397116c4d","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0x769ebd6ee9264ace412828100700a8f5448ed0f6","0xa7f2ed0a5f3d91f5cd22cf9db0dcbc10f8d26647","0x224bc9fe2924c82aceea6b3881c91ee262ba4aaa","0x095e52cd0915635b6e7c11a95368b4b60dbe9f1f","0xe526165b96b777f905e0325441a2d5eba7a43209","0x1639314b1adcc1f150903c1b6e14bc0e2ee5f409","0x718ce2358546ecb268d060417006f95902ad76e7","0x523044de194911829e303470e5ccb284e1d4c96d","0xc384ea49d7933bb841d88380e9f02da6397abbfe","0x7973502200b08ed0f493d8e3ffa10750f2897d05","0xfae0094339e4c378aebdf8e1bfa1bfc3f74b0fd4","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xc00725d9fca87bece7ce9aa0fed5d1c4f8b828b7","0x74ee5664b1ed394f931cae6e4effd975cb6b080c"] \ No newline at end of file +["0x721100c936494fe26d91ecaed06ea117eaa7164e","0xd74622ed5cbd8c6c93b0f96f115b9a07dc7c8bd8","0x1caf13e8fbe83b8b5902bbc2959f2f9d839f70ec","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x1206a6efe2adeaeedb0471736f7c339801999423","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xfe4b53eeb334263bdc5dd76054d3517a7b757259","0xe0b84e9c62a260b6f28baf3a4cc95bb11e2d532e","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x99c16079c89f47feecf45546053a859dcaaac997","0x4ddbb04e5d5cb68f0fc1f089fb7471e5d8deccb4","0xde8266bf77d65a02e4cc5bf5e526e4c2140aabc1","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x04236988c39c28fb0cc15d50af22515eaa038c13","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x357d2a5ab09c47ea8f8b458cf6cbbdf60385fa62","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x8f447437a9197299fdd9f8318cd9964a3a9d8508","0xf6878bc768d664afdf815898d1f908be54eedc52","0x4180a0da3c4d833452150634a1e0141c20d34196","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x06972cc41d56e548e615e3395f236fd0e812a991","0x7b52f833c225133a6c849584325a554588a6b597","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0xc28e635715b808494187941bbb26248e1ce8e1b2","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x227c2411f03630303483a88b6d4c49eb32a92f84","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0xaa704fe1277431015f48231909f15c958fb74940","0x9de1925269f2c68a2a570647ecb170fc245db448","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0x13751aab15d6d1070049dd48b6a01328f263f333","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0xdf0c403bf50801b0437671114e6c05ea6e310499","0xada131233325bf6b08d4e245e202cb2351d28bc5","0x611f82431ded5b850d083f3742b7c0f4418b8957","0xe6223be27e5ef29d9766a992e3b58bd082416c45","0xd141f1bffd9c0c9944c9f27172f1a1bf56ddee74","0xc8b50a8666d3192febf3df068f6ac6a2f9e29d13","0xd2eff1011f61eecfadb41929d9e68a22e2e1e4bd","0xabd3e31a34d621a5ecf943b7783a72ae7428344a","0xbaed546e54ffac3b9ca127a2254876790aed265f","0x21473764490d630d64b073a228cdc081a2236991","0x4409fe0ad846047148cc6b45de1e677165530dbb","0xecc98d31cbe8fea03ad9b6dc3c65b1b66b424361","0x8c862dff50699290a6043427d073bd4a6e42763e","0x253902b38f19ccc22e589b4c12beb21293a89353","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x326398d6ae0ff317d728888002a203b83eebd54a","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0x474118147a047f8dd2679d14e5947490a21cb74f","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0x27a90a6825132eb88e8feaafe035658663c8944f","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0xc0a2bfbffce1071071c8ea7cb0d3f342e5c27a12","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x150d63350f27db753ed2e602d6474b27fcab713c","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x9e57f52c7984dfdf32ea028552312f48de9f7f34","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0x43216c0b7ed42325020ad460134ac8dc48d98ccc","0xa3b76f49c5d4f55764be870962af2bdd0c0ca025","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x69094b7855eccc06d374fa604d594779072b04ad","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x2a922fed52c4e039e67533b2c0785f1255960d85","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0x699be501fd6e4e79415ce9db729a39dd3c04d279","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0x3a2e4f9e843de3a2d5e1ca3d30efba58a3545150","0xa5a5e02d372ee68b3a2bd888da90c61b67bbb5d1","0x983c1c54287a076d07e285830c0d5fc04f140058","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x97f46368175b980b7124e38f0af4daac008a058f","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xd5240b3e10cfa566cf3be3084e4c029ec62e5972","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0xf854eb944eee9dd131fcaa2e55be053dbf3e7b93","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xa15704171245d148206a8f1240eb51cf3dadc368","0x69479e349af2cc60b33e11373831e4209f74c5e4","0xae8ab67bd43326e424b649050d33b704288af1b5","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x62fa1525fa43621c0a72f39bded0759063f297a1","0x03ea3830138e1a986a8013e180a6de5a8beee6cd","0x44e58743f9855c9ba574b768e8efa0338a009e03","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0x5ddb8e92911fe1685521106fd7bf15479059f412","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xbcf507bf620c3bd65874feaa4400cd924e432a14","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0x25280a733b3ccc8ba20413e8d72a5889b0bacdcb","0x309b936952bf22d19655ae90b1164c483bef4774","0x257d1f543d2c934b85e864403a04a088f43f05e2","0xf26e7b866128d7f88a9bc44c0ca0a2fe446d41bb","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xc72c396e48799ed5c52025fee5485ae7aa1429f5","0x07f15d5f0b2539b52a1a0187b76f8c8e8e0577aa","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0xf4e6232d2f86bd3399d956b3892d6b1893e1e06e","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0x8ed78db365fa885cb7a5bd29093dfdc54f8c944f","0xbb1f823554d8f62804686edda026022db7454195","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0x5edc6a966b477a3b1b0b874771206cd24cd3b832","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0x93fe43db40c997ae784143f060032db16293d93f","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x28656ee0640c0f54a9cb892ddecce5f021c993f8","0x1bb01159ab168acd0cc055ead980729a2adae919","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xcf0758f9cc8c6ce84609e94bd5e1f856fd595657","0x07737aba415bd610700663b633c4babb827f38aa","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0xee318930f864178119bd8f3d36cbdc43b986c06d","0x461fe77f0b6a893ca5b271bd8b8fff6b12c498b6","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xa7473f10be830996c064185b9e37a49cd4cc5712","0xb762fc6fb322bc7eff978a4cf1257a28b84f2785","0x220ac4181502bec00c952007265a36c1f0af25cf","0xee096417d22cd50c472edbe9438f851cb50199f7","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0x5c263db138be88737ad66c01428ff847861ad8f1","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x97b0315a1e35ff45070c1394ed06f6207c1b46f5","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0xcde467f92434094b8c16c953da550b750b5cf6c5","0xff8c87595495750f407bb94dd35ef7db034fdb59","0x6e8c3d389b30c522669548dd5c60aa26436442ac","0xc213ae792bc642cb8526aad91c7586e086b84eb5","0x17650afea949f40f9abe05470e17d2d003377b37","0x904e60863ed6e4fc2fb4e26d9f3fe4079381d689","0x0577f8438448a38db0e5b0abf49d1b8f3fd65c32","0x0b3f35d92fcf68e560e43dfce5b5309b8f9291c4","0x34182508cb615a917f2ae185147b8125fbf54220","0x8a65e11fe169386718e1979043fc3a5126c8949a","0x8a79dc25fbaf8643c22d961448fd76833b5e81a4","0xe08e95f51e5f8eeaeb1ee6065ae2c16884943e12","0x3d1dedd0c9e64c82192f5eb4a17d03ac31738d88","0xb4a280b84381c864b5c60bfbfd426fc53852be96","0xacbf3bb1efd82640c43f93df145aa64f2b86f667","0x26d1b321729b6c021823e130d005f0f3bc9174ef","0xda4f874ece4f3910a4fdccde7fb649bea50c6291","0x2923f5ed47c69549f0ecae49b06085c7c5430db1","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0xfe9b4781893a22eb10913cabf3d578ebc24be1cd","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x28c43574e0dfae322c49e266e516c41630686775","0x4b5a2d87aab018c9418ea2696014267617aaafaf","0x05e9e12a6b2c1d8156f42dd88a64646da65393b9","0xa7774f5ecdbab450d6a04be8f430448bf28a9d26","0xf2cd0f1cdf3d8d5b63abaf78a803a7a036a7d824","0x7e39ec7d38258256135bd0e01486935290eac8f7","0x7fd7cb0df6e1919ff29dd30b25b6afa38973342f","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x813de8be827a526c271e5226af912441d3b63700","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x4f4e2ca98489235a5442f6b7ab80731bd64f7d27","0xd43c861e1747f9b262cbb91bb089205b3af80458","0x3b615132cc2d4d13be374b8b6cec9919323545fc","0xeb189824041d66ed1fc10b3991242c245f88c74c","0xb841ddb964e7c9309941732d6c3270f60986893e","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0xcc81f3fbaf04a41c226a12b25877f58703b8c364","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x670dfbf4b16e7f4146e3e565a496b039e6c1b5aa","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x0e10816ac60b5ed3776864b259b31abd22b66955","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x1c6300a7bd150926c237ef482805e93574bb276d","0x85029f5ea54742c64632a27f47526825240fe285","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0x87cf69467e239f29ff880cf7f0d1b3a07b1bbc08","0x0a5eee35105fdb4090347b27fcb27960d5c9120f","0xed45fefaa2fe28763e7e0629678ed6c2debb5701","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0x1635ce4325eb96817610255fed3b39273deea95e","0x0467e993ae5216e318cf7cf27dd17d44d7724666","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x851e3805be7ec2991d56e27ebd749196d33489b7","0xb0d3173fffea8996e6f3df486f9eb021073dc86b","0x1f1cfe5e8afd4106632548a9e67401ac28572e05","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0x1cf78459cc0960f5b611b5e95ebc4cb7b2c24846","0x5dcd2a775d7d71fc4e7d70c49d2fca078a2d870e","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x2feb527119346af9c42598ebc414f781a9777ccb","0xcb9b2fec7a719c71e0218a51e132a8e7a9cfa268","0x7826bd73a99fd28265710d328a4b90fa8e7f2639","0x1b8d726273c6130bb28a812b89d4409380695526","0x74b44f2dec659675a3c42bde0cb6d010680c6f1c","0x4f95ecd2d9517fca6b648470af5bc85314ddf3d0","0x1d907f4ef520feae1dfd1c874f2f2e9e236ec049","0x268c50840cb610eaf8670ec78e32e76811a5b6cf","0x5d315beb4c49178231103248c0198ba70fbdc76f","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x83973e694d35461a33eb056a36d02e4e6e56cee1","0x59bc91d631d4ebcd2dd010a2da494677d8b7e084","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x8316d8837b456ea3b60536b14c62357652b7e416","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0xaad1557ef67d88221bd1e029d0aae501390cc7ac","0xecc2eff7e481e885832e529c1811263039d9aea0","0x0d2c5018723475800677676dbe58725f5ec788a5","0x980ece433b54caa56251d050cb90e706871cec8d","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x21c4ddadda9c960788a4d8b8c5e7febbd4850ec0","0x59cf09d68940636efc588cf86618d3efa2414c39","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0x102110a6f8196b0b21525a2f4392ced7f3cb4e4a","0x3983f90047a33db4369259fae42f13429fe46bb8","0xe05e5d7570a178347d184eee8f1d3b3c37ebb52f","0x96b66b565748afcee772cfa12b728aeda0a67d40","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x6b7fa9818889e7e8cc7e96ce5673e08848eecc55","0xeac31644cda60c834e8552040662e1ddfc5ee37d","0x0ab6f34c4c1dc5b8aa0f0dfce733439fd6009b68","0x050cfb381da9235d71512b3c70fea9b47619ce9b","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x1f49d6303b9be888c2210125640c749bf437ae0d","0x8c4ca0570f0251b72ab74dc24be6c1fbe8333fea","0x5cbfce8a39cbe662222bb0e5a6c3989bbe11eeb7","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0xf7da27d41c96fc150a45d4feed630f55464faea0","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xfc78aee970a4b57406e384bf3e148440d6b23728","0xdbeef580eb836f68d1e08769372799f84766d9c5","0xb6c2e5675efa86c84561d22f6f5bbfdb4552a2df","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0xb533c39bdc314a5469b3a668ec8110985ad29ea2","0xf9c2f322398e58dad8532716d751a7447ab7e299","0xfc749385de796532a31a2c8976bb4d537647d825","0xf1a98729ff297218f7e57621fe6e9cca00bbb9a9","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x8480f3f5cb5bcd0aff9cab138fc1fd8d4865b599","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0xb49b4f3d3355aeb84992e81986a52f730298bbc4","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0xe5a9a8804c6a8ceff89bc20c7c4c1e719a0a442f","0x8a316a029f7766536de36e226cb58d9afb39d1fd","0x74f3acb558017f2987e17d27b1cd101100e33095","0x7d2ac389fd6e7651f2586a6b8c97bd20896b0d62","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0xff61a30a954367758552d5fd9ce7a28369898496","0x76453095ab298978b4e88958e18d53385e2e3dfd","0x6547d9afcba5e32f8bff0ffb7b07c2377a570995","0x335977b2165dabe24fa0acc284adee6bc2760e8f","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x2863a270ecf9f28a16b9307e2e66661570a3f2c2","0x7786126e5e953ddab491bcef27482eb3365a0708","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x3fa09c1f0a47bf69cfc351b536160d7609d3d77e","0x61e833e1e7476f047cab466603f7671438f07397","0x77b41acbc72d4c64d88fce50428100a13a84c186","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x321efe1ec6502ccde67216d87bde707cd3deca03","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x44a51f42650e8660c0dc6f1cd5362f90c1761322","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x66345a99a53b43026e35e53794f08ac1ec9a4739","0xc0ae894812966887c0ce367acc41fdf84c5f3314","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0xd153bb8c1245545728551ebf87a6a7fe6e5a5793","0x3793deb92101be0f2b9dace8e612511ab4b1c554","0x117c87915a5208d1315dfd85f0f90df7eeadde60","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0xac3d6efc9e9b8c90b1b1d2ff35b1d4a84c9ce80c","0x827dbbe748a492b242a9a189ac578ef8876ee635","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x2f381172e2224f922bcc4886c98c147be34fd59d","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xf0ee65d910037e35225fda039521a8b73b8e073a","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0x58ef3367de9fa4430a78675ba91a1a162e322d79","0x1e741f9bb96b9a990051936d841fd136d605e531","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x3287942fb70d1b963d8688717ea74620d4898593","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x3c9f50c9d4be35c734290b95f563d4dd621e240c","0xc0fec0cb111af730ab71ae17adc89174fa25f7dd","0x4d2725ffae597d54be05a1cee764d57c229438d4","0x510b994672200a21316e4665b15d4b6f1a16770e","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x9cd81c8f705fbbd6fd8b7fba9a4e6e4e5f2f97d8","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0xfbae75cfd09650ec3adbd31f74f147c47f2316eb","0xa8300b92a403f9abe944d04512d07130770149fe","0xef103307ba56e3f079631dc5dceb31f4e4eabdb5","0x2c4113ffea6514ff91a7697b758128c80f59a2e3","0xff5ad75de6bddf56dba43d8b25b76c2dfd313ab1","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x72d0779298e3297c63063e4d351252209129c7b1","0x2fd71aa5e1906741b22ed561d04cb1a2a5aca72a","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0xf03ce6f21164ba3c7cd5c3f4dca214a9f250b096","0xb3a4d65c780eb6139bc0ddcca59462a4f8f931bf","0x9b9e1b73d7346286520a3ddb36dd6e530db1537e","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0x5d9fa323d70441c70d8b9be597b629016c3af898","0xb1f3dfa1d37487d7f19521ab40c61f4de3a28d25","0x681caa36d91aeb81f0c65b3de0b7bddfbccafdc8","0x40161ad3ee3c9b4b5753d5a72035ca3ca74f2380","0xac56fc694e06e536a384d273bfc318650cb135f6","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x8670923ef71d0451b939dcdd0309c6142c07d800","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xd1cc1e35c6d0387351cf84a71a2790bc112dadeb","0x12a0507b112fa35c8e9f011a83b919030a3fcbcc","0x9e5a44f6984d9b90a04deab5d24630b9b502cc56","0x7c003de27a0b5b15af447cdd6493c98885042c68","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xf02ba499e2eb34e66da6cb6b1ca930945e867610","0xed92fde5aba69b9596ce11f77639e0d6a21160ea","0x4d275214be7487ba210158c29d27c216829489bf","0x7c06b789931e8df25cbc9f60fa916604f6af1464","0xd8c0d5523824994d43743f94dab72f16b306b248","0x5599746948950205b229ba683824652cfb504e5d","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0x5b67991a2bd9849ca8968633f912ecd8b628772b","0x59e965157c8da51b48c52cac5504b7b981995322","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0xe99ef353a00f0a0d07c418a439b00ca7e18a2613","0x9e577926f021a5a272c9ccd3c8b22b5a9503ce10","0xf12008f7a04b81dcfc58924157c95def01977b05","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0x1f94a12e745ce696c9338a1db393e0125f218740","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0xe74a0f121b171834961424f9216a91555456a983","0x483028f6531db87645c67cec4bd97777ea90b4f3","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0xd445873c98f5f0b8d6d40887f50ae869da5fbee3","0xb05b2e41fede4ea329cdf5024cf6127ddfaecaa2","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0x400139b09097fc4c43634018359e286f85bcd469","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0xfee740fb924b7e680581593db068ac0dc9ce9250","0x3fcaaacc54f5240aea1d8767b4238b9a0eb11952","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0xe85054783ac72b93a082bf579b48615993c1559b","0x510388680d11d4473b4fca975dbc8b1922912e72","0x509302c3d574ffaedc51b6784d0b5b482c591e45","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x7643df115bcd333a0b4c651d114f25a617c735a4","0xda0caa74de7a58734b65d7327c4e169d1e5049ba","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x7bb2c71db0dfbdb63dd70ea6dcba442be7aa3c87","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0x144fe10482fc1384cde291b6e01ca868b9355eca","0x29372570acecdcbfbbbe95837176aa7765563a58","0xf568af57b088e565624409cae2147db23da72795","0x2bfdea06e45097a135e1e22e5dbe5eff9b7b06db","0xfb8adb4ac722ed019a8ea51a05fdae0692bdf02a","0x952cc8ecbe3846f3a6dd819e88983d521e805f64","0x1d9e9965b8509628628a225c35ed140819aad7d0","0x3200f484ccb390b38814c142b6a30e4885100e28","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0xa82f14e8241cd61f823579ff89c805bbca270feb","0x7f78566ab762ea753baa23087f9b064a5d6a1219","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0x776b3fab4f3063eaf12204407cecde719be09267","0x945f4f35eb97a7baaac343e07de61e9697adddaa","0x6a270ced6a297b670b4183e9bb6268a363036ac0","0x53b25faf9492285831d7a9b3cef7e4dd78060b1e","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x22c5a5979d1d3dabaccb98968367f50cba77047f","0xb073ad67d8b3aa66a849736510f50953c8abb53f","0x3cf2a68724ea878f8a216716c5741808070a6d31","0xebcd8aec57cfc69065578e1f4ace589c6d60be84","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0xe7c3395111d739908d1d6671a1acc69f6b6538fb","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0x558188b83af5168b62ca8f928d07dd51433b3425","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0xfc2b322799db5b892805b250347083c749b61d9e","0x53b4331987798f2ec6673f479d5311735067787d","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xd2b189531c1260009d8c014ca9d1fb407f5bc529","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0x386f745d246b2080c457811c99bd667ec1b08061","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0x87fc6665593d82cf5b5da73e6d4165c06513b1f1","0xb27f45683c6511259790bfdb5af82a96c438cad0","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0x6760c950ecc85be1955ffc47cf3a3f25e277b6d6","0x4c5d8e215541e58020c1d044c0c27f2fc9289aaf","0xf4a0eb7f6c2a2e2bc582e66824553cccd8990ca3","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0xff4e6d4c310ae881f5f622247aac56efe49927d2","0xa1875c746636634e8f55a8edeb0feddaed2488d0","0x1e050ca02787ab13d2006c9f06801789546a9eda","0xe4d365f2314d5dd16dd597ff45b3f3fa97db448f","0x88f279aaccb7294d9580babee56042c1c79290cf","0x6e5c61ea802d020ef81b9a7a406ec9cb1921dcb3","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0x4efce69a3460620556c4ea933192764d984b6ab5","0xf8f3e3f52a74c9b6d453c70bc05e5d70a58057ff","0x17df6eddcffe738d1b80b2abcf159c5adba82665","0xf0f192516a1ecd91f87dcda6bbe538ba8a15f9b8","0xde525cb6d2dc9a95afce32af16eb199ea37c580a","0x1b3a8906da19b7d485912d82d93b71da4c057946","0x7fc5502c94b36de68dde3980415679c72ceb113a","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x9da0eec1b078c13d838c2fb530a978f6c438d872","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0x2464c45cb3040821a49773717ae4d375dee3915b","0x0c6d80187b3f37a6cbd234f37a95761fbff7f4d3","0x237deb0192880732869926af2ec85a6a64c88e8f","0xd1db9ab9dbde811020f2a001df92e547391ba97a","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x087719013c6645ebfac905ecbc91603944595c58","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0xfe077a5576c085a0e745632518244087b91cd155","0x26672765c04c1dc3cc3290a79d8550a7993d785c","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0xe8db468aa3f8d997c96ed7674784dbd39067e839","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0xce2fdbf148358836c9738bbe342db3a9f7ac6301","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x591860a562d48a7c9006105612b573f8b1ef6817","0x0f302048351857d9e1134d1a2ed59ec8d7d935cf","0x9ba1b661586b0b06fdcb6c06ca302c785746d4ef","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x7dafc90f5b1533875705872b4b77430aa491ec17","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0xe4b9bf68adb9edccd599adbee90c40c6670e60ae","0x0dcaa84602bdc605eaf5667f784266d20a7f91f2","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0xedc2d72b697d62913e1709e929981055a612de6e","0xd9cc3d7a00c332b965d94358e66f93dc11b42e43","0x45bdec2e54d476fd6dfd5ab9954856aee921204e","0x5938df5f179015f74929f9d91ef0ab66d9fa490b","0x8d2dcc145e6b43e862ac6afa9c18afef7b29b083","0xf9b9eebeef9a734bc469a57468d41a4651d5e158","0x3aabd3a309c04c59c93026f7d3d022a25c403acf","0x165e02cfac87b846cec7cbf5e80cd19748fb0227","0xa333e486608821200004b98212355a7df32491dc","0x0a005b68c19f43964bd48d3cd7b90b839acf2acd","0x00c72f6056b4ddd3e684e22daef0dff18a367d0f","0x8640a8646dd88e71c130ea069ce7d7c5009539ce","0x0fdcb9de99b2cf13c8a3b7cbbff3347bbbbd21d9","0x21b0ccc901b86ea1277b2865c73aee9d867780d7","0x31c967e276822416df782c2244961734da614140","0xdb48dce5b9a0e03a3382d27228844f90701d5df8","0xe58d60e60b93f26c565e0881a4382087d071a7c8","0x67c1ac6002c52c967b42912788b5602b4033abb3","0x73730e672c5b6696e85f6496d0aae51f7a631d71","0xd0ad343f78d3864f4ffca528ace86551754adec7","0x6e8f37ee5915749afc8b291173837fd132099837","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0x23e6df2693de753252f034be95116faa7270b4c4","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0xb7f78106935607d2003ac997894c8271173ebfeb","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x04db3d28f9120c63992db875fc2dcea2a19c04d7","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0x958d983fe50176d844bcecf137edb95fd1afc540","0x6a8bde342b734db028ddcd6527787dd4261240c8","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x3ae494842a0117315c532370e9485f8930279ea1","0xe9707be0764388e38945e6322dee740557b3ff3d","0x5e9def163ece7711d23d4e7319013b10596dc14e","0xc913b10980b3d079cd9b0aa39c73714c76470bea","0x6b26ad1efbac209e6d94624a5140555eb68537f2","0x20bcf3dcba31672d875ef1934b0f24b1b616f0de","0x045e6833fa2b7bbd1a6cfc3cc2630a6e20ff9e87","0xaa2b32c3e9082fabb0f2780c31c1410420ca909b","0x031a5543b91c5dcb978f9877d5643be5d8f30c8e","0x12cdd62fea8c62657d0dc4662ecdf33150513a73","0x600c34bcf247d7efac731d4b0163d6307aff9dfc","0xd1570cf2121cd015caf08fdfb7f397a7dd980db4","0x8e7844f17f5a16171234272f04e552c79955bc84","0x3ab65c42d859e6b268f71693a5a6a5d47b54c0f9","0xfe2202c2ee6630450321ad7c383c6e10c593bb70","0xb212e9606c0986720ec07e3e66de206b752653d9","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0xabaf7ae21fab058edfd665c118adea740390159b","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0xd7aa74781bebbd0582f255c91fcc43ab3a391037","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0x4959aee7ee78186100f725573703a6a5701f645a","0x72efd08a0c7515b2deb67ac70664a6f048a2520d","0xce2fbe6cfcc074e8097795e0592df436f596c7b2","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x59cc61f7fe1788a0db102143444ffed4f01cb10a","0x207b173bc4c6b990bcc04cef9ac6d26f36e1be11","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xcae1055f11b88237665d37effa8a294c8224533d","0x9c94cc6264be038f3a36d98dfac0a7d8d6d63b8e","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0x0e82df237fcdffe4209d0b7d53a4a0936311c23c","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x77330ab6cc7db76038db9aa9e00eac7aca4913ad","0xacac090ed87c72c804566f1db8dc4ddfad7a8be6","0xccc941052ee8e981303bcff9263bf5abe0b4207b","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x246fa3c7d3f319499a8234003f79515f2462eabb","0x3a9957fca5cec0ab847c32a7867647db67f9867d","0xd9308ec1df08be7d5721124fc0359deb7552cf72","0xcf6dd07ef60783f8b1d19bdbcd035f877c71ca9c","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0xe38b04f83bb9c9648ceb86fd7d801c8d0768e3bc","0x1ff130ccd9373c30e337125896747e299e5eeab2","0x6cb062197e25c84e9fec7607bc2769d1f2b51415","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0x75040bf74846972705a5aba861cb196a5e0a5eb1","0xe9f94f522096182808ffc8b13c50445e3922fe04","0x628ff0af9dc13c8c32949f389aed3113f83e2094","0x916d43375b97ed1921f84319e3f42300c523e7c8","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x0232da6476a69f9b70d311b1eb82f078e557d5c7","0xc332aa1d72f0847f57eb179c7a9f6650d2d6d5b6","0x86bddfeb23945f869099d295e84f9036b4e83d18","0xf58886c5a06873357e946e75a4a7e3051a1f061a","0xe1b03b5a2cfb816f3ed324ddf3c94589326f5c17","0xafda90db26992ae422d31cd228d7e7f6ad1fa27a","0x3a5187b3c22b9ced40146c1ec33ebf1b30cab18e","0xe7b87150991634d6b8fdb2dea037436764680984","0xc2cd9bddcc63a0d7390033d8bfcdad948d6b9bae","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0xfebba470b68542ee297b18affd0959ffa246b359","0x8c064c77364e617ff562b491c10485eb6a4ebc74","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x773e6a11a6450fd1007d35a36eb2333decd1917b","0x9ab348843028ff3a50d739a119761cfd8b52fd2b","0xf33720272b829c85109a31b3ac479ac443756a9b","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0x6735fac051316385e63342c7c44c7b55a5187860","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0x8418626867183397355afb3eba16442c1ecc23c9","0xea6117e46dc4bace7210a03b51804b46401debbd","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0x26cd3876eb91cace7eadd2b437a65d249c635128","0x368fc84891313572e9b4d0d9332cc34b4a4e9eb0","0x752e5fe4ca41aa32b82a0cb842e3dec13e23f709","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x57066bca9a8be58929067c1a6549bb8f2efaa30c","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x0dd643c5d43e06bc5b5691ab157a03da0fde0d68","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x64b876db97b3338334f8cbe1f8b662c9c4b03fd8","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xcdde3935d2e655264ccdbcf544e380c53b23d3c8","0xa845b97dfe63912a2b1b915f111dd630a630c787","0x06dd5751f9b6e0e6aacf1f72aa439c2c9f5fa18d","0x2d748fd2f4c033b2541d3e1a312d5752fd0b6702","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0xadd62bc61b3f16ca964a0670c6cd143dca2d0f73","0x7f5d9d15a2f059e18d687f9ffba8f1bc045268c4","0x469ed74eda294760b26b32ec6e306ee196cc7937","0xbd5ef330591072ffa0358eb88204ab33310af41b","0x5e95128f86908f9308dc79c7f5a27ed4e77ab137","0x7ba1a543ae17941c706702c087e58ebb07967721","0x5b72294bc574466665359f379437fb17a7560923","0xa8ff529e16c2dbb0f8f0fe983a3553313b09366b","0xd5abfcaae5b421dbc3660c73a5724795c4917b79","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x16839506658f0c42ca7ceea9317d3546dc75df0d","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0x5a73dcd82bfd45b84aa9c70477b049874ee4bc3c","0x7ef447ef322a441666162c996cf98449dfce920d","0xbe010cc1baadaead144d39b3500076451f8fd3e0","0x69cfecc77d5c218093a7d2c85d4705040d75924a","0x877e7fdaa8d76d20c41762d063c3b7947dac76bd","0x4b3b72e6cb646711a5744e8383a619114ec44f90","0x4da48333589d54956f4b8c497e274867630a8bad","0x6e22158961608f3c3ba0d9e0ae642f1b925f14e9","0x075ca46d58d4447ce855f52a1edf4857d02a02fc","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x813836809203abb4b83eeb1aa7406daf266ce7bd","0x43481e045b140b8bababf151568f73a223060b02","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0x75f4ce1b4182a9b8627c547221dbcea68804e1fd","0x659ebb7a0813ad2107592b3ec67be500e2792992","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xad3123239bf2ed5e507aebf84a47b3760169ea23","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0xd4e56eebb6001cd7b56eaedec097d988efcba73b","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0xbbfdf1f358ff094b7f3cf2b484748c3f9e5dd037","0x6d2ab87997ba4d1447396b198f9dbd0e9969d3e1","0xe6cbf7333303fc382c8cace99f138fda788d3154","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0x3a25f0d43fd0f88faf94a4904af7d9faaec1d1c4","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0x78133bc446f67848255781e79743902f7c762bcc","0x83b576a54217017325b70c9e43363c69fbfcfa2e","0xca0d093e1a822f6cd8273da3f2456672945628d2","0x19bf165660e7f354f2702700d5f92972abab519c","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0xb7d50752a2d3faa7bbdedd7f9235045c4340e64d","0xe46c60fed55f8bc95c70672b0f69d3f4b2f9a34f","0x2647050446e6437558c6df9313c412ee97ba7d19","0xceb63b823a22310af59de9960c3a78fea77e3b82","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0xce86d63a859d5c2f9ff5bd5145330bd30ddd8f10","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0xdc8915723bc7115f28f85e3777bbe7340b45215b","0xb6dbf54b7313be24d3fa87dbadc6b9338d4df621","0x28112bb5731d22b80aeaf432094a169a5fe875c7","0x1b33fd01bf378e92f42cd19f048714566aaaadbc","0x32ce34a267e617410f25c4879af780b602a599ba","0x65053579065da1fa4d60b800ca47e633874ad780","0x892a7c4ab693d12d41af3ade27884e2b94745681","0x416552278815a25c96acd6d4dccd2a417653d85f","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x65f4923c646c62d5803940e94ac03da955c3c814","0x6f428ffc388787935b9c5ddb9f6e26bbdac8fae5","0x5e5547f8c425bb60870820907172c2a5b7d90283","0x68b6388f57cf22d19f84e7e9bb85907005ee80da","0x6c1a321bdc2ea45b64823a77524932d4b361a48a","0xf80e38a963b2d8cc939bfa7f2117874f6332c14a","0x77f62b2dd47520f0e29663c8f208a40682202936","0x82ad9768e5129784938e1d6ba1b1ea94c0d56003","0x7df31f739b518a4821c2c5fee276407202b088f4","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0xd71696bd4d276d9b8b2a764bc1c22e94548032a2","0x77b3a67ccedcfebe4f6099a319bdef2dda99b69d","0x21e1882df2fa4744e0cd0e2ae8819757692dbf4e","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0x46b23eef1ae28966da007f3ac521d7aa257f6ee0","0x26ae5492a42863edc7c6b9110de70bf3702c92c6","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x91342c51ead36ab67a274dfde3a2252b233c6668","0x697652ad036a251bee98821e0dba68e196029f0f","0xe76e1015997c1913303341f9b19a577114147563","0x07043ac357e1241aaa7b112f55d47b17fc3bf396","0x8a962400c37e36d42aa0270b05ff1f6ebb8cbe34","0x1351e22ec082a31b573eb7e1deeb1e9308628f57","0x822df343216dd41e8bcd389eae342117462407a7","0x756b49da56257a73b487ba56d0b580410a8719a5","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xef6612cb458342eb7c374619860a9bae998fd350","0x6248d23207c36ee03788060a136d781baec52a0d","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0x4aad9cdb896db9f9cab630a4f002701cf8052c3f","0xd91d0b645ca1193645cdb3ddf1b2a8961bc90699","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0xa2d5626feb0478243c253a4419e661a679a0de81","0x0e37e431057711c9c1aeea56ee5f6f169281657b","0x1d83969532fac5ffef2ed293e423f634ddac94c4","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x51f614ee00960ec37b743236499af47d7caec396","0xd9daedb465ec48a8431cecb081299e4544efeea5","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xa351103f950bcd9a3dc8aaf5961fb4e94c542a5e","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x4734cbccc556efc2e07d9e8fa8de13eaa8716758","0x4d20b6750e3e4dc42f4ce1620ef9e287111d6c58","0xbe74d6a390c8aa50880abe227fc30b42261a05d3","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x472ee521f8f9ac4f05b228d6c3c5e12d4cf27705","0x32f8cbe48fa82cf3243954229190b85e483ac798","0x26014c73e070a30e5468225f19d1d799397a2df6","0xa23a7810386ba13132ac4eb2097395e2c1fbaf8b","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x8f6a052fe9229a4cf3a4b327f4c05675d2e9cd5d","0x7e71cc0c8f636f33ef4d7522bf4fc71e0bced0f6","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0x3dfadcf87494364735076cd50be4a62864e65ded","0x6656da8e7339ba707ec346d660276e7799843eaa","0x9467135a90023c731803289676302fa18e75f5fe","0xc2b6493c1b6a99840ea6fddfae0846ac7c1a5e5d","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0xfcc46b36098f6d2490097b0c6f0ac5c97b212d5e","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0xa7c858615b615cae98966cd06433c5e8734fb875","0x993e1df7606613b14366dfd90dd0478d21772e80","0x3f0e58eb1e93a00902b8a22b23731d0ea0e049f4","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x78beded191ed18e8b613e7a43f60b2dc2fc1e366","0xa187712d483127ed9c0f223119dcc49213123143","0xe5f0da122c1b40372ffa80245f731db57366756a","0x99917ad32169a3ded7ec4d8b21a3a845818fbee1","0x5ed8f096aea95650391a995585f86310434f0696","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0xa00884b65c3683c258d3d84cc36f9f62886521c2","0xdb2656d7fb4574bc1aa98d0bd8865608852d1b95","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0x88162334cea7faba386b7ffaf84325c616e9b3a8","0xd3342f41b1a03de920a837952ef25781a3edd25b","0x3d53958e6e378dfae3a84aef0bb2ea820ca790a3","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x8eaed448b6e986ec8c57768b35694873e1951a45","0x24cd0db23a635f115300091449ffce559dda1b76","0x6428f74aa7fc2770b2278d457059025d0f5704ee","0x209329b630ee09a04b37b168970eb66f422a2025","0x945f8c340c29e3c9e0342787581027a8d3faf413","0xb67ec30fc613ebce187be984b8cc92e8bd3c8e98","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x6921e0e32a3156255c2dc66740308cef29854a4b","0xc30a1a531b1fea1c9ebf5dbe7f474f809c736a3a","0x99fc795bd843bbb2b6cb848c40ba7d9954fade89","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x0aca219a4b144c45eba91800196f5a7aeef377b9","0x7e626e48f5d8079ede2b09c110d5d2c551c23f86","0x3816fd9ec02c444a36dfd5ab3dc18bbb16bc7357","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0xa8a0e087edc88b37074ae3cfcd39ca18c2ae8f6a","0x610155a0b786d9b432528a48005962fbcd7e9b90","0x2b40a1f3caabc1eb4b716e09c1b61fbc26649e78","0xd1e46f632a5237c939d47a4ea8b598814879325a","0x815493f7bf6623844435a4eea34860c810905588","0xd1a0834c59478e6c1566359bc56d23b08d40e41b","0x555ca650f47df86c16912258a710aca4dbf50c44","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x12cda495416b7ac0d7a089b03f9654470e48c654","0xa8b4c1c78e30b9a169de733a6e4e04b6ecf902eb","0x1bcca5b62a017a81b51882b0f2d30f15e4671179","0x908d3df971e8385f96d39ef42bab626c26a3227e","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x49afcac51e4deb957708aa8ba51d8d51845aa99f","0x885eb28b9b629f0829cd107f33c09821c200072c","0xfd408ff84333e1201a057e4a5c2775303fe489eb","0x90494971e8ee7d751f512892fb7b6e28d64032bf","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x7f60c6b3cf860b2a32567c755c5d06d380f6d557","0xd728e5857e8f39bc460bc41adf6e7ce5921b13ee","0xede982ed15790e561c605cef2c266c023c43d2d3","0x745c4a0a8031b03e870116bc9080d96de2ad9e37","0x6348016845dec61912814209bacdb67922250677","0xd85c63984630836d1403f4e77682bba128bcdd25","0x43df2b78d32d22ba8ce77e13848e8b59ec3b7f05","0xb81749c72db5b5209098f2bd45a7a0293925da13","0xc1d06b5ac137b820938314799d65aa688fae8794","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0x240153fe685a881cb0d03323dcef6f12a4378806","0xd9d9d13eeeb2242a105329630d16fbf6567be719","0xf05fc8b1a6e5f811834f8c85ee856aaef65d5862","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x31adbfaf24daf11c5602eb218e89f02f34ee8f18","0xa2351b384384e0d632781adf423d7a14458d8375","0xd3a675df46208cebed56e236f86e650829e22f9d","0x37edfb2576810db078e9a838ac405e787578996e","0xc0561558b7d18f971a8ab25753eea597215c893b","0x3b7619c7aab7f0392d355f41677526680443cd9d","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0xc969126cab6501aa0da1ac472503a4dffd262b36","0xd2d4b326fc813c966264b4a5c354247db774753b","0x24395923f889ea160914733743b2a4eaddd93dad","0x253fbf8468015413bc7bf460f7f8faa96171e5c3","0xe27e8c08e5539b66aa4d2bcf4c9d324d93738f7a","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0xfa74c2d1fd1f1512ae8abd5d9ed693d469cce9b2","0xf339bf29a7648f2059c49a6fb72e42f522b4af5b","0xc8808d553c74aa87ee74acd611491e59f5a518a2","0xb931700857eb136231f57d6f401855e8e69e84a7","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0xfa9e13e7dc701e61ec3c85a9565925a4737c0a42","0x6589b836d7bb004bad328fd4dd7e04c999ef1e2e","0xd0d5aef2dfc3f1648a96c0fc53b3ab17a15d52d5","0xf02d03275124f262963b94e1078ba61be52c2f48","0x4b82f1fb5e1ed87d24a66558813776b5a7c451d1","0x59e209f7276284fdfa847025021a3cbb6caa4dc2","0x97b9864115ed3d3dc428799c525bbe9215c34464","0x845ec8bd463364e72830421c5b02fd5b94619bf1","0x6125d87503c33f896d68f522d9d854ddcf3b547f","0x095ce1a6a1a916c0f13271bc40e6b0a6bb9186f7","0xab8e0f234f7944dabbb59a970de9db4d6b8c4e6e","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0xd9e80bf3bd597921b1fea20737bffbf4e49966c6","0xcb443a5f156b94dbc83ffbb25cba8099bf183cab","0xcd328a00e03b90f747b3bc40740074eef3a8051a","0x45b447b7443ea23dc30acdd99b1ab8f5daa209da","0x3a58b5743bc8dd0952ef2d033b0a621f2b00814b","0x59409e39c5fbb2629e08fd4c1c08907c7b935c87","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0x1069a62957648c177276c13f051391c10e3b7464","0xc37388cb00a131e0e23e056571c23d0566ec93b2","0x8cc688d7485a86c9f798c785e795fa11f3126420","0x36a9287d76e6e90c06424d9fcf130f20a9c3ddb6","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x09b0a591c4f1337d79cb2a51423f8f07bb2aca11","0xb6bc2b118bcdb6ff06cb164fbb428e03a6efd255","0xc4d1680fbcaf38b497f396f4cd4330cc002d6a88","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0xb7ccd311a970388ceeaa2f55c427889242b297d6","0xec49ebeed63af5049d729d9840f5b49854a47156","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x6ee26afdde94b7985df756d7f2d70418bc9f0720","0xfe52607e1482fe634fd82ca82d74f12990d3dcbd","0xde639c2f28378ab59702354608d51b11a5019c3f","0x35108d1a99c6338feb81eeeba146c91d7e1f387b","0xbd01b2e5a682a63757444e7558671c2cdb4e4d22","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0xffda445efd3f5d458703e68af6113cd4634a77da","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0xc54e59d98f2eb974d6eda8f015ad7cdd3126b9ce","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0x4108d6ffafc215c743ad83f144f3ae0d18e7bbce","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x1518c115215f7dfddc3efe4b0379f329dfb54c88","0x7e0e62ce5e660534931c6bf0055c7d97e61e1ed6","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x013644c5e5d5834da7ef8f56365c979c7bda671c","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0x2d814ed77caf027209efa93f0f4a1010ff985b75","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0x907e812ecd235cb6fb2665d048cde02070962333","0x129fded8e1e03b0b87b8da98037fb2dff30e3b35","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x174fe2068ac1b8b46a93f7a68efb554705f6348b","0xf784b34488027604630e9678d1f4ef4a99a7f0ee","0x6baef8ad4634a93a6c002abc06d57020701d717c","0x63ce35c783610966b29afba7280b1182f59d3ed0","0xf89a2dce493f26d27490f80c511cea9ced991408","0x89e90cb7fc2f27c1cd026a114dbd5a3dc0a68fcc","0x9fcf9b2a26eecf7996594f6250eebb5ef1d2e12e","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x2ff2e07f09a99dcd761ea0eddfd1beea3bef942d","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x35b542f9321de0203f86b627e13810d9ddcd8bf1","0x9c5d846415347062a55616758a91b1182431e365","0x964bc2bd62e6635dd68be2918fa70517e85fe0a1","0x14150dfebc22459e3bb67cfaee13aeaf6183b9b6","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0x7b821b5031b24fca25f55c3da578e7b9229791e2","0x58bdc3e14a257989240e4e52a3d62bdeea2ee144","0x7bc332f85a246b02762971e59a487631eadd84cd","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xd82e0ee8fcda9dc125428cfcdc9aed3fc08e428a","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0x39d4ef6897afd69d9baf9405a7256f6943495377","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0xd8200467b363434df309e65ff3a4ea0e4d27a6d4","0xfbdc3f73a2443bb416ed326b006041b7bae6f615","0x9bd1ebe10c018269b9b1152af1dee2ab9711ec98","0x0f985e864fb5791d812edbe6009cd1f7a5e398a7","0x40a7c0ddb32d8ec01f6239e0f511bf9587805fe9","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9884705f4e825a2174c115280c4d147379d5c33d","0x9c4b88fbe06b6b1e461d9d294ecb7fb0c841db4f","0x535a819f39a5bfb8821787887518b8fc32b50a89","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x7fbfba8204c9c15d66fe1429a072752081a23ed7","0x97e5f442ca14a8759d08566a9e5630d9b1fe3f98","0xd6e626dd0b76b30b1c44b62a472e2a1c4ae41b9e","0x32843cb7d41d5db861c58199e0fcece1bd4f0d0a","0x8d3c8b87310dff9005509d08715123037c965855","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x2706535a245aef76b7a23a0a86964205e46d61a2","0xecde882a27fb5bc39991119fc2e8788c22f55b30","0xecb09271da0879d6a1d03a4efba45b8397116c4d","0x4804be789315e10eaac72cfff890478f8189d5d4","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0x769ebd6ee9264ace412828100700a8f5448ed0f6","0xa7f2ed0a5f3d91f5cd22cf9db0dcbc10f8d26647","0x224bc9fe2924c82aceea6b3881c91ee262ba4aaa","0x095e52cd0915635b6e7c11a95368b4b60dbe9f1f","0xe526165b96b777f905e0325441a2d5eba7a43209","0x1639314b1adcc1f150903c1b6e14bc0e2ee5f409","0x718ce2358546ecb268d060417006f95902ad76e7","0x523044de194911829e303470e5ccb284e1d4c96d","0xc384ea49d7933bb841d88380e9f02da6397abbfe","0x7973502200b08ed0f493d8e3ffa10750f2897d05","0xfae0094339e4c378aebdf8e1bfa1bfc3f74b0fd4","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xc00725d9fca87bece7ce9aa0fed5d1c4f8b828b7","0x3d134b34afa00fc1fad3b42a27170b8d61cc2e48","0x3852558a267dac57e5f58c9807efdaf4cc413d32","0x171ba78ba77dc407879293f60622a589ac8d29d3","0x74ee5664b1ed394f931cae6e4effd975cb6b080c"] \ No newline at end of file From 9df08ed679dbc101e95bb2b7f9116fb0c06958ff Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Fri, 8 Sep 2023 15:26:28 +0200 Subject: [PATCH 06/34] chore: cleanup --- hardhat.config.ts | 3 --- tasks/automatedClaim.ts | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 989c888..2c1df50 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -19,9 +19,6 @@ const COINMARKETCAP_API_KEY = getEnvValSafe('COINMARKETCAP_API_KEY') const SNOWTRACE_API_KEY = getEnvValSafe('SNOWTRACE_API_KEY', false) const config: HardhatUserConfig = { - etherscan: { - apiKey: SNOWTRACE_API_KEY, - }, networks: { avalanche: { accounts: [DEPLOYER_PRIVATE_KEY], diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 281313d..d89e98f 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -43,7 +43,10 @@ task('automated-claim:single', 'Claim rewards for a single wallet') `āœ… Claimed for ${wallet}: https://snowtrace.io/tx/${tx.hash}` ) } else { - console.log(`Skipping ${wallet} because they have no deposits`) + console.log(`Skipping ${wallet} because they have no deposits`, { + deposit: userData.depositAmount, + withdrawn: userData.hasWithdrawnOrRestaked, + }) } } catch (error) { console.error('āŒ AutomatedClaim failed:', error) From e657da20ab7ab8ff2dfa67366e000823f10c8d0e Mon Sep 17 00:00:00 2001 From: Parth Patel Date: Wed, 13 Sep 2023 17:33:20 +0530 Subject: [PATCH 07/34] feat: add mining pass fee decay(discount) --- src/facets/MiningPassFacet.sol | 42 +++++++++++++++++++---- test/foundry/Facets/MiningPassFacet.t.sol | 30 ++++++++++++++++ 2 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/facets/MiningPassFacet.sol b/src/facets/MiningPassFacet.sol index b733602..2a952ab 100644 --- a/src/facets/MiningPassFacet.sol +++ b/src/facets/MiningPassFacet.sol @@ -4,7 +4,7 @@ pragma solidity 0.8.18; import { LDiamond } from "clouds/diamond/LDiamond.sol"; import { IERC20 } from "openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { AppStorage, UserData } from "../libraries/AppStorage.sol"; +import { AppStorage, UserData, Season } from "../libraries/AppStorage.sol"; import { LPausable } from "../libraries/LPausable.sol"; import { LPercentages } from "../libraries/LPercentages.sol"; @@ -30,20 +30,24 @@ contract MiningPassFacet { IERC20 _feeToken = IERC20(s.feeToken); uint256 _currentSeasonId = s.currentSeasonId; UserData storage _userData = s.usersData[_currentSeasonId][msg.sender]; + Season storage _currentSeason = s.seasons[_currentSeasonId]; // check _tier is not 0 if (_tier == 0 || _tier <= _userData.miningPassTier || feeForPassedTier == 0) { revert MiningPassFacet__InvalidTier(); } - // check if user have enough USDC to purchase - uint256 _fee = feeForPassedTier - s.miningPassTierToFee[_userData.miningPassTier]; - if (_feeToken.balanceOf(msg.sender) < _fee) { - revert MiningPassFacet__InsufficientBalance(); - } + // check current season is not ended if (s.seasons[_currentSeasonId].endTimestamp <= block.timestamp) { revert MiningPassFacet__SeasonEnded(); } + uint256 _fee = getMiningPassFee(msg.sender, _tier); + + // check if user have enough USDC to purchase + if (_feeToken.balanceOf(msg.sender) < _fee) { + revert MiningPassFacet__InsufficientBalance(); + } + // update user's mining pass tier _userData.miningPassTier = _tier; // transfer USDC from user to contract @@ -53,6 +57,32 @@ contract MiningPassFacet { emit MiningPassPurchase(_currentSeasonId, msg.sender, _tier, _fee); } + /// notice Fee for mining pass + /// @param _user User to query fee for + /// @param _tier Tier of mining pass to purchase + function getMiningPassFee(address _user, uint256 _tier) public view returns(uint256 _fee) { + uint256 feeForPassedTier = s.miningPassTierToFee[_tier]; + uint256 _currentSeasonId = s.currentSeasonId; + UserData storage _userData = s.usersData[_currentSeasonId][_user]; + Season storage _currentSeason = s.seasons[_currentSeasonId]; + // check _tier is not 0 + if (_tier == 0 || _tier <= _userData.miningPassTier || feeForPassedTier == 0) { + revert MiningPassFacet__InvalidTier(); + } + // check if user have enough USDC to purchase + _fee = feeForPassedTier - s.miningPassTierToFee[_userData.miningPassTier]; + // check current season is not ended + if (s.seasons[_currentSeasonId].endTimestamp <= block.timestamp) { + revert MiningPassFacet__SeasonEnded(); + } + + if (block.timestamp - _currentSeason.startTimestamp >= 14 days) { + _fee = _fee / 2; + } else if (block.timestamp - _currentSeason.startTimestamp >= 7 days) { + _fee = _fee - _fee / 4; + } + } + /// @notice Get user's mining pass tier and deposit limit /// @param _user User address function miningPassOf(address _user) external view returns (uint256 _tier, uint256 _depositLimit) { diff --git a/test/foundry/Facets/MiningPassFacet.t.sol b/test/foundry/Facets/MiningPassFacet.t.sol index 3c95385..ca52305 100644 --- a/test/foundry/Facets/MiningPassFacet.t.sol +++ b/test/foundry/Facets/MiningPassFacet.t.sol @@ -38,6 +38,36 @@ contract MiningPassFacetTest is DiamondTest { vm.stopPrank(); } + function test_Purchase_After_14_days() public { + vm.startPrank(makeAddr("user")); + + _approveAndMintFeeToken(100 * 1e6); + skip(14 days + 100); + + miningPassFacet.purchase(1); + + (uint256 _passTier, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTier, 1); + assertEq(feeToken.balanceOf(address(diamond)), 0.25 * 1e6); + + vm.stopPrank(); + } + + function test_Purchase_After_7_days() public { + vm.startPrank(makeAddr("user")); + + _approveAndMintFeeToken(100 * 1e6); + skip(7 days + 100); + + miningPassFacet.purchase(1); + + (uint256 _passTier, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTier, 1); + assertEq(feeToken.balanceOf(address(diamond)), 0.50 * 1e6 - (0.50 * 1e6) / 4); + + vm.stopPrank(); + } + function test_PurchaseHigherTier() public { vm.startPrank(makeAddr("user")); From 83506b5d0f2c4ee9de1eb03ec166f1f318f51a4b Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Mon, 18 Sep 2023 15:08:37 +0200 Subject: [PATCH 08/34] fix: use depositPoints --- tasks/automatedClaim.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index d89e98f..6ff643f 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -35,7 +35,7 @@ task('automated-claim:single', 'Claim rewards for a single wallet') wallet, seasonId ) - if (userData.depositAmount > 0 && !userData.hasWithdrawnOrRestaked) { + if (userData.depositPoints > 0 && !userData.hasWithdrawnOrRestaked) { console.log(`Claiming for ${wallet}`) const tx = await ClaimFacet.automatedClaim(seasonId, wallet) await tx.wait(3) @@ -44,7 +44,7 @@ task('automated-claim:single', 'Claim rewards for a single wallet') ) } else { console.log(`Skipping ${wallet} because they have no deposits`, { - deposit: userData.depositAmount, + deposit: userData.depositPoints, withdrawn: userData.hasWithdrawnOrRestaked, }) } @@ -144,7 +144,7 @@ task('automated-claim:all', 'Claim all rewards for a season') ) await new Promise((resolve) => setTimeout(resolve, 100)) if ( - userData.depositAmount > 0 && + userData.depositPoints > 0 && !userData.hasWithdrawnOrRestaked ) { return wallet From 9923c0d483e7f43895ccccc7de8943babeff1024 Mon Sep 17 00:00:00 2001 From: royvardhan Date: Mon, 25 Sep 2023 16:25:27 +0530 Subject: [PATCH 09/34] chore: polish logic --- datagrapher | 1 + lib/forge-std | 2 +- src/facets/MiningPassFacet.sol | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 160000 datagrapher diff --git a/datagrapher b/datagrapher new file mode 160000 index 0000000..eb96318 --- /dev/null +++ b/datagrapher @@ -0,0 +1 @@ +Subproject commit eb963182d683cfd944aab9b56c5ffc9149d01e53 diff --git a/lib/forge-std b/lib/forge-std index 520f86e..98dbdd0 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 520f86e57e0682bdac282748a33a138a47f1d552 +Subproject commit 98dbdd0043a5c8bfc286a4b1c2ecf27daa6b4b79 diff --git a/src/facets/MiningPassFacet.sol b/src/facets/MiningPassFacet.sol index 2a952ab..e78c236 100644 --- a/src/facets/MiningPassFacet.sol +++ b/src/facets/MiningPassFacet.sol @@ -37,7 +37,7 @@ contract MiningPassFacet { } // check current season is not ended - if (s.seasons[_currentSeasonId].endTimestamp <= block.timestamp) { + if (_currentSeason.endTimestamp <= block.timestamp) { revert MiningPassFacet__SeasonEnded(); } @@ -69,10 +69,10 @@ contract MiningPassFacet { if (_tier == 0 || _tier <= _userData.miningPassTier || feeForPassedTier == 0) { revert MiningPassFacet__InvalidTier(); } - // check if user have enough USDC to purchase + // check the difference between current paid fee vs fee to pay _fee = feeForPassedTier - s.miningPassTierToFee[_userData.miningPassTier]; // check current season is not ended - if (s.seasons[_currentSeasonId].endTimestamp <= block.timestamp) { + if (_currentSeason.endTimestamp <= block.timestamp) { revert MiningPassFacet__SeasonEnded(); } From 0a01e6ce79b32171411a5556667d1f28a2ecf4db Mon Sep 17 00:00:00 2001 From: royvardhan Date: Mon, 25 Sep 2023 16:26:39 +0530 Subject: [PATCH 10/34] rm: datagrapher --- datagrapher | 1 - 1 file changed, 1 deletion(-) delete mode 160000 datagrapher diff --git a/datagrapher b/datagrapher deleted file mode 160000 index eb96318..0000000 --- a/datagrapher +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eb963182d683cfd944aab9b56c5ffc9149d01e53 From e72b638d37f9478f1bc16c0016f3d4295940acf6 Mon Sep 17 00:00:00 2001 From: royvardhan Date: Mon, 25 Sep 2023 16:53:38 +0530 Subject: [PATCH 11/34] feat: add tests for coverage --- test/foundry/Facets/MiningPassFacet.t.sol | 41 ++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/test/foundry/Facets/MiningPassFacet.t.sol b/test/foundry/Facets/MiningPassFacet.t.sol index ca52305..e0abefa 100644 --- a/test/foundry/Facets/MiningPassFacet.t.sol +++ b/test/foundry/Facets/MiningPassFacet.t.sol @@ -49,7 +49,6 @@ contract MiningPassFacetTest is DiamondTest { (uint256 _passTier, ) = miningPassFacet.miningPassOf(makeAddr("user")); assertEq(_passTier, 1); assertEq(feeToken.balanceOf(address(diamond)), 0.25 * 1e6); - vm.stopPrank(); } @@ -68,6 +67,46 @@ contract MiningPassFacetTest is DiamondTest { vm.stopPrank(); } + function test_Purchase_After_14_days_As_Upgrade() public { + vm.startPrank(makeAddr("user")); + + _approveAndMintFeeToken(100 * 1e6); + miningPassFacet.purchase(1); + + (uint256 _passTier, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTier, 1); + assertEq(feeToken.balanceOf(address(diamond)), 0.50 * 1e6); + + skip(14 days + 100); + miningPassFacet.purchase(2); + + (uint256 _passTierUpgraded, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTierUpgraded, 2); + assertEq(feeToken.balanceOf(address(diamond)), (0.50 + (0.50 - 0.50 / 2)) * 1e6); + + vm.stopPrank(); + } + + function test_Purchase_After_7_days_As_Upgrade() public { + vm.startPrank(makeAddr("user")); + + _approveAndMintFeeToken(100 * 1e6); + miningPassFacet.purchase(1); + + (uint256 _passTier, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTier, 1); + assertEq(feeToken.balanceOf(address(diamond)), 0.50 * 1e6); + + skip(7 days + 100); + miningPassFacet.purchase(2); + + (uint256 _passTierUpgraded, ) = miningPassFacet.miningPassOf(makeAddr("user")); + assertEq(_passTierUpgraded, 2); + assertEq(feeToken.balanceOf(address(diamond)), (0.50 + (0.50 - 0.50 / 4)) * 1e6); + + vm.stopPrank(); + } + function test_PurchaseHigherTier() public { vm.startPrank(makeAddr("user")); From aff6bca8838b3e82ad7e2a7c0d63fc03f13cc5a6 Mon Sep 17 00:00:00 2001 From: royvardhan Date: Mon, 25 Sep 2023 16:57:47 +0530 Subject: [PATCH 12/34] fix: update tier state of user after payment --- src/facets/MiningPassFacet.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/facets/MiningPassFacet.sol b/src/facets/MiningPassFacet.sol index e78c236..0178f78 100644 --- a/src/facets/MiningPassFacet.sol +++ b/src/facets/MiningPassFacet.sol @@ -48,12 +48,13 @@ contract MiningPassFacet { revert MiningPassFacet__InsufficientBalance(); } - // update user's mining pass tier - _userData.miningPassTier = _tier; // transfer USDC from user to contract _applyMiningPassFee(_fee); _feeToken.transferFrom(msg.sender, address(this), _fee); + // update user's mining pass tier + _userData.miningPassTier = _tier; + emit MiningPassPurchase(_currentSeasonId, msg.sender, _tier, _fee); } From 7231f4700939e8d8c5b8d8246468636d6bfe376c Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Sun, 1 Oct 2023 02:12:52 +0200 Subject: [PATCH 13/34] release: start season 3 --- scripts/startSeason.ts | 48 +++------------- scripts/startSeasonFix.ts | 55 ------------------- tasks/automatedClaim.ts | 2 +- tasks/data/season-depositors-avalanche-3.json | 1 + test/utils.spec.ts | 16 ++++++ utils/index.ts | 30 ++++++++++ utils/logTx.ts | 11 ++-- 7 files changed, 63 insertions(+), 100 deletions(-) delete mode 100644 scripts/startSeasonFix.ts create mode 100644 tasks/data/season-depositors-avalanche-3.json create mode 100644 test/utils.spec.ts diff --git a/scripts/startSeason.ts b/scripts/startSeason.ts index 924bb73..e390679 100644 --- a/scripts/startSeason.ts +++ b/scripts/startSeason.ts @@ -1,36 +1,6 @@ import { ethers, network } from 'hardhat' import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' - -/* - * Starting at 15,000 VAPE per season, on Season 1, - * we will decreate the emissions by 0.41217% per season. - */ -const calculateReward = (seasonId: number) => { - // Initial values - const initialRewards = 15000 - const reductionPercentage = 0.41217 / 100 - - let reward = initialRewards - for (let season = 2; season <= seasonId; season++) { - reward = reward - reward * reductionPercentage - } - - return reward -} - -const daysInMonth = () => { - const now = new Date() - const year = now.getFullYear() - const month = now.getMonth() - - // Create a date for the first day of the next month - const nextMonth = new Date(year, month + 1, 1) - - // Subtract one day to get the last day of the current month - nextMonth.setDate(nextMonth.getDate() - 1) - - return nextMonth.getDate() -} +import { calculateReward, getNextMonthTimestamp, logTx } from '../utils' async function main() { const diamondAddress = @@ -43,21 +13,21 @@ async function main() { const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) const parsedRewards = ethers.parseEther(rewards.toString()) - const duration = daysInMonth() console.log('Attempting to start new season') - const startSeasonTx = await DiamondManagerFacet.startNewSeasonWithDuration( - parsedRewards.toString(), - duration - ) - await startSeasonTx.wait(1) + const startSeasonTx = + await DiamondManagerFacet.startNewSeasonWithEndTimestamp( + parsedRewards.toString(), + // 1696118400 // 2023-10-01 00:00:00 UTC + getNextMonthTimestamp() + ) + await logTx(startSeasonTx) console.log('āœ… New season started') const mintVAPETx = await DiamondManagerFacet.claimTokensForSeason() - await mintVAPETx.wait(1) + await logTx(mintVAPETx) console.log('āœ… Vape minted') - console.log('āœ… All done') } diff --git a/scripts/startSeasonFix.ts b/scripts/startSeasonFix.ts deleted file mode 100644 index 5e44c87..0000000 --- a/scripts/startSeasonFix.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ethers, network } from 'hardhat' -import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' - -/* - * Starting at 15,000 VAPE per season, on Season 1, - * we will decreate the emissions by 0.41217% per season. - */ -const calculateReward = (seasonId: number) => { - // Initial values - const initialRewards = 15000 - const reductionPercentage = 0.41217 / 100 - - let reward = initialRewards - for (let season = 2; season <= seasonId; season++) { - reward = reward - reward * reductionPercentage - } - - return reward -} - -async function main() { - const diamondAddress = - LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] - .address - const DiamondManagerFacet = await ethers.getContractAt( - 'DiamondManagerFacet', - diamondAddress - ) - const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() - const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) - const parsedRewards = ethers.parseEther(rewards.toString()) - console.log('Attempting to start new season') - const startSeasonTx = - await DiamondManagerFacet.startNewSeasonWithEndTimestamp( - parsedRewards.toString(), - 1696118400 // 2023-10-01 00:00:00 UTC - ) - await startSeasonTx.wait(1) - - console.log('āœ… New season started') - - const mintVAPETx = await DiamondManagerFacet.claimTokensForSeason() - await mintVAPETx.wait(1) - - console.log('āœ… Vape minted') - - console.log('āœ… All done') -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 6ff643f..8d9c4c0 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -86,7 +86,7 @@ task('automated-claim:all', 'Claim all rewards for a season') const isAuthorized = await AuthorizationFacet.authorized(deployer.address) if (!isAuthorized) { - console.error('āŒ Deployer is not authorized') + console.error('āŒ Account is not authorized') return } diff --git a/tasks/data/season-depositors-avalanche-3.json b/tasks/data/season-depositors-avalanche-3.json new file mode 100644 index 0000000..c8e3340 --- /dev/null +++ b/tasks/data/season-depositors-avalanche-3.json @@ -0,0 +1 @@ +["0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0xabaf7ae21fab058edfd665c118adea740390159b","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0x697652ad036a251bee98821e0dba68e196029f0f","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xfc78aee970a4b57406e384bf3e148440d6b23728","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0xdf0c403bf50801b0437671114e6c05ea6e310499","0x3200f484ccb390b38814c142b6a30e4885100e28","0x60bf62067dd3155f3acfeed177b872fe30214c58","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0x9b9e1b73d7346286520a3ddb36dd6e530db1537e","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x7643df115bcd333a0b4c651d114f25a617c735a4","0xd3a675df46208cebed56e236f86e650829e22f9d","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x8734382c5e988c1ee1c750b16d5d1fefd3423b09","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x0aca219a4b144c45eba91800196f5a7aeef377b9","0xc8b50a8666d3192febf3df068f6ac6a2f9e29d13","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0x721100c936494fe26d91ecaed06ea117eaa7164e","0xd74622ed5cbd8c6c93b0f96f115b9a07dc7c8bd8","0x1caf13e8fbe83b8b5902bbc2959f2f9d839f70ec","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x3e042fc216461a17b168d36689a9d02ce2507379","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0xfbdc3f73a2443bb416ed326b006041b7bae6f615","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0xf6878bc768d664afdf815898d1f908be54eedc52","0x5a73dcd82bfd45b84aa9c70477b049874ee4bc3c","0x97f46368175b980b7124e38f0af4daac008a058f","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x36b21d1aaca7c078a29a2acc1f692763341470e9","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0xcde467f92434094b8c16c953da550b750b5cf6c5","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x1f49d6303b9be888c2210125640c749bf437ae0d","0x06972cc41d56e548e615e3395f236fd0e812a991","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x65053579065da1fa4d60b800ca47e633874ad780","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0x75040bf74846972705a5aba861cb196a5e0a5eb1","0xe9f94f522096182808ffc8b13c50445e3922fe04","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0xff61a30a954367758552d5fd9ce7a28369898496","0x129fded8e1e03b0b87b8da98037fb2dff30e3b35","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0xfe4b53eeb334263bdc5dd76054d3517a7b757259","0x27a90a6825132eb88e8feaafe035658663c8944f","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xbcf507bf620c3bd65874feaa4400cd924e432a14","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0x2464c45cb3040821a49773717ae4d375dee3915b","0x65f4923c646c62d5803940e94ac03da955c3c814","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0x165e02cfac87b846cec7cbf5e80cd19748fb0227","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0x510388680d11d4473b4fca975dbc8b1922912e72","0x4180a0da3c4d833452150634a1e0141c20d34196","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x99c16079c89f47feecf45546053a859dcaaac997","0x629ffa634c3733dba1eab088eadba7ef25936035","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x1f94a12e745ce696c9338a1db393e0125f218740","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0xb49b4f3d3355aeb84992e81986a52f730298bbc4","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0xff8c87595495750f407bb94dd35ef7db034fdb59","0x6e8c3d389b30c522669548dd5c60aa26436442ac","0xc213ae792bc642cb8526aad91c7586e086b84eb5","0x17650afea949f40f9abe05470e17d2d003377b37","0x904e60863ed6e4fc2fb4e26d9f3fe4079381d689","0x0577f8438448a38db0e5b0abf49d1b8f3fd65c32","0x0b3f35d92fcf68e560e43dfce5b5309b8f9291c4","0x34182508cb615a917f2ae185147b8125fbf54220","0x8a65e11fe169386718e1979043fc3a5126c8949a","0x8a79dc25fbaf8643c22d961448fd76833b5e81a4","0xe08e95f51e5f8eeaeb1ee6065ae2c16884943e12","0x3d1dedd0c9e64c82192f5eb4a17d03ac31738d88","0xb4a280b84381c864b5c60bfbfd426fc53852be96","0xacbf3bb1efd82640c43f93df145aa64f2b86f667","0x26d1b321729b6c021823e130d005f0f3bc9174ef","0xda4f874ece4f3910a4fdccde7fb649bea50c6291","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x827dbbe748a492b242a9a189ac578ef8876ee635","0xef6612cb458342eb7c374619860a9bae998fd350","0x5edc6a966b477a3b1b0b874771206cd24cd3b832","0x3793deb92101be0f2b9dace8e612511ab4b1c554","0x117c87915a5208d1315dfd85f0f90df7eeadde60","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xfe077a5576c085a0e745632518244087b91cd155","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0x04236988c39c28fb0cc15d50af22515eaa038c13","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x5c263db138be88737ad66c01428ff847861ad8f1","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0x6921e0e32a3156255c2dc66740308cef29854a4b","0xc30a1a531b1fea1c9ebf5dbe7f474f809c736a3a","0x99fc795bd843bbb2b6cb848c40ba7d9954fade89","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0xa82f14e8241cd61f823579ff89c805bbca270feb","0xdc8915723bc7115f28f85e3777bbe7340b45215b","0xb6dbf54b7313be24d3fa87dbadc6b9338d4df621","0x28112bb5731d22b80aeaf432094a169a5fe875c7","0x1b33fd01bf378e92f42cd19f048714566aaaadbc","0xa15704171245d148206a8f1240eb51cf3dadc368","0x9de1925269f2c68a2a570647ecb170fc245db448","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0x5599746948950205b229ba683824652cfb504e5d","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0xf0f192516a1ecd91f87dcda6bbe538ba8a15f9b8","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0xe85054783ac72b93a082bf579b48615993c1559b","0xc00725d9fca87bece7ce9aa0fed5d1c4f8b828b7","0x3d134b34afa00fc1fad3b42a27170b8d61cc2e48","0x3852558a267dac57e5f58c9807efdaf4cc413d32","0x171ba78ba77dc407879293f60622a589ac8d29d3","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xde639c2f28378ab59702354608d51b11a5019c3f","0x77b41acbc72d4c64d88fce50428100a13a84c186","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0xa7774f5ecdbab450d6a04be8f430448bf28a9d26","0xf2cd0f1cdf3d8d5b63abaf78a803a7a036a7d824","0x7e39ec7d38258256135bd0e01486935290eac8f7","0x7fd7cb0df6e1919ff29dd30b25b6afa38973342f","0xb2423e90eab0a24934a68a799b896616031f4c1e","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0xb841ddb964e7c9309941732d6c3270f60986893e","0x97e5f442ca14a8759d08566a9e5630d9b1fe3f98","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x3fcaaacc54f5240aea1d8767b4238b9a0eb11952","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x813de8be827a526c271e5226af912441d3b63700","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x087719013c6645ebfac905ecbc91603944595c58","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0xe7b87150991634d6b8fdb2dea037436764680984","0xc2cd9bddcc63a0d7390033d8bfcdad948d6b9bae","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x4f2aec2bec8127298c17bc006284eea27d83e87c","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0xb05b2e41fede4ea329cdf5024cf6127ddfaecaa2","0x26014c73e070a30e5468225f19d1d799397a2df6","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0xd309efbd1410d595aeb610dde0eb7a2e087b42bc","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0x43dc10dc0f481422e7c0d1b2416976bb4209bb72","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0x4a27cb133ad44ba1adcdb3cd69872b2469882b5f","0x611f82431ded5b850d083f3742b7c0f4418b8957","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0x7c26dc5f0066f31e3b234e0ff20c2c21edf218fc","0x4ddbb04e5d5cb68f0fc1f089fb7471e5d8deccb4","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x523044de194911829e303470e5ccb284e1d4c96d","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0x7ba1a543ae17941c706702c087e58ebb07967721","0xbb1f823554d8f62804686edda026022db7454195","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x07737aba415bd610700663b633c4babb827f38aa","0x4efce69a3460620556c4ea933192764d984b6ab5","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x5e5547f8c425bb60870820907172c2a5b7d90283","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x6baef8ad4634a93a6c002abc06d57020701d717c","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0x237deb0192880732869926af2ec85a6a64c88e8f","0x1206a6efe2adeaeedb0471736f7c339801999423","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0xfc749385de796532a31a2c8976bb4d537647d825","0x745c4a0a8031b03e870116bc9080d96de2ad9e37","0x6348016845dec61912814209bacdb67922250677","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x2a922fed52c4e039e67533b2c0785f1255960d85","0x93fe43db40c997ae784143f060032db16293d93f","0x96b66b565748afcee772cfa12b728aeda0a67d40","0x72d0779298e3297c63063e4d351252209129c7b1","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x3524b442779162b103c3a75362895c7d238b3f88","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x11a3cb0a586c6c723b76c6c33aa0ac06b0aa4521","0x2647050446e6437558c6df9313c412ee97ba7d19","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0xdb48dce5b9a0e03a3382d27228844f90701d5df8","0xe58d60e60b93f26c565e0881a4382087d071a7c8","0x67c1ac6002c52c967b42912788b5602b4033abb3","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0xae8ab67bd43326e424b649050d33b704288af1b5","0x335977b2165dabe24fa0acc284adee6bc2760e8f","0x50425ec3b3f62b31466c225a51d9d1a405531eab","0x1635ce4325eb96817610255fed3b39273deea95e","0x8f447437a9197299fdd9f8318cd9964a3a9d8508","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x22c5a5979d1d3dabaccb98968367f50cba77047f","0xb073ad67d8b3aa66a849736510f50953c8abb53f","0x558188b83af5168b62ca8f928d07dd51433b3425","0x43216c0b7ed42325020ad460134ac8dc48d98ccc","0xa3b76f49c5d4f55764be870962af2bdd0c0ca025","0x483028f6531db87645c67cec4bd97777ea90b4f3","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0x0467e993ae5216e318cf7cf27dd17d44d7724666","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x91342c51ead36ab67a274dfde3a2252b233c6668","0xd85c63984630836d1403f4e77682bba128bcdd25","0x43df2b78d32d22ba8ce77e13848e8b59ec3b7f05","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0x23972bf12981de088acafb98be8699bc0a16eda4","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0xf9c2f322398e58dad8532716d751a7447ab7e299","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0x4aad9cdb896db9f9cab630a4f002701cf8052c3f","0x461fe77f0b6a893ca5b271bd8b8fff6b12c498b6","0xa333e486608821200004b98212355a7df32491dc","0xb533c39bdc314a5469b3a668ec8110985ad29ea2","0x42edac74b460daad05da6132009ce4d3ea161e83","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xfc2b322799db5b892805b250347083c749b61d9e","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0xe9707be0764388e38945e6322dee740557b3ff3d","0x980ece433b54caa56251d050cb90e706871cec8d","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0x8eaed448b6e986ec8c57768b35694873e1951a45","0x5e9def163ece7711d23d4e7319013b10596dc14e","0x2706535a245aef76b7a23a0a86964205e46d61a2","0xedb8a7b24a8b629576220dd699023345d4d78e87","0xaa97c6927642cbff371765672d5ee822474bb72e","0xb932047206f891b7a8a8c867969e2908da869892","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x845ec8bd463364e72830421c5b02fd5b94619bf1","0x6125d87503c33f896d68f522d9d854ddcf3b547f","0xec49ebeed63af5049d729d9840f5b49854a47156","0xdf925749e5c9e69e281b6b97868097097f81c537","0x45bdec2e54d476fd6dfd5ab9954856aee921204e","0x5938df5f179015f74929f9d91ef0ab66d9fa490b","0x8d2dcc145e6b43e862ac6afa9c18afef7b29b083","0xf9b9eebeef9a734bc469a57468d41a4651d5e158","0x3aabd3a309c04c59c93026f7d3d022a25c403acf","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x892a7c4ab693d12d41af3ade27884e2b94745681","0xc0561558b7d18f971a8ab25753eea597215c893b","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x15ef3708be7c8bfab5357be38acfb2159c625832","0xdbeef580eb836f68d1e08769372799f84766d9c5","0x5d315beb4c49178231103248c0198ba70fbdc76f","0x416552278815a25c96acd6d4dccd2a417653d85f","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0xecde882a27fb5bc39991119fc2e8788c22f55b30","0xa02fabbfee04918a95f8098e282f91e2fbb8026b","0x62fa1525fa43621c0a72f39bded0759063f297a1","0x57f50af8110af03ae21d8c483c39baf06235126e","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xf8d7f5cb39cc910284dba0a8119536011fd2892d","0xd7aa74781bebbd0582f255c91fcc43ab3a391037","0x77330ab6cc7db76038db9aa9e00eac7aca4913ad","0x815493f7bf6623844435a4eea34860c810905588","0x253902b38f19ccc22e589b4c12beb21293a89353","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x39d4ef6897afd69d9baf9405a7256f6943495377","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x8670923ef71d0451b939dcdd0309c6142c07d800","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0xe9dde0578dd39cbf91b193b35abba1ee056326b2","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0x76453095ab298978b4e88958e18d53385e2e3dfd","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0x97b0315a1e35ff45070c1394ed06f6207c1b46f5","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0xe8db468aa3f8d997c96ed7674784dbd39067e839","0x78133bc446f67848255781e79743902f7c762bcc","0xac56fc694e06e536a384d273bfc318650cb135f6","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0x64c4de7bae3989df15e1c77c4788fe1cb8281913","0x68e3937876369d26a11dcc3b3581f7585a3a5bf4","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x49afcac51e4deb957708aa8ba51d8d51845aa99f","0x8c862dff50699290a6043427d073bd4a6e42763e","0xd9e80bf3bd597921b1fea20737bffbf4e49966c6","0x75f4ce1b4182a9b8627c547221dbcea68804e1fd","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x715c6f7ed0ccef7d9af6dae0436b2a1995b5599d","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0x85029f5ea54742c64632a27f47526825240fe285","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xf8da9684d47283ffcc9de379a52dcc08bd559c6f","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x66345a99a53b43026e35e53794f08ac1ec9a4739","0x7bb2c71db0dfbdb63dd70ea6dcba442be7aa3c87","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x1bb01159ab168acd0cc055ead980729a2adae919","0xcf0758f9cc8c6ce84609e94bd5e1f856fd595657","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x0b90e3b6677a5e2f412716efa6b125fcb529e10e","0xf94bbb43e6a411c831674088b3a35a994fb61246","0x48bf6438f414d9a0803ab2a6c3db2f85689e73e3","0x1e741f9bb96b9a990051936d841fd136d605e531","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0x0e10816ac60b5ed3776864b259b31abd22b66955","0x3463e691d7473662525288560f25d8adffe98905","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x8d3c8b87310dff9005509d08715123037c965855","0xb0cbb564f3239c230906301fe20f3f9a9c65f57f","0xe6223be27e5ef29d9766a992e3b58bd082416c45","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x8de85f121d62f12653350e1f555ff55095100513","0x24cd0db23a635f115300091449ffce559dda1b76","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0x63ce35c783610966b29afba7280b1182f59d3ed0","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x958d983fe50176d844bcecf137edb95fd1afc540","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xe614f620e1ad131d9ef45343548c064faeff25af","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0x69479e349af2cc60b33e11373831e4209f74c5e4","0xa351103f950bcd9a3dc8aaf5961fb4e94c542a5e","0x587fbe613c3cc991455f0ea531ff6006c0b8fd51","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0xfe9b4781893a22eb10913cabf3d578ebc24be1cd","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x5cc84a87cd788e0d61e17a4cdc3c12d2b750713b","0x2f381172e2224f922bcc4886c98c147be34fd59d","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0xa187712d483127ed9c0f223119dcc49213123143","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0x44a51f42650e8660c0dc6f1cd5362f90c1761322","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0x1e050ca02787ab13d2006c9f06801789546a9eda","0x535a819f39a5bfb8821787887518b8fc32b50a89","0x4327e9302cccaad021ec6b9682f12bad06b3402b","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x12cdd62fea8c62657d0dc4662ecdf33150513a73","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x19e54e9e57cc0c5a0af142f345f6022903262667","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0x0e99ca7f0ee2472f236062ac3fae3852d4f9f945","0x309c717ee9d528e3df049b7ba89f8c8f2ab6d641","0x352a80959ce2c8c1c6d6eff881a4b23b543ab38a","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0x23895eba2ae941da7e70cb5e4a19a3a355e9483d","0x993e1df7606613b14366dfd90dd0478d21772e80","0x209329b630ee09a04b37b168970eb66f422a2025","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xd5abfcaae5b421dbc3660c73a5724795c4917b79","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0xe1dcefd670b9d1b8fb0f680154c28b3add522f19","0xe27e8c08e5539b66aa4d2bcf4c9d324d93738f7a","0x6592817568eca8d7f79ccfceed43db5934e1dc78","0x77b3a67ccedcfebe4f6099a319bdef2dda99b69d","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x474118147a047f8dd2679d14e5947490a21cb74f","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x227c2411f03630303483a88b6d4c49eb32a92f84","0xe6cbf7333303fc382c8cace99f138fda788d3154","0xed92fde5aba69b9596ce11f77639e0d6a21160ea","0x1ed9cb1d102270f377dfb9b7781a28fbbd79a38e","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x851e3805be7ec2991d56e27ebd749196d33489b7","0xb0d3173fffea8996e6f3df486f9eb021073dc86b","0x40161ad3ee3c9b4b5753d5a72035ca3ca74f2380","0xe5f0da122c1b40372ffa80245f731db57366756a","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xdb2656d7fb4574bc1aa98d0bd8865608852d1b95","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x7fc5502c94b36de68dde3980415679c72ceb113a","0xf12008f7a04b81dcfc58924157c95def01977b05","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0x90921efeb37a66ee59621fc196087cbf2c27618f","0xf1c594b7c7bb5cccd717ec41fb81bc60280bc52a","0xf7da27d41c96fc150a45d4feed630f55464faea0","0x6b706a1e39ea30d8dceda5c9fc9b71e556c4d886","0xb3a4d65c780eb6139bc0ddcca59462a4f8f931bf","0xab27b52d1bb9806344296b707d459f6e13b61be2","0xebcd8aec57cfc69065578e1f4ace589c6d60be84","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x58e11e0dde32519f52ac04c6b4be44d05c57b22a","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0x87cf69467e239f29ff880cf7f0d1b3a07b1bbc08","0x0a5eee35105fdb4090347b27fcb27960d5c9120f","0x3983f90047a33db4369259fae42f13429fe46bb8","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0xf89a2dce493f26d27490f80c511cea9ced991408","0xf1a98729ff297218f7e57621fe6e9cca00bbb9a9","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0xaa704fe1277431015f48231909f15c958fb74940","0x8c01955de31db82f9a88be01736d6eac1b3ed23b","0x5ed8f096aea95650391a995585f86310434f0696","0xc28e635715b808494187941bbb26248e1ce8e1b2","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0x51f614ee00960ec37b743236499af47d7caec396","0x710ce64cc8fb9332836f8f12d74636fe1bdb2186","0xf4e6232d2f86bd3399d956b3892d6b1893e1e06e","0x4205cf51a09f8e4e8f4dd632abe89b3415cba6d3","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0xa1b670426a127f7fd0649e4fea95fff4a077bd9e","0x4b0f3beaade897299682c30ce1bc9585d82888eb","0x4da48333589d54956f4b8c497e274867630a8bad","0x53b4331987798f2ec6673f479d5311735067787d","0xed45fefaa2fe28763e7e0629678ed6c2debb5701","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0x69094b7855eccc06d374fa604d594779072b04ad","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0x8316d8837b456ea3b60536b14c62357652b7e416","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xaad1557ef67d88221bd1e029d0aae501390cc7ac","0xecc2eff7e481e885832e529c1811263039d9aea0","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0xb6c2e5675efa86c84561d22f6f5bbfdb4552a2df","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0xa8d584e91a4e2acef563ea1e2d9db16e193e0ae3","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x9f0f7c9b05cbd1f26e080309478139b4b28a2941","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0x030378b20f910dfedab89c5c6d61b049fcbf0445","0x7786126e5e953ddab491bcef27482eb3365a0708","0x6d8eb2d195b0cd658f34690782236e55661cf82d","0x7678a517f7251b075f06994bd55de4e62e8b5f84","0xe2bc6aed592892b069081ce9693ed3d106cb7ca5","0x510b994672200a21316e4665b15d4b6f1a16770e","0x509302c3d574ffaedc51b6784d0b5b482c591e45","0xd8c0d5523824994d43743f94dab72f16b306b248","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x174fe2068ac1b8b46a93f7a68efb554705f6348b","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0x6e22158961608f3c3ba0d9e0ae642f1b925f14e9","0xe3a09a345038962e546dfbf6ab78a6ef52d31d53","0xc37388cb00a131e0e23e056571c23d0566ec93b2","0xe87c293577f4ed57e9041ad6cfbdf41547242d19","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0xfcc46b36098f6d2490097b0c6f0ac5c97b212d5e","0x6e8f37ee5915749afc8b291173837fd132099837","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0x4017205f4731f85fc870449e244375e7e8288c06","0x91c8786d1b32bd0e99a1591b59451c6d014bee09","0xd23cec774de5cde5ec05ceecfd93ff9801ef0700","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0x677fcf23024e4685a6b6a8447c486ff649d623ad","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x2863a270ecf9f28a16b9307e2e66661570a3f2c2","0xd02082678a48ff7d53ef22f312c911f18595ee2f","0x917b37d8019c2eb79dd6de90ee5d936f11ef1001","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0x2e5415cebd85e63769eebb2439fc192a901078f7","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x866984fd11cf74b356fa8bb79b1a8d8f5a7fb968","0x5d9fa323d70441c70d8b9be597b629016c3af898","0x3b7619c7aab7f0392d355f41677526680443cd9d","0xa8300b92a403f9abe944d04512d07130770149fe","0x309b936952bf22d19655ae90b1164c483bef4774","0x1cf78459cc0960f5b611b5e95ebc4cb7b2c24846","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x01d985ea44d2eee7a786bb27f307b96ab3d7199a","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0xf7dd3a4da694079d3d76a05f919bc475e6a9f26e","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x37edfb2576810db078e9a838ac405e787578996e","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0xaa88bd1a01be7e8d7ae8204f32e33b7a4914b7b3","0x6248d23207c36ee03788060a136d781baec52a0d","0x95d52f89e069e183fab5f8ca3328072202f0cad0","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x2a1feb51d9d6c900f07094534874644a0de281a5","0x69788d815a0f39618c0d000b16919516260f31b5","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0xd0d5aef2dfc3f1648a96c0fc53b3ab17a15d52d5","0xfd33e3eb2600b95645c2abb13d1c4cd4fe3e7dca","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x438234cb12756e4d60a4420907adf8ae4c0fd8b6","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x82ad9768e5129784938e1d6ba1b1ea94c0d56003","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x77f62b2dd47520f0e29663c8f208a40682202936","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0xa7f2ed0a5f3d91f5cd22cf9db0dcbc10f8d26647","0x57066bca9a8be58929067c1a6549bb8f2efaa30c","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x144fe10482fc1384cde291b6e01ca868b9355eca","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0xb0bf62e1ee6e27a2bd321a52cf031960265e216a","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0xb555009df0dd3ba8e5c9ae74018dc16f3a14ecf3","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0x3a95b8f62011920218f1f779825b7f9ad42b6030","0x320e4801c10fee174327005fab8516e54f2283dd","0x681caa36d91aeb81f0c65b3de0b7bddfbccafdc8","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0x411f12c30e1b471223b0e407e0cb4bbed6bd181f","0x36dc09d4df0804669d15bf388eb3175b47008eb3","0xa05216c3648cbca24cc8916df5131b2b9ed918bc","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0x10e1bf9139239735acf4314d9046e95dce245ac4","0x83973e694d35461a33eb056a36d02e4e6e56cee1","0x59bc91d631d4ebcd2dd010a2da494677d8b7e084","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0x2d814ed77caf027209efa93f0f4a1010ff985b75","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0x40b819be9feccec6aa7861de3782cb3195115637","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x35b542f9321de0203f86b627e13810d9ddcd8bf1","0xfa3998ccb918be53291c18f2c79644ca43683714","0x10a4ff44126926d319444128498361e62ae813ba","0x945f8c340c29e3c9e0342787581027a8d3faf413","0xc696dda4bbc18bf91556c1842ba34874b9dd3e2e","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0xffda445efd3f5d458703e68af6113cd4634a77da","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0x71b868bf5ffbdfb6a8cba8da2739e258c06eb17f","0xfdd7399a5804c0f1ab634b61669a34b70b44a8dd","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0x3bcb29cb62cc847c297a5c3fda379a10faba86b1","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x3fa09c1f0a47bf69cfc351b536160d7609d3d77e","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x6b7fa9818889e7e8cc7e96ce5673e08848eecc55","0xeac31644cda60c834e8552040662e1ddfc5ee37d","0x0ab6f34c4c1dc5b8aa0f0dfce733439fd6009b68","0x050cfb381da9235d71512b3c70fea9b47619ce9b","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xf192e1a17f51911473253eeadfd727a47299850a","0xb847f453ec067377214f90a20826afddf0319eb2","0x8c39df93724f9057f083434e8b954370c7a830ed","0x2fbfa0ed56fe9dd3f5a6737cd09a019210d5b015","0x83a9a014c2fbac123abbeb14f80ba275206005d6","0xcde03566d2d324bc2fe22581e4d9506779e1e451","0xecc10f7dbb2833667cb8404806c4b25a5aa27828","0xbb90138caccbf3f9d845a1e64bd30fdc08b115cb","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0xa7c858615b615cae98966cd06433c5e8734fb875","0xf0282fbea3e2e6006608221a4a0f06575565ac6b","0xa5afebf43a46f32bfaca706376da0fa85609e0f3","0x0921ae8da2b2274d25e621abaad1b76ebd6614fb","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x219c10c8c40adbcf6c976702f9ec355573e50dd6","0xd8b2b7f42873f111348c835563e26865474337db","0x0d2c5018723475800677676dbe58725f5ec788a5","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0x33737e34d80c317e4e96ba9474223594ba5199d8","0x7f60c6b3cf860b2a32567c755c5d06d380f6d557","0xfa8d5e52b454d25699b7acab1e4b3ef4d49ccd0b","0xbe325856260b1f98600bed3b2d469b892568b433","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0x411aad080b77d1a56fc267ed2394145bb0792b30","0xce2fbe6cfcc074e8097795e0592df436f596c7b2","0x5b24fbfe1df8b46eae2adebe6004150ee253ddb7","0x885eb28b9b629f0829cd107f33c09821c200072c","0x0c6d80187b3f37a6cbd234f37a95761fbff7f4d3","0xc67fbb1fd4dc8bccb340fde1737230e6d84a974d","0xebd2ad98fcc53ee0c4e72adb4ea336a42fc250de","0x2264405d2fb1e7d90a697f4464a15e5b22f17c9e","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0x9c94cc6264be038f3a36d98dfac0a7d8d6d63b8e","0x0a4e6358567ade9a1333e0366412777029d469d4","0xaacafcb1a09e7dee5afe3537e0d44915167b86ef","0xb2a08c0b893604dffaf06483e195b83145a55bf9","0xd4ccf7c433d7a311e463d5207ef51bcfe3ba34c6","0x22c02bf603b4e5f00b6a50f9638af9aa68fb97a2","0x6f428ffc388787935b9c5ddb9f6e26bbdac8fae5","0x05f9799b5a91258c63401e2be5c095af805630b5","0x610155a0b786d9b432528a48005962fbcd7e9b90","0xa8a0e087edc88b37074ae3cfcd39ca18c2ae8f6a","0x2b40a1f3caabc1eb4b716e09c1b61fbc26649e78","0xd1e46f632a5237c939d47a4ea8b598814879325a","0xe6314a1f433e0740372aa5fd800544e298a58fd2","0x59cf09d68940636efc588cf86618d3efa2414c39","0x9467135a90023c731803289676302fa18e75f5fe","0x5d5c88952be741a1dcdf9b155a6ba5d7f63343c1","0x8169586a98fc62db4a2ad927d5f0f07b5d7d68ad","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9884705f4e825a2174c115280c4d147379d5c33d","0x751d0fa216dd955c9534822e969c289b3df86f38","0x6cdefa646f06e8de25fe881a007c2a0f0954472b","0x6656da8e7339ba707ec346d660276e7799843eaa","0x68d277b72e0588457769528c07a73f77ff035cf8","0x283f2ca35223e12d680e20a7f71fcb30f375dbd4","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x149a5b994d061144cb61c9477857fab856dbfd0a","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0x0f36b2709ac8056a4e33738b52c78e92f4d728a9","0x917f571533c271e7761c59604bd655a3fbf2b799","0xfbb4fe9d1e6b0b8d61dd011350cb761297b52a03","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0xddf90a7335b403b00ee509c99b7e1314545d0f18","0x6c1a321bdc2ea45b64823a77524932d4b361a48a","0xf80e38a963b2d8cc939bfa7f2117874f6332c14a","0xf02d03275124f262963b94e1078ba61be52c2f48","0x4b82f1fb5e1ed87d24a66558813776b5a7c451d1","0x59e209f7276284fdfa847025021a3cbb6caa4dc2","0x1f4180b058afe5aeed78d1109ba8dbcc0e90de46","0xee096417d22cd50c472edbe9438f851cb50199f7","0x32e6557a77724385732df7112eb7693115171d3e","0x45b447b7443ea23dc30acdd99b1ab8f5daa209da","0x3a58b5743bc8dd0952ef2d033b0a621f2b00814b","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x6656a02a4a8ec7d436ceda8250e917d1a4b82e4c","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0xf568af57b088e565624409cae2147db23da72795","0x0280865e1ca50100bc3a80e12d73b05f0b1039f8","0xed3779f7a4fd19d0b6002e20ae2929f950646d86","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0x9985aeb2f620da70cc5db30e45f34d87bc7374dd","0x59caf41dacfa52358cb7eb5566b7d02c91005c2e","0xd4e56eebb6001cd7b56eaedec097d988efcba73b","0x013644c5e5d5834da7ef8f56365c979c7bda671c","0x4279b0ed460634f5cc144640409bfff7da3cf07f","0x3f59d4cd0edd0e7bbc8d76a1ed83dfe71b274cf4","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x326398d6ae0ff317d728888002a203b83eebd54a","0xc38d3936034227a1f0e6b7de15d600adf1738395","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x69eb32371bfdcebb10ef3ec750c3f29007d69f46","0xebff609da73cf65b886c9f3a050835b5c3f33fe7","0x5fbc2d71646936dcc2e9af3cd7e2ae20bf8e9f99","0xce5600f9ac619677ca3e0853d1fddd067919b3fd","0x2510ecacb9be9292a7a8c286ec457bb18b4d4a5b","0x187cff5dc9b27cf68b3e30f6b5f1bed98c8d51a9","0x06dd5751f9b6e0e6aacf1f72aa439c2c9f5fa18d","0xa845b97dfe63912a2b1b915f111dd630a630c787","0x2d748fd2f4c033b2541d3e1a312d5752fd0b6702","0x756b49da56257a73b487ba56d0b580410a8719a5","0x69c9afbaf5b74e423b1d21f6e282e57c1b2114e9","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0xdc00ea58e0c6dac15f6b21a380c0a9aebe323c68","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0x43838e7f4180c7d7ae84bec46210b8ca07911bad","0xad448137d170b0153018e470afa6b96357d6107f","0x7948c307638e84c0156887d54f770c562f031f3f","0x8f0576170143731420237deeb8eb8764ac64534e","0x72d9ca5b1ee861a22cbb93270374feab81a6920d","0x91ef622e7f3378ba99451ba1361b9ab656708999","0x27e74133212825f7241de925bf51a3bede881659","0xd50938c168cfa25d0c65e7e5b065439adb0524d6","0xbd29e8db224205789ff1fb1b4fe532a35775d3f2","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x55d1381475e035ba45a3f26afc762e5a37cf4c90","0xc16ccc8bea2b3e4bb16db5a96e029cae5f989a15","0xfae0094339e4c378aebdf8e1bfa1bfc3f74b0fd4","0x3d0b6947e035580c6852f9e658386883ceccd34d","0x7e626e48f5d8079ede2b09c110d5d2c551c23f86","0x6b3484065dd3c73841f2590251fcbd582de77e82","0x7bc332f85a246b02762971e59a487631eadd84cd","0x67da2565ce6064ff72c97f69b7e248d6944b2d2c","0xf5343ec610e40ea46ea38ae1210ecebef70700a8","0xf1392d7f9da499708a9596afee934c4bf082651d","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0x071a704af5e1fdb36173ef9347b72ed790af968a"] \ No newline at end of file diff --git a/test/utils.spec.ts b/test/utils.spec.ts new file mode 100644 index 0000000..3548424 --- /dev/null +++ b/test/utils.spec.ts @@ -0,0 +1,16 @@ +import { expect } from 'chai' +import { getNextMonthTimestamp } from '../utils' + +describe('getNextMonthTimestamp', () => { + it('should return the timestamp of the first day of the next month', () => { + const now = new Date() + now.setUTCHours(0, 0, 0, 0) + const nextMonth = new Date( + now.getMonth() === 11 ? now.getFullYear() + 1 : now.getFullYear(), + now.getMonth() === 11 ? 0 : now.getMonth() + 1, + 1 + ) + const expectedTimestamp = Math.floor(nextMonth.getTime() / 1000) + expect(getNextMonthTimestamp()).to.equal(expectedTimestamp) + }) +}) diff --git a/utils/index.ts b/utils/index.ts index ab1af8f..4854e00 100644 --- a/utils/index.ts +++ b/utils/index.ts @@ -3,3 +3,33 @@ export * from './getEnvValSafe' export * from './saveDeployment' export * from './wait' export * from './getContractDeployment' +export * from './logTx' + +/* + * Starting at 15,000 VAPE per season, on Season 1, + * we will decreate the emissions by 0.41217% per season. + */ +export const calculateReward = (seasonId: number) => { + // Initial values + const initialRewards = 15000 + const reductionPercentage = 0.41217 / 100 + + let reward = initialRewards + for (let season = 2; season <= seasonId; season++) { + reward = reward - reward * reductionPercentage + } + + return reward +} + +export const getNextMonthTimestamp = () => { + const now = new Date() + now.setUTCHours(0, 0, 0, 0) + const nextMonth = new Date( + now.getUTCMonth() === 11 ? now.getUTCFullYear() + 1 : now.getUTCFullYear(), + now.getUTCMonth() === 11 ? 0 : now.getUTCMonth() + 1, + 1 + ) + const timestamp = Math.floor(nextMonth.getTime() / 1000) + return timestamp +} diff --git a/utils/logTx.ts b/utils/logTx.ts index d7dae79..a8bc8ea 100644 --- a/utils/logTx.ts +++ b/utils/logTx.ts @@ -1,9 +1,10 @@ -import { ContractTransaction } from 'ethers' +import { ContractTransactionResponse } from 'ethers' -async function logTx(res: ContractTransaction) { +export async function logTx( + res: ContractTransactionResponse, + confirmations?: number +) { console.log(`Transaction pending: ${res.hash}`) - await res.wait() + await res.wait(confirmations ?? 1) console.log('Done! šŸŽ‰') } - -export default logTx From 9df298114f7a6c4503b20237471b4763f5bbb5eb Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Fri, 6 Oct 2023 13:01:39 +0200 Subject: [PATCH 14/34] feat: add gelato resolver for seasons --- foundry.toml | 3 + lib/forge-std | 2 +- scripts/deploy/gelato-resolver.ts | 23 +++ src/GelatoResolver.sol | 82 +++++++++++ src/facets/DiamondManagerFacet.sol | 79 +++++----- src/libraries/AppStorage.sol | 2 + src/libraries/LDateTime.sol | 224 +++++++++++++++++++++++++++++ test/foundry/GelatoResolver.t.sol | 65 +++++++++ utils/deployContract.ts | 2 +- 9 files changed, 447 insertions(+), 35 deletions(-) create mode 100644 scripts/deploy/gelato-resolver.ts create mode 100644 src/GelatoResolver.sol create mode 100644 src/libraries/LDateTime.sol create mode 100644 test/foundry/GelatoResolver.t.sol diff --git a/foundry.toml b/foundry.toml index ec41a95..cdd6d74 100644 --- a/foundry.toml +++ b/foundry.toml @@ -7,3 +7,6 @@ cache_path = 'forge_cache' solc = "0.8.18" optimizer_runs = 1000000 +[rpc_endpoints] +avalanche = "${AVALANCHE_RPC_URL}" +fuji = "${FUJI_RPC_URL}" \ No newline at end of file diff --git a/lib/forge-std b/lib/forge-std index 98dbdd0..520f86e 160000 --- a/lib/forge-std +++ b/lib/forge-std @@ -1 +1 @@ -Subproject commit 98dbdd0043a5c8bfc286a4b1c2ecf27daa6b4b79 +Subproject commit 520f86e57e0682bdac282748a33a138a47f1d552 diff --git a/scripts/deploy/gelato-resolver.ts b/scripts/deploy/gelato-resolver.ts new file mode 100644 index 0000000..2cc14a8 --- /dev/null +++ b/scripts/deploy/gelato-resolver.ts @@ -0,0 +1,23 @@ +import { ethers, network } from 'hardhat' +import { deployContract } from '../../utils/deployContract' +import LiquidMining from '../../deployments/LiquidMiningDiamond.json' + +async function main() { + const liquidMining = LiquidMining[network.name as keyof typeof LiquidMining] + + try { + await deployContract('GelatoResolver', { + args: [liquidMining.address], + log: true, + }) + } catch (error) { + console.log(error) + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/src/GelatoResolver.sol b/src/GelatoResolver.sol new file mode 100644 index 0000000..8db602f --- /dev/null +++ b/src/GelatoResolver.sol @@ -0,0 +1,82 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import { LDateTime } from "./libraries/LDateTime.sol"; + +interface ILiquidMiningDiamond { + function getSeasonEndTimestamp(uint256 seasonId) external view returns (uint256); + + function getCurrentSeasonId() external view returns (uint256); + + function startNewSeasonWithEndTimestamp(uint256 _rewardTokenToDistribute, uint256 _endTimestamp) external; + + function claimTokensForSeason() external; +} + +contract GelatoResolver { + ILiquidMiningDiamond public immutable liquidMiningDiamond; + + constructor(ILiquidMiningDiamond _liquidMiningDiamond) { + liquidMiningDiamond = _liquidMiningDiamond; + } + + /// @notice Calculates the reward for a given season + /// @dev The reward is calculated by multiplying the initial reward with a reduction factor of 0.41217% per season + /// @dev The inital reward for the 1st season is 15,000 tokens, with 18 decimals + /// @param seasonId The season ID + /// @return The reward for the given season + function calculateReward(uint256 seasonId) public pure returns (uint256) { + uint256 initialReward = 15000 * 10 ** 18; // 15,000 tokens, with 18 decimals + uint256 reductionFactor = (100000 - 412) * 10 ** 18; // 0.412% reduction per season, with 18 decimals + for (uint256 i = 0; i < seasonId - 1; i++) { + initialReward = (initialReward * reductionFactor) / (100000 * 10 ** 18); + } + return initialReward; + } + + function isLeapYear(uint256 year) public pure returns (bool) { + if (year % 4 != 0) { + return false; + } else if (year % 100 != 0) { + return true; + } else if (year % 400 != 0) { + return false; + } + return true; + } + + function getNextMonthFirstDayTimestamp() public view returns (uint256) { + uint256 currentTime = block.timestamp; + LDateTime._DateTime memory dateTime = LDateTime.parseTimestamp(currentTime); + + uint16 year = dateTime.year; + uint8 month = dateTime.month; + + if (month == 12) { + year += 1; + month = 1; + } else { + month += 1; + } + + return LDateTime.toTimestamp(year, month, 1); + } + + function checker() external view returns (bool canExec, bytes memory execPayload) { + uint256 currentSeasonId = liquidMiningDiamond.getCurrentSeasonId(); + uint256 currentSeasonEndTimestamp = liquidMiningDiamond.getSeasonEndTimestamp(currentSeasonId); + + uint256 nextSeasonReward = calculateReward(currentSeasonId + 1); + uint256 nextMonthFirstDayTimestamp = getNextMonthFirstDayTimestamp(); + + if (block.timestamp > currentSeasonEndTimestamp) { + execPayload = abi.encodeCall( + ILiquidMiningDiamond.startNewSeasonWithEndTimestamp, + (nextSeasonReward, nextMonthFirstDayTimestamp) + ); + return (true, execPayload); + } + + return (false, bytes("Current season is not over yet")); + } +} diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 390f324..4c72337 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -50,6 +50,13 @@ contract DiamondManagerFacet { _; } + modifier onlyGelatoExecutor() { + if (msg.sender != s.gelatoExecutor) { + revert DiamondManagerFacet__Not_Owner(); + } + _; + } + function setDepositToken(address token) external validAddress(token) onlyOwner { s.depositToken = token; emit DepositTokenSet(token); @@ -143,7 +150,7 @@ contract DiamondManagerFacet { function startNewSeasonWithEndTimestamp( uint256 _rewardTokenToDistribute, uint256 _endTimestamp - ) external onlyOwner { + ) external onlyGelatoExecutor { uint256 _currentSeason = s.currentSeasonId; if (_currentSeason != 0 && s.seasons[_currentSeason].endTimestamp >= block.timestamp) { revert DiamondManagerFacet__Season_Not_Finished(); @@ -180,11 +187,7 @@ contract DiamondManagerFacet { s.seasons[currentSeasonId].totalPoints -= difference; } - function getRewardTokenToDistribute(uint256 _seasonId) external view returns (uint256) { - return s.seasons[_seasonId].rewardTokensToDistribute; - } - - function claimTokensForSeason() external onlyOwner { + function claimTokensForSeason() external onlyGelatoExecutor { IEmissionsManager(s.emissionsManager).mintLiquidMining(); emit VapeClaimedForSeason(s.currentSeasonId); } @@ -197,6 +200,43 @@ contract DiamondManagerFacet { emit EmissionsManagerSet(_emissionManager); } + function setUnlockTimestampDiscountForStratosphereMember( + uint256 tier, + uint256 discountBasisPoints + ) external onlyOwner { + s.unlockTimestampDiscountForStratosphereMembers[tier] = discountBasisPoints; + emit UnlockTimestampDiscountForStratosphereMemberSet(tier, discountBasisPoints); + } + + function setUnlockFee(uint256 fee) external onlyOwner { + if (fee > TOTAL_SHARES) { + revert DiamondManagerFacet__Invalid_Input(); + } + s.unlockFee = fee; + emit UnlockFeeSet(fee); + } + + function setBoostFee(uint256 boostLevel, uint256 boostFee) external onlyOwner { + if (boostFee > TOTAL_SHARES) { + revert DiamondManagerFacet__Invalid_Input(); + } + s.boostLevelToFee[boostLevel] = boostFee; + } + + function setBoostPercentTierLevel(uint256 tier, uint256 level, uint256 percent) external onlyOwner { + s.boostPercentFromTierToLevel[tier][level] = percent; + } + + function setGelatoExecutor(address executor) external onlyOwner { + s.gelatoExecutor = executor; + } + + // Getters + + function getRewardTokenToDistribute(uint256 _seasonId) external view returns (uint256) { + return s.seasons[_seasonId].rewardTokensToDistribute; + } + function getUserDepositAmount(address user, uint256 seasonId) external view returns (uint256, uint256) { UserData storage _userData = s.usersData[seasonId][user]; return (_userData.depositAmount, _userData.depositPoints); @@ -245,33 +285,6 @@ contract DiamondManagerFacet { return s.seasons[seasonId].totalPoints; } - function setUnlockTimestampDiscountForStratosphereMember( - uint256 tier, - uint256 discountBasisPoints - ) external onlyOwner { - s.unlockTimestampDiscountForStratosphereMembers[tier] = discountBasisPoints; - emit UnlockTimestampDiscountForStratosphereMemberSet(tier, discountBasisPoints); - } - - function setUnlockFee(uint256 fee) external onlyOwner { - if (fee > TOTAL_SHARES) { - revert DiamondManagerFacet__Invalid_Input(); - } - s.unlockFee = fee; - emit UnlockFeeSet(fee); - } - - function setBoostFee(uint256 boostLevel, uint256 boostFee) external onlyOwner { - if (boostFee > TOTAL_SHARES) { - revert DiamondManagerFacet__Invalid_Input(); - } - s.boostLevelToFee[boostLevel] = boostFee; - } - - function setBoostPercentTierLevel(uint256 tier, uint256 level, uint256 percent) external onlyOwner { - s.boostPercentFromTierToLevel[tier][level] = percent; - } - function getUserPoints(address user, uint256 seasonId) external view returns (uint256, uint256) { UserData storage _userData = s.usersData[seasonId][user]; return (_userData.depositPoints, _userData.boostPoints); diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index 91abb91..a57d97b 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -86,4 +86,6 @@ struct AppStorage { address stratosphereAddress; uint256 reentrancyGuardStatus; address emissionsManager; + /// GELATO /// + address gelatoExecutor; } diff --git a/src/libraries/LDateTime.sol b/src/libraries/LDateTime.sol new file mode 100644 index 0000000..56802d5 --- /dev/null +++ b/src/libraries/LDateTime.sol @@ -0,0 +1,224 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +library LDateTime { + /* + * Date and Time utilities for ethereum contracts + * + */ + struct _DateTime { + uint16 year; + uint8 month; + uint8 day; + uint8 hour; + uint8 minute; + uint8 second; + uint8 weekday; + } + + uint constant DAY_IN_SECONDS = 86400; + uint constant YEAR_IN_SECONDS = 31536000; + uint constant LEAP_YEAR_IN_SECONDS = 31622400; + + uint constant HOUR_IN_SECONDS = 3600; + uint constant MINUTE_IN_SECONDS = 60; + + uint16 constant ORIGIN_YEAR = 1970; + + function isLeapYear(uint16 year) internal pure returns (bool) { + if (year % 4 != 0) { + return false; + } + if (year % 100 != 0) { + return true; + } + if (year % 400 != 0) { + return false; + } + return true; + } + + function leapYearsBefore(uint year) internal pure returns (uint) { + year -= 1; + return year / 4 - year / 100 + year / 400; + } + + function getDaysInMonth(uint8 month, uint16 year) internal pure returns (uint8) { + if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { + return 31; + } else if (month == 4 || month == 6 || month == 9 || month == 11) { + return 30; + } else if (isLeapYear(year)) { + return 29; + } else { + return 28; + } + } + + function parseTimestamp(uint timestamp) internal pure returns (_DateTime memory dt) { + uint secondsAccountedFor = 0; + uint buf; + uint8 i; + + // Year + dt.year = getYear(timestamp); + buf = leapYearsBefore(dt.year) - leapYearsBefore(ORIGIN_YEAR); + + secondsAccountedFor += LEAP_YEAR_IN_SECONDS * buf; + secondsAccountedFor += YEAR_IN_SECONDS * (dt.year - ORIGIN_YEAR - buf); + + // Month + uint secondsInMonth; + for (i = 1; i <= 12; i++) { + secondsInMonth = DAY_IN_SECONDS * getDaysInMonth(i, dt.year); + if (secondsInMonth + secondsAccountedFor > timestamp) { + dt.month = i; + break; + } + secondsAccountedFor += secondsInMonth; + } + + // Day + for (i = 1; i <= getDaysInMonth(dt.month, dt.year); i++) { + if (DAY_IN_SECONDS + secondsAccountedFor > timestamp) { + dt.day = i; + break; + } + secondsAccountedFor += DAY_IN_SECONDS; + } + + // Hour + dt.hour = getHour(timestamp); + + // Minute + dt.minute = getMinute(timestamp); + + // Second + dt.second = getSecond(timestamp); + + // Day of week. + dt.weekday = getWeekday(timestamp); + } + + function getYear(uint timestamp) internal pure returns (uint16) { + uint secondsAccountedFor = 0; + uint16 year; + uint numLeapYears; + + // Year + year = uint16(ORIGIN_YEAR + timestamp / YEAR_IN_SECONDS); + numLeapYears = leapYearsBefore(year) - leapYearsBefore(ORIGIN_YEAR); + + secondsAccountedFor += LEAP_YEAR_IN_SECONDS * numLeapYears; + secondsAccountedFor += YEAR_IN_SECONDS * (year - ORIGIN_YEAR - numLeapYears); + + while (secondsAccountedFor > timestamp) { + if (isLeapYear(uint16(year - 1))) { + secondsAccountedFor -= LEAP_YEAR_IN_SECONDS; + } else { + secondsAccountedFor -= YEAR_IN_SECONDS; + } + year -= 1; + } + return year; + } + + function getMonth(uint timestamp) internal pure returns (uint8) { + return parseTimestamp(timestamp).month; + } + + function getDay(uint timestamp) internal pure returns (uint8) { + return parseTimestamp(timestamp).day; + } + + function getHour(uint timestamp) internal pure returns (uint8) { + return uint8((timestamp / 60 / 60) % 24); + } + + function getMinute(uint timestamp) internal pure returns (uint8) { + return uint8((timestamp / 60) % 60); + } + + function getSecond(uint timestamp) internal pure returns (uint8) { + return uint8(timestamp % 60); + } + + function getWeekday(uint timestamp) internal pure returns (uint8) { + return uint8((timestamp / DAY_IN_SECONDS + 4) % 7); + } + + function toTimestamp(uint16 year, uint8 month, uint8 day) internal pure returns (uint timestamp) { + return toTimestamp(year, month, day, 0, 0, 0); + } + + function toTimestamp(uint16 year, uint8 month, uint8 day, uint8 hour) internal pure returns (uint timestamp) { + return toTimestamp(year, month, day, hour, 0, 0); + } + + function toTimestamp( + uint16 year, + uint8 month, + uint8 day, + uint8 hour, + uint8 minute + ) internal pure returns (uint timestamp) { + return toTimestamp(year, month, day, hour, minute, 0); + } + + function toTimestamp( + uint16 year, + uint8 month, + uint8 day, + uint8 hour, + uint8 minute, + uint8 second + ) internal pure returns (uint timestamp) { + uint16 i; + + // Year + for (i = ORIGIN_YEAR; i < year; i++) { + if (isLeapYear(i)) { + timestamp += LEAP_YEAR_IN_SECONDS; + } else { + timestamp += YEAR_IN_SECONDS; + } + } + + // Month + uint8[12] memory monthDayCounts; + monthDayCounts[0] = 31; + if (isLeapYear(year)) { + monthDayCounts[1] = 29; + } else { + monthDayCounts[1] = 28; + } + monthDayCounts[2] = 31; + monthDayCounts[3] = 30; + monthDayCounts[4] = 31; + monthDayCounts[5] = 30; + monthDayCounts[6] = 31; + monthDayCounts[7] = 31; + monthDayCounts[8] = 30; + monthDayCounts[9] = 31; + monthDayCounts[10] = 30; + monthDayCounts[11] = 31; + + for (i = 1; i < month; i++) { + timestamp += DAY_IN_SECONDS * monthDayCounts[i - 1]; + } + + // Day + timestamp += DAY_IN_SECONDS * (day - 1); + + // Hour + timestamp += HOUR_IN_SECONDS * (hour); + + // Minute + timestamp += MINUTE_IN_SECONDS * (minute); + + // Second + timestamp += second; + + return timestamp; + } +} diff --git a/test/foundry/GelatoResolver.t.sol b/test/foundry/GelatoResolver.t.sol new file mode 100644 index 0000000..d0bca51 --- /dev/null +++ b/test/foundry/GelatoResolver.t.sol @@ -0,0 +1,65 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity 0.8.18; + +import "forge-std/Test.sol"; +import { GelatoResolver, ILiquidMiningDiamond } from "src/GelatoResolver.sol"; + +contract GelatoResolverTest is Test { + GelatoResolver gelatoResolver; + ILiquidMiningDiamond liquidMiningDiamond = ILiquidMiningDiamond(makeAddr("LiquidMiningDiamond")); + uint256 mainnetFork; + + function setUp() public { + // vm.createSelectFork(vm.rpcUrl("avalanche")); + gelatoResolver = new GelatoResolver(liquidMiningDiamond); + } + + function test_calculateReward() public { + uint256 seasonId = 1; + uint256 expectedReward = 15000 * 10 ** 18; + uint256 actualReward = gelatoResolver.calculateReward(seasonId); + assertEq(actualReward, expectedReward); + + seasonId = 2; + expectedReward = 14938200000000000000000; + actualReward = gelatoResolver.calculateReward(seasonId); + assertEq(actualReward, expectedReward); + + seasonId = 3; + expectedReward = 14876654616000000000000; + actualReward = gelatoResolver.calculateReward(seasonId); + assertEq(actualReward, expectedReward); + + seasonId = 4; + expectedReward = 14815362798982080000000; + actualReward = gelatoResolver.calculateReward(seasonId); + assertEq(actualReward, expectedReward); + + seasonId = 5; + expectedReward = 14754323504250273830400; + actualReward = gelatoResolver.calculateReward(seasonId); + assertEq(actualReward, expectedReward); + } + + function test_getNextMonthFirstDayTimestamp() public { + vm.warp(1696118400); // 2023-10-01 00:00:00 + uint256 expectedTimestamp = 1698796800; // 2023-11-01 00:00:00 + uint256 actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); + assertEq(actualTimestamp, expectedTimestamp); + + vm.warp(1701388800); // 2023-12-01 00:00:00 + expectedTimestamp = 1704067200; // 2024-01-01 00:00:00 + actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); + assertEq(actualTimestamp, expectedTimestamp); + + vm.warp(1704067200); // 2024-01-01 00:00:00 + expectedTimestamp = 1706745600; // 2024-02-01 00:00:00 + actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); + assertEq(actualTimestamp, expectedTimestamp); + + vm.warp(1706745600); // 2024-02-01 00:00:00 + expectedTimestamp = 1709251200; // 2024-03-01 00:00:00 (Leap Year) + actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); + assertEq(actualTimestamp, expectedTimestamp); + } +} diff --git a/utils/deployContract.ts b/utils/deployContract.ts index 5cb46f7..c8c297c 100644 --- a/utils/deployContract.ts +++ b/utils/deployContract.ts @@ -18,7 +18,7 @@ const defaultDeployOptions: DeployOptions = { export async function deployContract( contractName: string, - options: any = defaultDeployOptions + options: DeployOptions = defaultDeployOptions ) { const artifact = await hre.artifacts.readArtifact(contractName) From 97981c1343b788fb4c97483ee92f2ffffa11a2d2 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Fri, 6 Oct 2023 13:06:02 +0200 Subject: [PATCH 15/34] chore: cleanup --- src/libraries/AppStorage.sol | 2 ++ src/libraries/LDateTime.sol | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index a57d97b..55f6607 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -86,6 +86,8 @@ struct AppStorage { address stratosphereAddress; uint256 reentrancyGuardStatus; address emissionsManager; + ////////////// /// GELATO /// + ////////////// address gelatoExecutor; } diff --git a/src/libraries/LDateTime.sol b/src/libraries/LDateTime.sol index 56802d5..41a0481 100644 --- a/src/libraries/LDateTime.sol +++ b/src/libraries/LDateTime.sol @@ -1,6 +1,8 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; +/// @author @pipermerriam - https://github.com/pipermerriam/ethereum-datetime + library LDateTime { /* * Date and Time utilities for ethereum contracts From 633ccb900598d120699110aa9366d56efc99ec44 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Wed, 1 Nov 2023 09:56:36 +0100 Subject: [PATCH 16/34] release: start season 4 --- README.md | 5 +++++ tasks/data/season-depositors-avalanche-4.json | 1 + 2 files changed, 6 insertions(+) create mode 100644 tasks/data/season-depositors-avalanche-4.json diff --git a/README.md b/README.md index 5a1a44e..950f4b4 100644 --- a/README.md +++ b/README.md @@ -35,3 +35,8 @@ For each Deposit and Unlock action, we update the total points accumulated in a - [] Get `seasonMintAllowance` from EmissionsManager - [] Execute `startSeason` in LiquidStaking, using `seasonMintAllowance` as the argument + +### Commands + +āÆ yarn hardhat automated-claim:all --network avalanche --load-from-subgraph true --season-id 4 +āÆ yarn hardhat run --network avalanche scripts/startSeason.ts diff --git a/tasks/data/season-depositors-avalanche-4.json b/tasks/data/season-depositors-avalanche-4.json new file mode 100644 index 0000000..8c8161f --- /dev/null +++ b/tasks/data/season-depositors-avalanche-4.json @@ -0,0 +1 @@ +["0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0xabaf7ae21fab058edfd665c118adea740390159b","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0x06972cc41d56e548e615e3395f236fd0e812a991","0x2a1feb51d9d6c900f07094534874644a0de281a5","0x69788d815a0f39618c0d000b16919516260f31b5","0xdf0c403bf50801b0437671114e6c05ea6e310499","0x77b41acbc72d4c64d88fce50428100a13a84c186","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0x64c4de7bae3989df15e1c77c4788fe1cb8281913","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x474118147a047f8dd2679d14e5947490a21cb74f","0x97f46368175b980b7124e38f0af4daac008a058f","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x35f27b1f5a531a2bd2349bd14724d50148ad05bf","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x3b7619c7aab7f0392d355f41677526680443cd9d","0x33737e34d80c317e4e96ba9474223594ba5199d8","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x4da48333589d54956f4b8c497e274867630a8bad","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x3200f484ccb390b38814c142b6a30e4885100e28","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x0e10816ac60b5ed3776864b259b31abd22b66955","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0xe23a811de35d478ec1397b9b6c3e220aef1f6108","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0x43216c0b7ed42325020ad460134ac8dc48d98ccc","0xa3b76f49c5d4f55764be870962af2bdd0c0ca025","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x0aca219a4b144c45eba91800196f5a7aeef377b9","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0xdb48dce5b9a0e03a3382d27228844f90701d5df8","0xe58d60e60b93f26c565e0881a4382087d071a7c8","0x67c1ac6002c52c967b42912788b5602b4033abb3","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0x4ec106b066287fd0acce6a77ec15792354048ae7","0xdf925749e5c9e69e281b6b97868097097f81c537","0xa5afebf43a46f32bfaca706376da0fa85609e0f3","0x721100c936494fe26d91ecaed06ea117eaa7164e","0xd74622ed5cbd8c6c93b0f96f115b9a07dc7c8bd8","0x1caf13e8fbe83b8b5902bbc2959f2f9d839f70ec","0x1f94a12e745ce696c9338a1db393e0125f218740","0x9b9e1b73d7346286520a3ddb36dd6e530db1537e","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x710ce64cc8fb9332836f8f12d74636fe1bdb2186","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x7643df115bcd333a0b4c651d114f25a617c735a4","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x5e9def163ece7711d23d4e7319013b10596dc14e","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x50425ec3b3f62b31466c225a51d9d1a405531eab","0xe1dcefd670b9d1b8fb0f680154c28b3add522f19","0x0280865e1ca50100bc3a80e12d73b05f0b1039f8","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x3ae494842a0117315c532370e9485f8930279ea1","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0x993e1df7606613b14366dfd90dd0478d21772e80","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0x0a5dbaf976c91b12e448071316d89b215e318d70","0xebcd8aec57cfc69065578e1f4ace589c6d60be84","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0xa15704171245d148206a8f1240eb51cf3dadc368","0x53b4331987798f2ec6673f479d5311735067787d","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x57f50af8110af03ae21d8c483c39baf06235126e","0x2264405d2fb1e7d90a697f4464a15e5b22f17c9e","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0x129fded8e1e03b0b87b8da98037fb2dff30e3b35","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x1f49d6303b9be888c2210125640c749bf437ae0d","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x75040bf74846972705a5aba861cb196a5e0a5eb1","0xe9f94f522096182808ffc8b13c50445e3922fe04","0xe614f620e1ad131d9ef45343548c064faeff25af","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x253902b38f19ccc22e589b4c12beb21293a89353","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0xfc2b322799db5b892805b250347083c749b61d9e","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xbcf507bf620c3bd65874feaa4400cd924e432a14","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0xf0f192516a1ecd91f87dcda6bbe538ba8a15f9b8","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0xa187712d483127ed9c0f223119dcc49213123143","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0x04236988c39c28fb0cc15d50af22515eaa038c13","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x3920faaa62c641a0900270a71acecfcac8c158de","0x030378b20f910dfedab89c5c6d61b049fcbf0445","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x5c263db138be88737ad66c01428ff847861ad8f1","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0xd309efbd1410d595aeb610dde0eb7a2e087b42bc","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x6221d23e2aecefe15cff2f87b8387bce6b69e646","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x980ece433b54caa56251d050cb90e706871cec8d","0x8c4ca0570f0251b72ab74dc24be6c1fbe8333fea","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0xd2d4b326fc813c966264b4a5c354247db774753b","0x24395923f889ea160914733743b2a4eaddd93dad","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0x715c6f7ed0ccef7d9af6dae0436b2a1995b5599d","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0x6248d23207c36ee03788060a136d781baec52a0d","0x827dbbe748a492b242a9a189ac578ef8876ee635","0x6cdefa646f06e8de25fe881a007c2a0f0954472b","0x40161ad3ee3c9b4b5753d5a72035ca3ca74f2380","0xa59193fb01e9b0661ecf8270f2c98272530cad01","0x99c16079c89f47feecf45546053a859dcaaac997","0xc67fbb1fd4dc8bccb340fde1737230e6d84a974d","0xebd2ad98fcc53ee0c4e72adb4ea336a42fc250de","0xa351103f950bcd9a3dc8aaf5961fb4e94c542a5e","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x2464c45cb3040821a49773717ae4d375dee3915b","0x65f4923c646c62d5803940e94ac03da955c3c814","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0x087719013c6645ebfac905ecbc91603944595c58","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x34892a62f1a913d53c24fb56fee19de89a66a284","0xb2423e90eab0a24934a68a799b896616031f4c1e","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x892a7c4ab693d12d41af3ade27884e2b94745681","0x611f82431ded5b850d083f3742b7c0f4418b8957","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x8480f3f5cb5bcd0aff9cab138fc1fd8d4865b599","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xd3a675df46208cebed56e236f86e650829e22f9d","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0x2a922fed52c4e039e67533b2c0785f1255960d85","0xb841ddb964e7c9309941732d6c3270f60986893e","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0xff61a30a954367758552d5fd9ce7a28369898496","0x237deb0192880732869926af2ec85a6a64c88e8f","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x634917b41527d69ad20ee8fe35933ac08182aa20","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0x31adbfaf24daf11c5602eb218e89f02f34ee8f18","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x8eaed448b6e986ec8c57768b35694873e1951a45","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0x03ea3830138e1a986a8013e180a6de5a8beee6cd","0x44e58743f9855c9ba574b768e8efa0338a009e03","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0x8d3c8b87310dff9005509d08715123037c965855","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x461fe77f0b6a893ca5b271bd8b8fff6b12c498b6","0xa333e486608821200004b98212355a7df32491dc","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0xb1e60835ac782815ad3db6db29c2898cbef6323c","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0xe3e627306dc641d853c46275c68637629126ccf2","0x619f32c16797b4fc7ec6609a1de42ba7e77cd8e2","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0x917b37d8019c2eb79dd6de90ee5d936f11ef1001","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0x483028f6531db87645c67cec4bd97777ea90b4f3","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x8de85f121d62f12653350e1f555ff55095100513","0x885eb28b9b629f0829cd107f33c09821c200072c","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xecde882a27fb5bc39991119fc2e8788c22f55b30","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0xb13279a5de26519712a2101bdadc597f5720320f","0xb2a08c0b893604dffaf06483e195b83145a55bf9","0xfe2202c2ee6630450321ad7c383c6e10c593bb70","0xc678090d264ef66fc354bb66875ffb40e9bab97c","0x82ad9768e5129784938e1d6ba1b1ea94c0d56003","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xf9c2f322398e58dad8532716d751a7447ab7e299","0x309b936952bf22d19655ae90b1164c483bef4774","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x600c34bcf247d7efac731d4b0163d6307aff9dfc","0xd1570cf2121cd015caf08fdfb7f397a7dd980db4","0x8e7844f17f5a16171234272f04e552c79955bc84","0x3ab65c42d859e6b268f71693a5a6a5d47b54c0f9","0x558188b83af5168b62ca8f928d07dd51433b3425","0x06dd5751f9b6e0e6aacf1f72aa439c2c9f5fa18d","0xa845b97dfe63912a2b1b915f111dd630a630c787","0x2d748fd2f4c033b2541d3e1a312d5752fd0b6702","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x9de1925269f2c68a2a570647ecb170fc245db448","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x8f447437a9197299fdd9f8318cd9964a3a9d8508","0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x22c5a5979d1d3dabaccb98968367f50cba77047f","0xb073ad67d8b3aa66a849736510f50953c8abb53f","0x751d0fa216dd955c9534822e969c289b3df86f38","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0x3e042fc216461a17b168d36689a9d02ce2507379","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0x13b3ffa47980575a46ea812ac68c08c3148b907f","0xb0cbb564f3239c230906301fe20f3f9a9c65f57f","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x3793deb92101be0f2b9dace8e612511ab4b1c554","0x117c87915a5208d1315dfd85f0f90df7eeadde60","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0xea3802178afe086aeace9e4452b76ba5e27a612d","0xf854eb944eee9dd131fcaa2e55be053dbf3e7b93","0x6e22158961608f3c3ba0d9e0ae642f1b925f14e9","0xb49b4f3d3355aeb84992e81986a52f730298bbc4","0x6dc9044c4b848a81ec467f37e0c253d4fecf7de8","0xc97b6eeb9813e50cca714cfad479cd8647701b46","0xbd7c1c8073bdbc784239ba5822dedc12dd70e5af","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0x5d9fa323d70441c70d8b9be597b629016c3af898","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0xeee07dcf68cb4fde1c34d586a2786d4c3d45bb67","0x8c862dff50699290a6043427d073bd4a6e42763e","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0x32ce34a267e617410f25c4879af780b602a599ba","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0x980bd0360937776b469921255f9f1d59a2db0dbf","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0xe7b87150991634d6b8fdb2dea037436764680984","0xc2cd9bddcc63a0d7390033d8bfcdad948d6b9bae","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0x1222fd8fedc64606b34ef135740db5706031c8e4","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x35b542f9321de0203f86b627e13810d9ddcd8bf1","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x150d63350f27db753ed2e602d6474b27fcab713c","0x1e741f9bb96b9a990051936d841fd136d605e531","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0xb932047206f891b7a8a8c867969e2908da869892","0x12cdd62fea8c62657d0dc4662ecdf33150513a73","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x93fe43db40c997ae784143f060032db16293d93f","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0x8316d8837b456ea3b60536b14c62357652b7e416","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x2863a270ecf9f28a16b9307e2e66661570a3f2c2","0x958d983fe50176d844bcecf137edb95fd1afc540","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x7bb2c71db0dfbdb63dd70ea6dcba442be7aa3c87","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0xdce4b61978e3b2f6d135142122e6c78682c59836","0xb6d3f44d325c35e8434bf389efd9ee83b19ded54","0x32e6557a77724385732df7112eb7693115171d3e","0xe8db468aa3f8d997c96ed7674784dbd39067e839","0xfc749385de796532a31a2c8976bb4d537647d825","0x697652ad036a251bee98821e0dba68e196029f0f","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0xc00725d9fca87bece7ce9aa0fed5d1c4f8b828b7","0x3d134b34afa00fc1fad3b42a27170b8d61cc2e48","0x3852558a267dac57e5f58c9807efdaf4cc413d32","0x171ba78ba77dc407879293f60622a589ac8d29d3","0x1bb01159ab168acd0cc055ead980729a2adae919","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0xcf0758f9cc8c6ce84609e94bd5e1f856fd595657","0xdc00ea58e0c6dac15f6b21a380c0a9aebe323c68","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x6b7fa9818889e7e8cc7e96ce5673e08848eecc55","0xeac31644cda60c834e8552040662e1ddfc5ee37d","0x0ab6f34c4c1dc5b8aa0f0dfce733439fd6009b68","0x050cfb381da9235d71512b3c70fea9b47619ce9b","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0xf1392d7f9da499708a9596afee934c4bf082651d","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0xf6878bc768d664afdf815898d1f908be54eedc52","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0xbb1f823554d8f62804686edda026022db7454195","0xe3aa187c69701960cbe26d3239e0ef7e2040ae8e","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x851e3805be7ec2991d56e27ebd749196d33489b7","0xb0d3173fffea8996e6f3df486f9eb021073dc86b","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0xdbeef580eb836f68d1e08769372799f84766d9c5","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0x2848afd62180dfcb20951275fbf8179ad67d81aa","0x19e54e9e57cc0c5a0af142f345f6022903262667","0xd02082678a48ff7d53ef22f312c911f18595ee2f","0x2647050446e6437558c6df9313c412ee97ba7d19","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0xa82f14e8241cd61f823579ff89c805bbca270feb","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x3fffe1de987af7156db23f39e12016643c9ddfb3","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x87802c5c0106a73b7e296431d5173c4244affbbb","0xea3d7e34d282c35bc473cc9782e59ae135450b10","0xa0ea4d51f02d35938be2ac9e27fe0f88e76c3b66","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x68e3937876369d26a11dcc3b3581f7585a3a5bf4","0x27a90a6825132eb88e8feaafe035658663c8944f","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0xed45fefaa2fe28763e7e0629678ed6c2debb5701","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0x7461731009e947f9a0f930bfd97e589b51b41c72","0xfe4b53eeb334263bdc5dd76054d3517a7b757259","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0x06d959e3a7999a6f749e2398a79f223ec53fdae2","0x49afcac51e4deb957708aa8ba51d8d51845aa99f","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xf12008f7a04b81dcfc58924157c95def01977b05","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x91342c51ead36ab67a274dfde3a2252b233c6668","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0x43dc10dc0f481422e7c0d1b2416976bb4209bb72","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0xc7056431ddd10ff482af812f1ed892e3c1039f62","0xb33e12ce0ddbf70a715e6534ee5d32a44e56777c","0xf7e5d7607fe6d217dd6090e5d211b71ec3034c34","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x752e5fe4ca41aa32b82a0cb842e3dec13e23f709","0x5d315beb4c49178231103248c0198ba70fbdc76f","0xe00b841251b8d8f0f78ab5ccd541f3773b8389db","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0x45bdec2e54d476fd6dfd5ab9954856aee921204e","0x5938df5f179015f74929f9d91ef0ab66d9fa490b","0x8d2dcc145e6b43e862ac6afa9c18afef7b29b083","0xf9b9eebeef9a734bc469a57468d41a4651d5e158","0x3aabd3a309c04c59c93026f7d3d022a25c403acf","0xed92fde5aba69b9596ce11f77639e0d6a21160ea","0xc0561558b7d18f971a8ab25753eea597215c893b","0x9467135a90023c731803289676302fa18e75f5fe","0x7642f335aba5a8728b440596af8d3ec2a78c53f6","0xf5b578514ef280567ed2eace786d775132bad7a1","0x640a0ff8b99e65b0ba1dc1489e388b57f730eb64","0x77f62b2dd47520f0e29663c8f208a40682202936","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0xcde03566d2d324bc2fe22581e4d9506779e1e451","0xecc10f7dbb2833667cb8404806c4b25a5aa27828","0xbb90138caccbf3f9d845a1e64bd30fdc08b115cb","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0xc09c3ded8e674350cb74f11c2afc5a785ec25425","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x326398d6ae0ff317d728888002a203b83eebd54a","0x227c2411f03630303483a88b6d4c49eb32a92f84","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0x28656ee0640c0f54a9cb892ddecce5f021c993f8","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x1e050ca02787ab13d2006c9f06801789546a9eda","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0xe6cbf7333303fc382c8cace99f138fda788d3154","0x5b24fbfe1df8b46eae2adebe6004150ee253ddb7","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x8b4a106521ae96a41b2ec405d3fcb05eaf4a7c4f","0x23e6df2693de753252f034be95116faa7270b4c4","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0x2e5415cebd85e63769eebb2439fc192a901078f7","0xee318930f864178119bd8f3d36cbdc43b986c06d","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x3463e691d7473662525288560f25d8adffe98905","0xf02ba499e2eb34e66da6cb6b1ca930945e867610","0x0d2c5018723475800677676dbe58725f5ec788a5","0x2187119e30603d27b59c8fda7ac1a695a669203c","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0x7c1f434b31acb3d4b808e852b7228ff5d38b3032","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xe31d330923ca6f7f27c1be4ca90590ca7929d06e","0x03eddc33274b4650edef1ae362a607526bd50bfe","0x9bd1ebe10c018269b9b1152af1dee2ab9711ec98","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x4734cbccc556efc2e07d9e8fa8de13eaa8716758","0x4d20b6750e3e4dc42f4ce1620ef9e287111d6c58","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0x06fa5c0c78d62d4a00c2641677da966fbecd67f5","0xc1b2e0353ec7b55c53b32ddbd6853e8cfa809d25","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x97e5f442ca14a8759d08566a9e5630d9b1fe3f98","0x30f9b6187d417821f2b352a1fc7c76547c08b8ef","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0x320e4801c10fee174327005fab8516e54f2283dd","0x72d0779298e3297c63063e4d351252209129c7b1","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0x85029f5ea54742c64632a27f47526825240fe285","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0x03394cd1b9bd73e4ba49a0480a395a87a5dd3294","0x1635ce4325eb96817610255fed3b39273deea95e","0x321efe1ec6502ccde67216d87bde707cd3deca03","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x72d9ca5b1ee861a22cbb93270374feab81a6920d","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0x0a4e6358567ade9a1333e0366412777029d469d4","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0x0118832d17079a8fa442492bb316cf26ef144767","0x26829d23c4a1d2192a8ef61cbda614c653a50fda","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x804b1656e464b695b6fe1d29f8d861e3eb1e35cf","0xa67a78bf7a23c0504441138fa9c64f816f9e1414","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0xd94ade8ce1571f7e15640e12c71b023996e82902","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x1cc4981ac5a7c67b05dc4ea50a7b3e6dae8a59d2","0x3dccf8acae9cbc7ff6113aea13940f8b7aabc5a4","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0x6de85b21da7d667ff01ef0ed436cf9c53a37aca8","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x87f68331b3ce561e4967aef155086c2d3f7c138f","0x26014c73e070a30e5468225f19d1d799397a2df6","0xb33ca886adc00d50a991a739312a8d20d8e1c1d4","0x66fb0873754d061660fe0b614bf2f81c624167d9","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0xbb878eff5b50048b8267b5d2d3824f4a4d39ca40","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0x07737aba415bd610700663b633c4babb827f38aa","0x4180a0da3c4d833452150634a1e0141c20d34196","0x7fc17e7ef4ae2217e8f7d530b99e40eb0e2a789a","0x2171f2865e51157513813c56daf5f2543931b6bf","0xb84180c2d8ef3d07d2bf8e0a20960bd12a879c88","0x411f12c30e1b471223b0e407e0cb4bbed6bd181f","0x362117f5fcaffa0d7639f19192ad248e3f422f7d","0xa8d584e91a4e2acef563ea1e2d9db16e193e0ae3","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xa7473f10be830996c064185b9e37a49cd4cc5712","0xb762fc6fb322bc7eff978a4cf1257a28b84f2785","0x220ac4181502bec00c952007265a36c1f0af25cf","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0x8f0576170143731420237deeb8eb8764ac64534e","0x7948c307638e84c0156887d54f770c562f031f3f","0xd14689dca1b1529d4d2b57cf1c6804c82dcb96e0","0xcdde3935d2e655264ccdbcf544e380c53b23d3c8","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0xbd7c54edc102166a97a9a844067c7e32f048c430","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0x97bb19836e60e7df1262b9d131074c64a1299eac","0x549d7b6fea00fcbc4aa70abeb73fc1c88d591bd9","0x24ff50d3c156a2d98fca3ca0bdab4c2d2a693119","0x752ed09d0956afa588b43694444b4d400cf5597d","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0x190ad96cd76382dbfce44cf7db915a71f974e1c8","0xd4e56eebb6001cd7b56eaedec097d988efcba73b","0x411aad080b77d1a56fc267ed2394145bb0792b30","0x2706535a245aef76b7a23a0a86964205e46d61a2","0x71762e7db6284178408cd78e4527af11226f7524","0x5e5547f8c425bb60870820907172c2a5b7d90283","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0xffbb8754a1d52fad0d2b0796de3e08d85fd19167","0x0f698d5cdfdbdaac6b38edc504e698f74ba43023","0xfd83840522a441a323eac64a7728d11f089600a8","0xe85054783ac72b93a082bf579b48615993c1559b","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x7fb32593dfac54ddf8cb6c8a29ce8212bdcfbba7","0xf19c72b48ce35b4c98c6495818cd78bbb09014a7","0x298f3c3487e87a1ce12100fb16e1f5589e350198","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xfc78aee970a4b57406e384bf3e148440d6b23728","0x6592817568eca8d7f79ccfceed43db5934e1dc78","0xe27e8c08e5539b66aa4d2bcf4c9d324d93738f7a","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x8f6a052fe9229a4cf3a4b327f4c05675d2e9cd5d","0x7e71cc0c8f636f33ef4d7522bf4fc71e0bced0f6","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0x9cf37c82f3dae5ecaaab814a5dd33fc8b805eba7","0x255a9eb9869db522fceda015697cbea917b9e6de","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0x37edfb2576810db078e9a838ac405e787578996e","0x9e4204de05536d58367ef94e21df89f02984fbff","0x5ddb8e92911fe1685521106fd7bf15479059f412","0x9cf4cdb8bcfc24f88c755834a5992ed322f1055e","0x8aaed4c85e817dacad98308ac29a6c287f83a73c","0x4efce69a3460620556c4ea933192764d984b6ab5","0xf577148d8979ce41a707a47d8a72a114b535273a","0x8e570e5007a9cd7ebce23f49302ead902607e584","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0x149a5b994d061144cb61c9477857fab856dbfd0a","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0x6d8eb2d195b0cd658f34690782236e55661cf82d","0x7678a517f7251b075f06994bd55de4e62e8b5f84","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0xf339bf29a7648f2059c49a6fb72e42f522b4af5b","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0x591de72fed568f3b6c2c96ba5aaa58ffec5cd108","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0x174fe2068ac1b8b46a93f7a68efb554705f6348b","0x217eb3a77e9b20805a95700d90a4a1a5ae61dea7","0x98064436b37879387696ad5c4ee898dc03c8bec6","0x604b645fb7fb955d2ab4a8ae8cbfea61b6aa4fcc","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0xb3b92280caf31ff48a86d5881f8c910b00538eb1","0x90432636f899c956c13ebc6087efd3b0eaceba00","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xf568af57b088e565624409cae2147db23da72795","0xf0ee65d910037e35225fda039521a8b73b8e073a","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0x95d52f89e069e183fab5f8ca3328072202f0cad0","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9884705f4e825a2174c115280c4d147379d5c33d","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0x15803f7cd42102802d95a1245d67471b989fe9cb","0x3be99211d5026097ba0f4f34440b64ef94af84a7","0x23895eba2ae941da7e70cb5e4a19a3a355e9483d","0x071a704af5e1fdb36173ef9347b72ed790af968a","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0xb9ac3bdc086c5773105177056b2a1a77d752727e","0x70553be7ae7c75efc3e94a752ddd3ca0abe79b38","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x60ec7b2cc59a1481c242d4c7b2af165c5b28cfe0","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0x187cff5dc9b27cf68b3e30f6b5f1bed98c8d51a9","0x2923f5ed47c69549f0ecae49b06085c7c5430db1","0xa65c450b0b8f203becb81dedc13b3443f48d166c","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x866984fd11cf74b356fa8bb79b1a8d8f5a7fb968","0xd50938c168cfa25d0c65e7e5b065439adb0524d6","0xbd29e8db224205789ff1fb1b4fe532a35775d3f2","0x45b447b7443ea23dc30acdd99b1ab8f5daa209da","0x3a58b5743bc8dd0952ef2d033b0a621f2b00814b","0xfae0094339e4c378aebdf8e1bfa1bfc3f74b0fd4","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xce2fbe6cfcc074e8097795e0592df436f596c7b2","0xe9dde0578dd39cbf91b193b35abba1ee056326b2","0xaa704fe1277431015f48231909f15c958fb74940","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0x07d62e9757586ed408250e4aa1e4c990e57f8587","0xbbb6ad1762c2d5644c0ddb4f3c537c8d68799835","0xa5e038efad97dc0cf7119015ae1e9387f52d27a3","0xff02d1084f492de9a7f2d026c39ecb17eb93e77f","0x07c0fe5b1857700535f5a610ba78a831e66588ea","0x94cac07ee73ccab24240fbb8942e8a103aa10581","0x49e118c663e3d7927b80201810b84208f26a244b","0x32803e14a5bd3e782502cec677b73db7ff65200d","0x8b5ab27fc6e1959085ad33a8ec6f20badcff5622","0x2f5b3db705f44f3e4c19896ff873e2c338f01075","0x93771440ee914ce604f10977f655bbcb1008b2b3","0xb36c0945058388bdcf1b7e3745ba2384cafe8ff6","0x52e3920a9a1e4f51b750331675725da25c9eeeb8","0x62e51c95d4dad7daac96705911c206f2a9677453","0x308a4126e20c557beaaca3297d43484d788bd9af","0xb20d5f33bfd9044fb884a0553b49621b8776e89d","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0x01f8f947d12d4408001e0bd3d66fcb01dec9f2fb","0xec40655a6b7300a711b3133900921229b0ff2727","0x02aeb91289504e7ebba064471eb64cd4757d7aa6","0x69279bdd8fd203155a863dc904d28a52a7247715","0x38598f6765471f3128ce90b94570282be49cc27d","0x3f0e58eb1e93a00902b8a22b23731d0ea0e049f4","0x91ef622e7f3378ba99451ba1361b9ab656708999","0x3a0df50e161dc213b353dd8c75de8b709662821e","0x0f9a0ad7d90e74437c7a2b6dc3b2d4b2a73052c3","0x54503e0ce66c2227de1ea11b49b6f1ae7d8d65b5","0xd442afcb44fe095e9315161a222fba53e17ce2a8","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0xd964d7e9e3bdfd1d9928877347dbbe29cf39348c","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x0d6fadf6be04ccc400f9813d12a35ad4bf3a475b","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0x703cc5f0105de4527a5c04f4b38eaa6722ec3764","0xc68a4c311f0ab2a731268d08bfa0442eaf11372b","0x3b3ee91d34f0dbd27db80a35dbf6dc2245ad5f00","0xb57980f93881da0950fd01d215c11bd3b411ea8f","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0xa2e20d2b48067170cc0bea7c613482ec1ebde026","0xbb8153590646f39c25ef2285d9d56805733f47cd","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0x2f65330c88181564e2208de9f776c8799223a633","0x9d0be5f4ce3ed8a3b25d8a853664e86887b65024","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x24565a59e87cad9ebf7b1a7dc2aa25c171a539ce","0x2418fdf0f0d3e47b36d0401f523e502bc8c445c3","0x3f19b109adaba9a0df5469e00aa3a2eaff8ed171","0x4b0f3beaade897299682c30ce1bc9585d82888eb","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x0f36b2709ac8056a4e33738b52c78e92f4d728a9","0xae8ab67bd43326e424b649050d33b704288af1b5","0xaf5b23630c79a41c059e441d0e1d9ad5ef0f5d2d","0xd8c0d5523824994d43743f94dab72f16b306b248","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0x44845a1a1244efc6a37b209526ba4727f4cc5119","0xd256c2324f3e36d06f5e645d309434b185c58e7f","0x8c9e5391866e6e05d2d884e7970f0f0793277880","0x73a17a5e87177a1b518d49795b71e13059ae8178","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0xa31e64b8bca66a7a30540e5c6b40e9d4dad2ccfd","0xe76e1015997c1913303341f9b19a577114147563","0x07043ac357e1241aaa7b112f55d47b17fc3bf396","0xc777910af1ad444f03c16e3dcc1a8e0156b61f04","0x204074efcc1440174d6804c278af8df7303baace","0x988967cf4f458a4ab11c868d3729d7b05f65b20d","0x32743f06d20ff8965e8ffef3eee1dc5432668e33","0xfdd7399a5804c0f1ab634b61669a34b70b44a8dd","0x1f4180b058afe5aeed78d1109ba8dbcc0e90de46","0x3972c0ac366b274186b469485c32c400fbd1640f","0xb7515a3b07df4e54becbc6de8e5ea17170395bf1","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x7656b7e94d8f7d548a7e054b00f54ad430543972","0x6673388f194e2648e9a6ca07df1bd640a067f777","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0x63091650e50bbdfc2e4e54a277aeff020e294dc0","0x677fcf23024e4685a6b6a8447c486ff649d623ad","0x610155a0b786d9b432528a48005962fbcd7e9b90","0xa8a0e087edc88b37074ae3cfcd39ca18c2ae8f6a","0x2b40a1f3caabc1eb4b716e09c1b61fbc26649e78","0xd1e46f632a5237c939d47a4ea8b598814879325a","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0xd9f4da967fab291e475795c877504450c26de279","0x07beedcc2d7b0ad58ecabc0a167664ba148b8abd","0xcb443a5f156b94dbc83ffbb25cba8099bf183cab","0xcd328a00e03b90f747b3bc40740074eef3a8051a","0xedcbb47c5ef9f0bea30ce315f665e6a0d5782f92","0x278d11a6fa0cb922474cdd173e7d6099b86e4388","0xc5d8a23964d010fe88414262b62a91a6d5d4507d","0x173f2bf207366fe5aa09e43425eed532f190b64a","0x76a014267b1d9e375d4a84554504e366c7de1167","0x756b49da56257a73b487ba56d0b580410a8719a5","0x34d6562861cee3d99f72a693b11a6c6c3459916f","0xb847f453ec067377214f90a20826afddf0319eb2","0x8c39df93724f9057f083434e8b954370c7a830ed","0xe5641cbc73955b268995c6e4887fc196163b2b0c","0x6e8f37ee5915749afc8b291173837fd132099837","0x45236f6fddbd29cab70e9ffed2c373459463c1ae","0xf0f2b3946719982c8db9b5ed0e40794af6b17add","0x1009df820facb5d676d485669d06d290e5580bfd","0x2cb6efa507ec89be47c8562c7ba453fb6e2b26e5","0xac56fc694e06e536a384d273bfc318650cb135f6","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0xde90ee0e5bb807775528e6ba2c057eed9f29d261","0xe90d5ba82ef7a7d15997f8e12482e0bca6d1e979","0xad448137d170b0153018e470afa6b96357d6107f","0x5539f8cb52c1813e70daa65cc70f6defa6ab73bb","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x7f825692dfae7107d16bf4e2071fe06b1bc72297","0xa3a1c3c360979e037a478543b607977313baa922","0x84aaaf0294c36551042c6681dfa0838fb2c3a66c","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x8418626867183397355afb3eba16442c1ecc23c9","0x3bfa8273f00e1d7b3821b12a41cb97e00c8f58e1","0x5fbc2d71646936dcc2e9af3cd7e2ae20bf8e9f99","0xce5600f9ac619677ca3e0853d1fddd067919b3fd","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x417e75cda2dc78efacbc9a4236738541e45430a6","0x4f4e2ca98489235a5442f6b7ab80731bd64f7d27","0x72b048dfbee2237708440b32394d84532e1e6814","0x5ed8f096aea95650391a995585f86310434f0696","0xbc8cfd052d1419dd9674cf177948c8965454bd58","0xae49cb1b2fe6cfc29e6ef7c3c2484d4ecec99fe5","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0x3b4decd667b2d64ef39622e609df010999287d52","0xfe55bbb18d6fd8a911a489e61d6d13d74b2d4a31","0x92f8bffd6c1d5695721ecb0ba63523710990a59b","0xcca784a4e59e9cf4553dc817f106ce118eab7933","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0x2b185c762f6fb49a07116ec06b238b58fe2bec53","0x209329b630ee09a04b37b168970eb66f422a2025","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0x982fa6e21054217c3b154070af7616935b1a0576","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0x87cf69467e239f29ff880cf7f0d1b3a07b1bbc08","0x0a5eee35105fdb4090347b27fcb27960d5c9120f","0xb7ccd311a970388ceeaa2f55c427889242b297d6","0x6baef8ad4634a93a6c002abc06d57020701d717c","0xc603f01630d07f3b3ffe816a3f8b674d3603a1e8","0x09b0a591c4f1337d79cb2a51423f8f07bb2aca11","0xdb0db3121acf6c0b92d268e29a67f11c98afe8f4","0x1bcca5b62a017a81b51882b0f2d30f15e4671179","0x5599746948950205b229ba683824652cfb504e5d","0xa55378cb5bdd084855ac6a504d55ea7c0c0f30b0","0xd8cb840fb68154297ea267b110acf2b8327ef953","0xba012eb523aa19ebb0bde8b9aba0435cd3c4bd53","0xc3df9a80dcd82d064e46f0adb153eb4c5f5b8cf3","0x6c1a321bdc2ea45b64823a77524932d4b361a48a","0xf80e38a963b2d8cc939bfa7f2117874f6332c14a","0xe55fc55d13b50dc51694985ee74be7e3930e1131","0x522558e26df98200e0f9031e246d47315c5086d9","0x2fe09418301e5629df6034c9d5fdedbde6605df9","0xdce642410f27428c4cd86d8a9ddf6f2fdbb0349c","0x3ece050f5b0deb05d3516bead31ad511cec6ebb0","0xdc49bea6f527e7c889969c9380c5232cea90a3ed","0xc2ff0c70067a62a208ec6763a153f1eacc3146a6","0x30541d093cb67e4c4e4cbd78d29eb0c172c3cda7","0x03974898b0952c37cdac839f3e9384110f2ddfcf","0xea6117e46dc4bace7210a03b51804b46401debbd","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x524fb57fdebe36acd8927144fcde603dd30e7a3a","0x533a8dc0cc627c944aeefa393e3f0fb2f42936c1","0x23e194ba963267616b37503a4bbb9e08e99679a3","0x9f1cddb53f101f15b1bfb8251191979bb18262d1","0x55d1381475e035ba45a3f26afc762e5a37cf4c90","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0xaacafcb1a09e7dee5afe3537e0d44915167b86ef","0x8e9a2cea15733ddc69e1021f78c74b9aba534674","0x38395ccb0173ba1fc49e159efd6215ce6016644e","0xd8b2b7f42873f111348c835563e26865474337db","0x2a4b4d3ee28eec116dc523f1996e94c6cdbd6fea","0x61559a000912997cc40ae3127eb3757a16e0cac6","0xfe2cc1b99c0997a416ccad803c5f205b8f1b49fa","0x52ff38f0546972047b4be3e19ea7bfd8bd79e205","0xa95b7239594929b61f2e0a8987838ac9ca350aaa","0x71bb1e72ca66ff81a7c23be97248df303ee4defe","0x1fde76e16ca451579ef2a5014c3ed250465c552a"] \ No newline at end of file From 8054e215dec047e0a15efeaf61623ff7757d65f5 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Mon, 4 Dec 2023 19:25:20 +0100 Subject: [PATCH 17/34] release: season 6 and mining pass decay --- .github/workflows/automated_claim_cron.yml | 5 +- README.md | 2 +- deployments/AuthorizationFacet.json | 6 +- deployments/BoostFacet.json | 6 +- deployments/ClaimFacet.json | 6 +- deployments/DepositFacet.json | 6 +- deployments/DiamondInit.json | 6 +- deployments/DiamondManagerFacet.json | 55 ++++++++++++++++++- deployments/FeeCollectorFacet.json | 6 +- deployments/MiningPassFacet.json | 30 +++++++++- deployments/PausationFacet.json | 6 +- deployments/UnlockFacet.json | 6 +- deployments/WithdrawFacet.json | 6 +- hardhat.config.ts | 3 + scripts/deploy/gelato-resolver.ts | 10 +++- scripts/upgradeDiamond.ts | 23 +++----- src/GelatoResolver.sol | 9 ++- src/facets/DiamondManagerFacet.sol | 19 ++++++- src/libraries/AppStorage.sol | 7 ++- tasks/automatedClaim.ts | 6 ++ tasks/data/season-depositors-avalanche-5.json | 1 + tasks/season.ts | 26 ++++----- utils/deployContract.ts | 1 + utils/index.ts | 16 +++--- 24 files changed, 184 insertions(+), 83 deletions(-) create mode 100644 tasks/data/season-depositors-avalanche-5.json diff --git a/.github/workflows/automated_claim_cron.yml b/.github/workflows/automated_claim_cron.yml index 6c58fbd..ca624da 100644 --- a/.github/workflows/automated_claim_cron.yml +++ b/.github/workflows/automated_claim_cron.yml @@ -33,7 +33,4 @@ jobs: run: yarn hardhat compile - name: Execute Automated Claim task - run: yarn hardhat automatedClaim --network avalanche --load-from-subgraph true - - - name: Start a new season - run: yarn hardhat run scripts/startSeason.ts --network avalanche + run: yarn hardhat automated-claim:all --network avalanche --load-from-subgraph true diff --git a/README.md b/README.md index 950f4b4..c68904f 100644 --- a/README.md +++ b/README.md @@ -38,5 +38,5 @@ For each Deposit and Unlock action, we update the total points accumulated in a ### Commands -āÆ yarn hardhat automated-claim:all --network avalanche --load-from-subgraph true --season-id 4 +āÆ yarn hardhat automated-claim:all --network avalanche --load-from-subgraph true āÆ yarn hardhat run --network avalanche scripts/startSeason.ts diff --git a/deployments/AuthorizationFacet.json b/deployments/AuthorizationFacet.json index c66b25f..804ca6c 100644 --- a/deployments/AuthorizationFacet.json +++ b/deployments/AuthorizationFacet.json @@ -194,8 +194,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea264697066735822122001d094055be34e4e80336735fbf2b134bd831fe62d3702c458baa78357a919de64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea264697066735822122001d094055be34e4e80336735fbf2b134bd831fe62d3702c458baa78357a919de64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea26469706673582212207e55df4c6a799bb735eed834578ec7e5a223f20a8a78cff7f94860ef03170a8a64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea26469706673582212207e55df4c6a799bb735eed834578ec7e5a223f20a8a78cff7f94860ef03170a8a64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -204,6 +204,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x8560EAb07797Eda7FcdeEbc158689dAD58bF75BC" + "address": "0x43fCDF0C14D822D934410c6a263be1CAd5250494" } } \ No newline at end of file diff --git a/deployments/BoostFacet.json b/deployments/BoostFacet.json index 9464016..8ac5936 100644 --- a/deployments/BoostFacet.json +++ b/deployments/BoostFacet.json @@ -272,8 +272,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106fc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122084bbd78e97a6a975f8ef4c09d30f99c05771ce48d6e5319f48d0d7ad1616b76d64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122084bbd78e97a6a975f8ef4c09d30f99c05771ce48d6e5319f48d0d7ad1616b76d64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106fc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220cb28b36e6db4d13e4f544fe14b20f2be862c0aba71a4448410e07ee1b23fba8964736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220cb28b36e6db4d13e4f544fe14b20f2be862c0aba71a4448410e07ee1b23fba8964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -282,6 +282,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x647846e8DD579AE64Ec793B1014639865CA654E0" + "address": "0x238AfcBcf6dCE8Cf25866Dc0b9e2Ff1d26fcc6f2" } } \ No newline at end of file diff --git a/deployments/ClaimFacet.json b/deployments/ClaimFacet.json index 934181b..c0c3aad 100644 --- a/deployments/ClaimFacet.json +++ b/deployments/ClaimFacet.json @@ -305,8 +305,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220a573279b5fe1ae2a4fe8b2321811757866ca06250cbd887d4595e05f94ff93e264736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220b6e3b0b4efe99c7c1e23cba5dd284de2f4bed31e1ac251f8008a649cf8db75f864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220b6e3b0b4efe99c7c1e23cba5dd284de2f4bed31e1ac251f8008a649cf8db75f864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -315,6 +315,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xF8C0bb9FA052896429461ab3E5d4A3bF8c3C7Cb9" + "address": "0xB39546d45f509957909d99D6619FEA99EC348B07" } } \ No newline at end of file diff --git a/deployments/DepositFacet.json b/deployments/DepositFacet.json index 5d78034..bc7d179 100644 --- a/deployments/DepositFacet.json +++ b/deployments/DepositFacet.json @@ -223,8 +223,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220ef0cdfd7fb7dead5f5b2a4e0f774e8588944539bad1092ecee93d433e6b44feb64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220ef0cdfd7fb7dead5f5b2a4e0f774e8588944539bad1092ecee93d433e6b44feb64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220daca2ccc202a76aa7e1a3ca25e0683084e749e07e62371d8ab3a668007027ae264736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220daca2ccc202a76aa7e1a3ca25e0683084e749e07e62371d8ab3a668007027ae264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -233,6 +233,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x93D0de9AE7213113Cc0D822Cf4d7589200675300" + "address": "0x52Fe9aB72253a29ec6d9148EE2B1de7141ec5B5e" } } \ No newline at end of file diff --git a/deployments/DiamondInit.json b/deployments/DiamondInit.json index 3bc5a24..e4531e8 100644 --- a/deployments/DiamondInit.json +++ b/deployments/DiamondInit.json @@ -259,8 +259,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610edd806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806340a7d6b214610030575b600080fd5b610d6a61003e366004610de6565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60209081527f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811660019081179092557ff97e938d8af42f52387bb74b8b526fda8f184cc2aa534340a8d75a88fbecc77580548216831790557f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580548216831790557f7f5828d00000000000000000000000000000000000000000000000000000000060009081527f5622121b47b8cd0120c4efe45dd5483242f54a3d49bd7679be565d47694918c38054909216831790915560808401516018805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825560408781015160178054918616918416919091179055606088015160168054918616918416919091178155888801516015805491871691851691909117905588516006908155600789526101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f781905560058089526105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355560e08c015160098054808d018255818c527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9081018054938c16938a16939093179092556101008e0180518254808f01845584018054918d16918b169190911790556101208f01518254808f01909355919092018054918b16918916919091179055600a8054808d018255611f407fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8918201558154808e01835581018590558154808e018355018490557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88b9055621e84807fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c819055622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72055623d09007fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd7819055600b9290925560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a4557fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a8496909655601c7f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd0557f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e699909955601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259509890985560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a557f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469095909555605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f055600389527fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd21498b5260917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069559351600e8054808c018255818b527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9081018054938b169389169390931790925560a08d01518154808d01835583018054918b1691891691909117905560c08d01518154808d019092559101805491909816951694909417909555600f805480890182556117707f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802918201558154808a018355610bb890820155815498890190915596909601919091556011958690527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78490556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55255620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628557f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff949094557f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f17558555918152627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e7557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9262e4e1c092909190815260200190815260209081016000908120929092556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f5563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa3556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b556012905269010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb955600a81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e5560a083015160138054600180820183558285527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09091820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff968716179091556101008801518454808401865584018054831691871691909117905560c09097015183548083019094559290910180549096169190921617909355601480548085018255918190526119647fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec9283015580548085018255610bb890830155805493840190556101f492019190915550565b005b604051610140810167ffffffffffffffff81118282101715610db7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de157600080fd5b919050565b60006101408284031215610df957600080fd5b610e01610d6c565b82358152610e1160208401610dbd565b6020820152610e2260408401610dbd565b6040820152610e3360608401610dbd565b6060820152610e4460808401610dbd565b6080820152610e5560a08401610dbd565b60a0820152610e6660c08401610dbd565b60c0820152610e7760e08401610dbd565b60e0820152610100610e8a818501610dbd565b90820152610120610e9c848201610dbd565b90820152939250505056fea26469706673582212205c8c19d8c8d9e19f652018defd3cbc015138736944a5a7cc9c383fb4ce9986fb64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806340a7d6b214610030575b600080fd5b610d6a61003e366004610de6565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60209081527f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811660019081179092557ff97e938d8af42f52387bb74b8b526fda8f184cc2aa534340a8d75a88fbecc77580548216831790557f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580548216831790557f7f5828d00000000000000000000000000000000000000000000000000000000060009081527f5622121b47b8cd0120c4efe45dd5483242f54a3d49bd7679be565d47694918c38054909216831790915560808401516018805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825560408781015160178054918616918416919091179055606088015160168054918616918416919091178155888801516015805491871691851691909117905588516006908155600789526101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f781905560058089526105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355560e08c015160098054808d018255818c527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9081018054938c16938a16939093179092556101008e0180518254808f01845584018054918d16918b169190911790556101208f01518254808f01909355919092018054918b16918916919091179055600a8054808d018255611f407fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8918201558154808e01835581018590558154808e018355018490557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88b9055621e84807fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c819055622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72055623d09007fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd7819055600b9290925560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a4557fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a8496909655601c7f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd0557f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e699909955601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259509890985560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a557f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469095909555605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f055600389527fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd21498b5260917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069559351600e8054808c018255818b527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9081018054938b169389169390931790925560a08d01518154808d01835583018054918b1691891691909117905560c08d01518154808d019092559101805491909816951694909417909555600f805480890182556117707f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802918201558154808a018355610bb890820155815498890190915596909601919091556011958690527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78490556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55255620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628557f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff949094557f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f17558555918152627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e7557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9262e4e1c092909190815260200190815260209081016000908120929092556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f5563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa3556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b556012905269010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb955600a81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e5560a083015160138054600180820183558285527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09091820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff968716179091556101008801518454808401865584018054831691871691909117905560c09097015183548083019094559290910180549096169190921617909355601480548085018255918190526119647fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec9283015580548085018255610bb890830155805493840190556101f492019190915550565b005b604051610140810167ffffffffffffffff81118282101715610db7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de157600080fd5b919050565b60006101408284031215610df957600080fd5b610e01610d6c565b82358152610e1160208401610dbd565b6020820152610e2260408401610dbd565b6040820152610e3360608401610dbd565b6060820152610e4460808401610dbd565b6080820152610e5560a08401610dbd565b60a0820152610e6660c08401610dbd565b60c0820152610e7760e08401610dbd565b60e0820152610100610e8a818501610dbd565b90820152610120610e9c848201610dbd565b90820152939250505056fea26469706673582212205c8c19d8c8d9e19f652018defd3cbc015138736944a5a7cc9c383fb4ce9986fb64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610edd806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806340a7d6b214610030575b600080fd5b610d6a61003e366004610de6565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60209081527f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811660019081179092557ff97e938d8af42f52387bb74b8b526fda8f184cc2aa534340a8d75a88fbecc77580548216831790557f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580548216831790557f7f5828d00000000000000000000000000000000000000000000000000000000060009081527f5622121b47b8cd0120c4efe45dd5483242f54a3d49bd7679be565d47694918c38054909216831790915560808401516018805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825560408781015160178054918616918416919091179055606088015160168054918616918416919091178155888801516015805491871691851691909117905588516006908155600789526101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f781905560058089526105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355560e08c015160098054808d018255818c527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9081018054938c16938a16939093179092556101008e0180518254808f01845584018054918d16918b169190911790556101208f01518254808f01909355919092018054918b16918916919091179055600a8054808d018255611f407fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8918201558154808e01835581018590558154808e018355018490557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88b9055621e84807fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c819055622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72055623d09007fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd7819055600b9290925560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a4557fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a8496909655601c7f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd0557f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e699909955601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259509890985560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a557f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469095909555605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f055600389527fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd21498b5260917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069559351600e8054808c018255818b527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9081018054938b169389169390931790925560a08d01518154808d01835583018054918b1691891691909117905560c08d01518154808d019092559101805491909816951694909417909555600f805480890182556117707f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802918201558154808a018355610bb890820155815498890190915596909601919091556011958690527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78490556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55255620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628557f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff949094557f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f17558555918152627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e7557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9262e4e1c092909190815260200190815260209081016000908120929092556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f5563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa3556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b556012905269010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb955600a81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e5560a083015160138054600180820183558285527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09091820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff968716179091556101008801518454808401865584018054831691871691909117905560c09097015183548083019094559290910180549096169190921617909355601480548085018255918190526119647fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec9283015580548085018255610bb890830155805493840190556101f492019190915550565b005b604051610140810167ffffffffffffffff81118282101715610db7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de157600080fd5b919050565b60006101408284031215610df957600080fd5b610e01610d6c565b82358152610e1160208401610dbd565b6020820152610e2260408401610dbd565b6040820152610e3360608401610dbd565b6060820152610e4460808401610dbd565b6080820152610e5560a08401610dbd565b60a0820152610e6660c08401610dbd565b60c0820152610e7760e08401610dbd565b60e0820152610100610e8a818501610dbd565b90820152610120610e9c848201610dbd565b90820152939250505056fea2646970667358221220821677b2b9063f7f6cad4daf73c576216f4ed8330720fe6d7c61324e013b721d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806340a7d6b214610030575b600080fd5b610d6a61003e366004610de6565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131f60209081527f699d9daa71b280d05a152715774afa0a81a312594b2d731d6b0b2552b7d6f69f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090811660019081179092557ff97e938d8af42f52387bb74b8b526fda8f184cc2aa534340a8d75a88fbecc77580548216831790557f65d510a5d8f7ef134ec444f7f34ee808c8eeb5177cdfd16be0c40fe1ab43369580548216831790557f7f5828d00000000000000000000000000000000000000000000000000000000060009081527f5622121b47b8cd0120c4efe45dd5483242f54a3d49bd7679be565d47694918c38054909216831790915560808401516018805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825560408781015160178054918616918416919091179055606088015160168054918616918416919091178155888801516015805491871691851691909117905588516006908155600789526101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f781905560058089526105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc9355560e08c015160098054808d018255818c527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af9081018054938c16938a16939093179092556101008e0180518254808f01845584018054918d16918b169190911790556101208f01518254808f01909355919092018054918b16918916919091179055600a8054808d018255611f407fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8918201558154808e01835581018590558154808e018355018490557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88b9055621e84807fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c819055622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd72055623d09007fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd7819055600b9290925560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a4557fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a8496909655601c7f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd0557f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e699909955601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259509890985560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a557f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469095909555605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f055600389527fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd21498b5260917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069559351600e8054808c018255818b527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9081018054938b169389169390931790925560a08d01518154808d01835583018054918b1691891691909117905560c08d01518154808d019092559101805491909816951694909417909555600f805480890182556117707f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802918201558154808a018355610bb890820155815498890190915596909601919091556011958690527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78490556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55255620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628557f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff949094557f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f17558555918152627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e7557fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c9262e4e1c092909190815260200190815260209081016000908120929092556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f5563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa3556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b556012905269010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb955600a81527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e5560a083015160138054600180820183558285527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09091820180547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff968716179091556101008801518454808401865584018054831691871691909117905560c09097015183548083019094559290910180549096169190921617909355601480548085018255918190526119647fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec9283015580548085018255610bb890830155805493840190556101f492019190915550565b005b604051610140810167ffffffffffffffff81118282101715610db7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de157600080fd5b919050565b60006101408284031215610df957600080fd5b610e01610d6c565b82358152610e1160208401610dbd565b6020820152610e2260408401610dbd565b6040820152610e3360608401610dbd565b6060820152610e4460808401610dbd565b6080820152610e5560a08401610dbd565b60a0820152610e6660c08401610dbd565b60c0820152610e7760e08401610dbd565b60e0820152610100610e8a818501610dbd565b90820152610120610e9c848201610dbd565b90820152939250505056fea2646970667358221220821677b2b9063f7f6cad4daf73c576216f4ed8330720fe6d7c61324e013b721d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -269,6 +269,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x14aA4bD1F9066091e13a27A290caC8aBb8D4E39c" + "address": "0x66BBAF29A1EF0a7145959c6551525DE4b1FBBB33" } } \ No newline at end of file diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index f755fab..68ec2cc 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -2894,6 +2894,16 @@ "name": "DiamondManagerFacet__Invalid_Input", "type": "error" }, + { + "inputs": [], + "name": "DiamondManagerFacet__NotAuthorized", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__NotGelatoExecutor", + "type": "error" + }, { "inputs": [], "name": "DiamondManagerFacet__Not_Owner", @@ -3542,6 +3552,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonIsClaimed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -4088,6 +4117,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "setGelatoExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -4101,6 +4143,13 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "setSeasonClaimed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -4231,8 +4280,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612839806100206000396000f3fe608060405234801561001057600080fd5b50600436106102f45760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e8566118146108ac578063f55484ac146108bf578063fca7129f146108d257600080fd5b8063dbcbb9a314610886578063df40958914610899578063e5ea3fdc1461046957600080fd5b8063d18b3d90116100c8578063d18b3d90146107d5578063d2b291d11461082d578063d822bb871461087357600080fd5b8063bc67f25f14610788578063c4882ed71461079057600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106e3578063b3afe49614610728578063b5e007901461077557600080fd5b80639d6c100f14610667578063a07693eb1461068b578063ae178fda1461069e57600080fd5b806395e2de331161017657806395e2de331461060f5780639a56f4e4146105065780639d0b7d5a1461065457600080fd5b80638a91af17146105e95780638aee8127146105fc57600080fd5b8063560cf6f51161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610564578063820d0ad7146105d857806385e3f997146105e057600080fd5b806366e017c3146105065780636bb70f6a146105295780636e06c64d1461055157600080fd5b80635c1624ab1161022f5780635c1624ab1461048c5780635e75a6c31461049f57806361ccdfba146104a757600080fd5b8063560cf6f514610456578063562b71531461046957600080fd5b80633361e38b116102ac5780634784f6bc116102865780634784f6bc146103ee5780634a477b14146104015780634dc0cd2b1461041457600080fd5b80633361e38b146103a557806336a4a844146103b85780633d55b37b146103cb57600080fd5b8063275b629e116102dd578063275b629e146103415780632c5682eb146103545780633175cbe81461037457600080fd5b80630c4ed799146102f95780630c7d72a71461030e575b600080fd5b61030c6103073660046122b9565b6108f5565b005b61032161031c3660046122b9565b610a23565b604080519384526020840192909252908201526060015b60405180910390f35b61030c61034f3660046122d4565b610beb565b6103676103623660046122b9565b610caf565b60405161033891906122f6565b61039761038236600461237d565b60009081526004602052604090206005015490565b604051908152602001610338565b61030c6103b33660046124a3565b610dc2565b61030c6103c6366004612563565b610f55565b6103976103d936600461237d565b60009081526004602052604090206002015490565b61030c6103fc36600461237d565b6110b7565b61039761040f366004612599565b61115a565b610397610422366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61030c6104643660046122d4565b611194565b61039761047736600461237d565b60009081526004602052604090206003015490565b61030c61049a3660046124a3565b6112ce565b600254610397565b6104f16104b5366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610338565b61039761051436600461237d565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610338565b61030c61055f3660046124a3565b6114b2565b61057761057236600461237d565b611638565b6040516103389190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105776116ed565b61039761271081565b61030c6105f736600461237d565b6117a4565b61030c61060a3660046122b9565b61188b565b61039761061d366004612599565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030c6106623660046122d4565b611991565b61039761067536600461237d565b6000908152600460208190526040909120015490565b610367610699366004612599565b611a4f565b6103976106ac366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103976106f1366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104f1610736366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030c6107833660046125c3565b611b61565b61030c611bed565b61039761079e366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61081d6107e3366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610338565b61039761083b3660046125ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b610397610881366004612622565b611d11565b61030c6108943660046122d4565b611d5c565b61030c6108a736600461237d565b611e11565b61030c6108ba3660046122b9565b611f5c565b61030c6108cd3660046122b9565b612088565b6103976108e036600461237d565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610943576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109b3576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b9d9190612674565b835160e0840151909850909150610bb682612710612687565b610bc0919061269e565b9550612710868360600151610bd59190612687565b610bdf919061269e565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610ca39084815260200190565b60405180910390a25050565b610d0e604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e32576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e6d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610eb357828181518110610e8c57610e8c6126d9565b602002602001015182610e9f9190612674565b915080610eab81612708565b915050610e71565b506127108114610eef576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610f029060099060208601906121b6565b508151610f1690600a906020850190612240565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f48929190612740565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fc5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fe857506000818152600460205260409020600201544211155b1561101f576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102a816001612674565b6002819055600081815260046020526040902090815542600182015561105660ff8416620151806127d1565b6110659062ffffff1642612674565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611127576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061122757506000818152600460205260409020600201544211155b1561125e576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611269816001612674565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906110a99087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461133e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611379576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611485576000828152600560205260408120865182908890859081106113ae576113ae6126d9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000858381518110611406576114066126d9565b60200260200101519050816000015460000361144e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461145d82826127f0565b6114679087612674565b6003909301919091555092508061147d81612708565b915050611381565b50600081815260046020526040812060070180548492906114a79084906127f0565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611522576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461155d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156115a35782818151811061157c5761157c6126d9565b60200260200101518261158f9190612674565b91508061159b81612708565b915050611561565b5061271081146115df576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516115f290600e9060208601906121b6565b50815161160690600f906020850190612240565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f48929190612740565b61168060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61173560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611850576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166118d9576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611949576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a01576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611a3d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611aae604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bd1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611cc957600080fd5b505af1158015611cdd573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611d559190612674565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611dcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610ca39084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e81576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611ea457506000818152600460205260409020600201544211155b15611edb576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ee8826001612674565b60028190556000818152600460205260409020818155426001820181905591925090611f17906220f580612674565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016110a9565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612019576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166120d6576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612146576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612230579160200282015b8281111561223057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906121d6565b5061223c92915061227b565b5090565b828054828255906000526020600020908101928215612230579160200282015b82811115612230578251825591602001919060010190612260565b5b8082111561223c576000815560010161227c565b803573ffffffffffffffffffffffffffffffffffffffff811681146122b457600080fd5b919050565b6000602082840312156122cb57600080fd5b611d5582612290565b600080604083850312156122e757600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516123758285018215159052565b505092915050565b60006020828403121561238f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561240c5761240c612396565b604052919050565b600067ffffffffffffffff82111561242e5761242e612396565b5060051b60200190565b600082601f83011261244957600080fd5b8135602061245e61245983612414565b6123c5565b82815260059290921b8401810191818101908684111561247d57600080fd5b8286015b848110156124985780358352918301918301612481565b509695505050505050565b600080604083850312156124b657600080fd5b823567ffffffffffffffff808211156124ce57600080fd5b818501915085601f8301126124e257600080fd5b813560206124f261245983612414565b82815260059290921b8401810191818101908984111561251157600080fd5b948201945b838610156125365761252786612290565b82529482019490820190612516565b9650508601359250508082111561254c57600080fd5b5061255985828601612438565b9150509250929050565b6000806040838503121561257657600080fd5b82359150602083013560ff8116811461258e57600080fd5b809150509250929050565b600080604083850312156125ac57600080fd5b6125b583612290565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561260257600080fd5b61260b83612290565b915061261960208401612290565b90509250929050565b6000806040838503121561263557600080fd5b8235915061261960208401612290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561118e5761118e612645565b808202811582820484141761118e5761118e612645565b6000826126d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361273957612739612645565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561278f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161275d565b5050508381038285015284518082528583019183019060005b818110156127c4578351835292840192918401916001016127a8565b5090979650505050505050565b62ffffff81811683821602808216919082811461237557612375612645565b8181038181111561118e5761118e61264556fea26469706673582212202f61e9354eda39d8d2bca93008a67b5dff155d52e0fac4c8786c2419cb26a69664736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102f45760003560e01c80638a91af1711610191578063bc67f25f116100e3578063dbcbb9a311610097578063e856611811610071578063e8566118146108ac578063f55484ac146108bf578063fca7129f146108d257600080fd5b8063dbcbb9a314610886578063df40958914610899578063e5ea3fdc1461046957600080fd5b8063d18b3d90116100c8578063d18b3d90146107d5578063d2b291d11461082d578063d822bb871461087357600080fd5b8063bc67f25f14610788578063c4882ed71461079057600080fd5b80639d6c100f11610145578063b15038791161011f578063b1503879146106e3578063b3afe49614610728578063b5e007901461077557600080fd5b80639d6c100f14610667578063a07693eb1461068b578063ae178fda1461069e57600080fd5b806395e2de331161017657806395e2de331461060f5780639a56f4e4146105065780639d0b7d5a1461065457600080fd5b80638a91af17146105e95780638aee8127146105fc57600080fd5b8063560cf6f51161024a57806366e017c3116101fe57806373ad27b0116101d857806373ad27b014610564578063820d0ad7146105d857806385e3f997146105e057600080fd5b806366e017c3146105065780636bb70f6a146105295780636e06c64d1461055157600080fd5b80635c1624ab1161022f5780635c1624ab1461048c5780635e75a6c31461049f57806361ccdfba146104a757600080fd5b8063560cf6f514610456578063562b71531461046957600080fd5b80633361e38b116102ac5780634784f6bc116102865780634784f6bc146103ee5780634a477b14146104015780634dc0cd2b1461041457600080fd5b80633361e38b146103a557806336a4a844146103b85780633d55b37b146103cb57600080fd5b8063275b629e116102dd578063275b629e146103415780632c5682eb146103545780633175cbe81461037457600080fd5b80630c4ed799146102f95780630c7d72a71461030e575b600080fd5b61030c6103073660046122b9565b6108f5565b005b61032161031c3660046122b9565b610a23565b604080519384526020840192909252908201526060015b60405180910390f35b61030c61034f3660046122d4565b610beb565b6103676103623660046122b9565b610caf565b60405161033891906122f6565b61039761038236600461237d565b60009081526004602052604090206005015490565b604051908152602001610338565b61030c6103b33660046124a3565b610dc2565b61030c6103c6366004612563565b610f55565b6103976103d936600461237d565b60009081526004602052604090206002015490565b61030c6103fc36600461237d565b6110b7565b61039761040f366004612599565b61115a565b610397610422366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61030c6104643660046122d4565b611194565b61039761047736600461237d565b60009081526004602052604090206003015490565b61030c61049a3660046124a3565b6112ce565b600254610397565b6104f16104b5366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610338565b61039761051436600461237d565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610338565b61030c61055f3660046124a3565b6114b2565b61057761057236600461237d565b611638565b6040516103389190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105776116ed565b61039761271081565b61030c6105f736600461237d565b6117a4565b61030c61060a3660046122b9565b61188b565b61039761061d366004612599565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61030c6106623660046122d4565b611991565b61039761067536600461237d565b6000908152600460208190526040909120015490565b610367610699366004612599565b611a4f565b6103976106ac366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103976106f1366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104f1610736366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61030c6107833660046125c3565b611b61565b61030c611bed565b61039761079e366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61081d6107e3366004612599565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610338565b61039761083b3660046125ef565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b610397610881366004612622565b611d11565b61030c6108943660046122d4565b611d5c565b61030c6108a736600461237d565b611e11565b61030c6108ba3660046122b9565b611f5c565b61030c6108cd3660046122b9565b612088565b6103976108e036600461237d565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff8116610943576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109b3576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610b9d9190612674565b835160e0840151909850909150610bb682612710612687565b610bc0919061269e565b9550612710868360600151610bd59190612687565b610bdf919061269e565b96989597505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610ca39084815260200190565b60405180910390a25050565b610d0e604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610e32576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e6d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610eb357828181518110610e8c57610e8c6126d9565b602002602001015182610e9f9190612674565b915080610eab81612708565b915050610e71565b506127108114610eef576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610f029060099060208601906121b6565b508151610f1690600a906020850190612240565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610f48929190612740565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610fc5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610fe857506000818152600460205260409020600201544211155b1561101f576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61102a816001612674565b6002819055600081815260046020526040902090815542600182015561105660ff8416620151806127d1565b6110659062ffffff1642612674565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611127576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611204576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061122757506000818152600460205260409020600201544211155b1561125e576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611269816001612674565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906110a99087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461133e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611379576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611485576000828152600560205260408120865182908890859081106113ae576113ae6126d9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000858381518110611406576114066126d9565b60200260200101519050816000015460000361144e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461145d82826127f0565b6114679087612674565b6003909301919091555092508061147d81612708565b915050611381565b50600081815260046020526040812060070180548492906114a79084906127f0565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611522576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461155d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156115a35782818151811061157c5761157c6126d9565b60200260200101518261158f9190612674565b91508061159b81612708565b915050611561565b5061271081146115df576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516115f290600e9060208601906121b6565b50815161160690600f906020850190612240565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610f48929190612740565b61168060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61173560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611850576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166118d9576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611949576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a01576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611a3d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611aae604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bd1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611cc957600080fd5b505af1158015611cdd573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611d559190612674565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611dcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610ca39084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e81576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611ea457506000818152600460205260409020600201544211155b15611edb576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611ee8826001612674565b60028190556000818152600460205260409020818155426001820181905591925090611f17906220f580612674565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016110a9565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611fcc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612019576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166120d6576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612146576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612230579160200282015b8281111561223057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906121d6565b5061223c92915061227b565b5090565b828054828255906000526020600020908101928215612230579160200282015b82811115612230578251825591602001919060010190612260565b5b8082111561223c576000815560010161227c565b803573ffffffffffffffffffffffffffffffffffffffff811681146122b457600080fd5b919050565b6000602082840312156122cb57600080fd5b611d5582612290565b600080604083850312156122e757600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516123758285018215159052565b505092915050565b60006020828403121561238f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561240c5761240c612396565b604052919050565b600067ffffffffffffffff82111561242e5761242e612396565b5060051b60200190565b600082601f83011261244957600080fd5b8135602061245e61245983612414565b6123c5565b82815260059290921b8401810191818101908684111561247d57600080fd5b8286015b848110156124985780358352918301918301612481565b509695505050505050565b600080604083850312156124b657600080fd5b823567ffffffffffffffff808211156124ce57600080fd5b818501915085601f8301126124e257600080fd5b813560206124f261245983612414565b82815260059290921b8401810191818101908984111561251157600080fd5b948201945b838610156125365761252786612290565b82529482019490820190612516565b9650508601359250508082111561254c57600080fd5b5061255985828601612438565b9150509250929050565b6000806040838503121561257657600080fd5b82359150602083013560ff8116811461258e57600080fd5b809150509250929050565b600080604083850312156125ac57600080fd5b6125b583612290565b946020939093013593505050565b6000806000606084860312156125d857600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561260257600080fd5b61260b83612290565b915061261960208401612290565b90509250929050565b6000806040838503121561263557600080fd5b8235915061261960208401612290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561118e5761118e612645565b808202811582820484141761118e5761118e612645565b6000826126d4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361273957612739612645565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561278f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161275d565b5050508381038285015284518082528583019183019060005b818110156127c4578351835292840192918401916001016127a8565b5090979650505050505050565b62ffffff81811683821602808216919082811461237557612375612645565b8181038181111561118e5761118e61264556fea26469706673582212202f61e9354eda39d8d2bca93008a67b5dff155d52e0fac4c8786c2419cb26a69664736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50612996806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612416565b610954565b005b61034261033d366004612416565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612431565b610ccf565b61039061038b366004612416565b610d93565b6040516103599190612453565b6103c06103ab3660046124da565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124da565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f366004612600565b610ea6565b61032d6104223660046126c0565b611039565b6103f36104353660046124da565b60009081526004602052604090206002015490565b61032d6104583660046124da565b61119b565b6103f361046b3660046126f6565b61123e565b6103f361047e3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612431565b611278565b6103f36104d33660046124da565b60009081526004602052604090206003015490565b61032d6104f6366004612600565b611393565b6002546103f3565b61054d6105113660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124da565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb366004612600565b611577565b6105d36105ce3660046124da565b6116fd565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117b2565b6103f361271081565b61032d6106533660046124da565b611869565b61032d610666366004612416565b611950565b6103f36106793660046126f6565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612431565b611a56565b6103f36106d13660046124da565b6000908152600460208190526040909120015490565b6103906106f53660046126f6565b611b14565b6103f36107083660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612720565b611c26565b61032d611cb2565b6103f36107fa3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461274c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd36600461277f565b611db7565b61032d6108e0366004612431565b611e02565b61032d6108f33660046124da565b611eb7565b61032d610906366004612416565b612002565b61032d610919366004612416565b61212e565b61032d61092c366004612416565b61225c565b6103f361093f3660046124da565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127d1565b835160e0840151909850909150610c15826127106127e4565b610c1f91906127fb565b9550612710868360600151610c3491906127e4565b610c3e91906127fb565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612836565b602002602001015182610f8391906127d1565b915080610f8f81612865565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612313565b508151610ffa90600a90602085019061239d565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061289d565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127d1565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061292e565b6111499062ffffff16426127d1565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b601b5473ffffffffffffffffffffffffffffffffffffffff1633146112c9576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112ec57506000818152600460205260409020600201544211155b15611323576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132e8160016127d1565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611403576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461143e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561154a5760008281526005602052604081208651829088908590811061147357611473612836565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114cb576114cb612836565b602002602001015190508160000154600003611513576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611522828261294d565b61152c90876127d1565b6003909301919091555092508061154281612865565b915050611446565b506000818152600460205260408120600701805484929061156c90849061294d565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115e7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611622576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116685782818151811061164157611641612836565b60200260200101518261165491906127d1565b91508061166081612865565b915050611626565b5061271081146116a4576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116b790600e906020860190612313565b5081516116cb90600f90602085019061239d565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061289d565b61174560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117fa60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611915576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff811661199e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a0e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b02576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b73604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c96576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b601b5473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dfb91906127d1565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e72576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f27576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f4a57506000818152600460205260409020600201544211155b15611f81576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f8e8260016127d1565b60028190556000818152600460205260409020818155426001820181905591925090611fbd906220f5806127d1565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612072576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120bf576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661217c576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122cc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612333565b506123999291506123d8565b5090565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d5782518255916020019190600101906123bd565b5b8082111561239957600081556001016123d9565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241157600080fd5b919050565b60006020828403121561242857600080fd5b611dfb826123ed565b6000806040838503121561244457600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124d28285018215159052565b505092915050565b6000602082840312156124ec57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612569576125696124f3565b604052919050565b600067ffffffffffffffff82111561258b5761258b6124f3565b5060051b60200190565b600082601f8301126125a657600080fd5b813560206125bb6125b683612571565b612522565b82815260059290921b840181019181810190868411156125da57600080fd5b8286015b848110156125f557803583529183019183016125de565b509695505050505050565b6000806040838503121561261357600080fd5b823567ffffffffffffffff8082111561262b57600080fd5b818501915085601f83011261263f57600080fd5b8135602061264f6125b683612571565b82815260059290921b8401810191818101908984111561266e57600080fd5b948201945b8386101561269357612684866123ed565b82529482019490820190612673565b965050860135925050808211156126a957600080fd5b506126b685828601612595565b9150509250929050565b600080604083850312156126d357600080fd5b82359150602083013560ff811681146126eb57600080fd5b809150509250929050565b6000806040838503121561270957600080fd5b612712836123ed565b946020939093013593505050565b60008060006060848603121561273557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275f57600080fd5b612768836123ed565b9150612776602084016123ed565b90509250929050565b6000806040838503121561279257600080fd5b82359150612776602084016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127a2565b8082028115828204841417611272576112726127a2565b600082612831577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612896576128966127a2565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128ec57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ba565b5050508381038285015284518082528583019183019060005b8181101561292157835183529284019291840191600101612905565b5090979650505050505050565b62ffffff8181168382160280821691908281146124d2576124d26127a2565b81810381811115611272576112726127a256fea2646970667358221220cb6d6e249fe4e320a58c736e643b4c725535726eb6d3301e2bfb359284dc175564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612416565b610954565b005b61034261033d366004612416565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612431565b610ccf565b61039061038b366004612416565b610d93565b6040516103599190612453565b6103c06103ab3660046124da565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124da565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f366004612600565b610ea6565b61032d6104223660046126c0565b611039565b6103f36104353660046124da565b60009081526004602052604090206002015490565b61032d6104583660046124da565b61119b565b6103f361046b3660046126f6565b61123e565b6103f361047e3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612431565b611278565b6103f36104d33660046124da565b60009081526004602052604090206003015490565b61032d6104f6366004612600565b611393565b6002546103f3565b61054d6105113660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124da565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb366004612600565b611577565b6105d36105ce3660046124da565b6116fd565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117b2565b6103f361271081565b61032d6106533660046124da565b611869565b61032d610666366004612416565b611950565b6103f36106793660046126f6565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612431565b611a56565b6103f36106d13660046124da565b6000908152600460208190526040909120015490565b6103906106f53660046126f6565b611b14565b6103f36107083660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612720565b611c26565b61032d611cb2565b6103f36107fa3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461274c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd36600461277f565b611db7565b61032d6108e0366004612431565b611e02565b61032d6108f33660046124da565b611eb7565b61032d610906366004612416565b612002565b61032d610919366004612416565b61212e565b61032d61092c366004612416565b61225c565b6103f361093f3660046124da565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127d1565b835160e0840151909850909150610c15826127106127e4565b610c1f91906127fb565b9550612710868360600151610c3491906127e4565b610c3e91906127fb565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612836565b602002602001015182610f8391906127d1565b915080610f8f81612865565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612313565b508151610ffa90600a90602085019061239d565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061289d565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127d1565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061292e565b6111499062ffffff16426127d1565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b601b5473ffffffffffffffffffffffffffffffffffffffff1633146112c9576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112ec57506000818152600460205260409020600201544211155b15611323576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132e8160016127d1565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611403576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461143e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561154a5760008281526005602052604081208651829088908590811061147357611473612836565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114cb576114cb612836565b602002602001015190508160000154600003611513576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611522828261294d565b61152c90876127d1565b6003909301919091555092508061154281612865565b915050611446565b506000818152600460205260408120600701805484929061156c90849061294d565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115e7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611622576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116685782818151811061164157611641612836565b60200260200101518261165491906127d1565b91508061166081612865565b915050611626565b5061271081146116a4576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116b790600e906020860190612313565b5081516116cb90600f90602085019061239d565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061289d565b61174560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117fa60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611915576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff811661199e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a0e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b02576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b73604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c96576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b601b5473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dfb91906127d1565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e72576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f27576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f4a57506000818152600460205260409020600201544211155b15611f81576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f8e8260016127d1565b60028190556000818152600460205260409020818155426001820181905591925090611fbd906220f5806127d1565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612072576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120bf576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661217c576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122cc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612333565b506123999291506123d8565b5090565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d5782518255916020019190600101906123bd565b5b8082111561239957600081556001016123d9565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241157600080fd5b919050565b60006020828403121561242857600080fd5b611dfb826123ed565b6000806040838503121561244457600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124d28285018215159052565b505092915050565b6000602082840312156124ec57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612569576125696124f3565b604052919050565b600067ffffffffffffffff82111561258b5761258b6124f3565b5060051b60200190565b600082601f8301126125a657600080fd5b813560206125bb6125b683612571565b612522565b82815260059290921b840181019181810190868411156125da57600080fd5b8286015b848110156125f557803583529183019183016125de565b509695505050505050565b6000806040838503121561261357600080fd5b823567ffffffffffffffff8082111561262b57600080fd5b818501915085601f83011261263f57600080fd5b8135602061264f6125b683612571565b82815260059290921b8401810191818101908984111561266e57600080fd5b948201945b8386101561269357612684866123ed565b82529482019490820190612673565b965050860135925050808211156126a957600080fd5b506126b685828601612595565b9150509250929050565b600080604083850312156126d357600080fd5b82359150602083013560ff811681146126eb57600080fd5b809150509250929050565b6000806040838503121561270957600080fd5b612712836123ed565b946020939093013593505050565b60008060006060848603121561273557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275f57600080fd5b612768836123ed565b9150612776602084016123ed565b90509250929050565b6000806040838503121561279257600080fd5b82359150612776602084016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127a2565b8082028115828204841417611272576112726127a2565b600082612831577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612896576128966127a2565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128ec57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ba565b5050508381038285015284518082528583019183019060005b8181101561292157835183529284019291840191600101612905565b5090979650505050505050565b62ffffff8181168382160280821691908281146124d2576124d26127a2565b81810381811115611272576112726127a256fea2646970667358221220cb6d6e249fe4e320a58c736e643b4c725535726eb6d3301e2bfb359284dc175564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4241,6 +4290,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x0F464f551eA06d8f3B6ad7CaFF8c64Ad45aCD511" + "address": "0x2bD5c300979513c9Ef37160255791991574500EF" } } \ No newline at end of file diff --git a/deployments/FeeCollectorFacet.json b/deployments/FeeCollectorFacet.json index 431dcfc..719e32f 100644 --- a/deployments/FeeCollectorFacet.json +++ b/deployments/FeeCollectorFacet.json @@ -101,8 +101,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061075c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212202e86a0117a6f72c59942e70ba155dc4813c1b736032ffc6abb5f49fdc6cf63c264736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212202e86a0117a6f72c59942e70ba155dc4813c1b736032ffc6abb5f49fdc6cf63c264736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061075c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122048b53c3ef455a6ea4970f0bf630b74ee51be009e97a9643469fe0476f8a1bac964736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122048b53c3ef455a6ea4970f0bf630b74ee51be009e97a9643469fe0476f8a1bac964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -111,6 +111,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x50bFe2E90D4562624c478C86c85810442B71E239" + "address": "0x2883CC3FAE0B81e938d05428ffC9750Dac7Bb806" } } \ No newline at end of file diff --git a/deployments/MiningPassFacet.json b/deployments/MiningPassFacet.json index e40b79d..24d5295 100644 --- a/deployments/MiningPassFacet.json +++ b/deployments/MiningPassFacet.json @@ -260,6 +260,30 @@ "name": "MiningPassPurchase", "type": "event" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "getMiningPassFee", + "outputs": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -298,8 +322,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610784806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046105e7565b610139565b005b61012061005e366004610600565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b6040805192835260208301919091520160405180910390f35b600081815260116020908152604080832054601754600254808652600585528386203387529094529190932073ffffffffffffffffffffffffffffffffffffffff9091169190841580610190575080600901548511155b80610199575083155b156101d0576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098101546000908152601160205260408120546101ee908661066c565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561025d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610281919061067f565b10156102b9576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600201544210610303576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018690556103138161040b565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af115801561038c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b09190610698565b50853373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103fb91815260200190565b60405180910390a4505050505050565b60008060130180548060200260200160405190810160405280929190818152602001828054801561047257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610447575b505050505090506000806014018054806020026020016040519081016040528092919081815260200182805480156104c957602002820191906000526020600020905b8154815260200190600101908083116104b5575b5050505050905060008251905081518114610510576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105be57600061054086858481518110610533576105336106ba565b60200260200101516105c5565b9050806000601001600087858151811061055c5761055c6106ba565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081206017549094168152929052812080549091906105b09084906106e9565b909155505050600101610513565b5050505050565b60006127106105d483856106fc565b6105de9190610713565b90505b92915050565b6000602082840312156105f957600080fd5b5035919050565b60006020828403121561061257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105e1576105e161063d565b60006020828403121561069157600080fd5b5051919050565b6000602082840312156106aa57600080fd5b8151801515811461063657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156105e1576105e161063d565b80820281158282048414176105e1576105e161063d565b600082610749577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212202bedc241781571ab7fe4fd69a337154d94b9579ca6501067a80dd11c0d25fdb964736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046105e7565b610139565b005b61012061005e366004610600565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b6040805192835260208301919091520160405180910390f35b600081815260116020908152604080832054601754600254808652600585528386203387529094529190932073ffffffffffffffffffffffffffffffffffffffff9091169190841580610190575080600901548511155b80610199575083155b156101d0576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60098101546000908152601160205260408120546101ee908661066c565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561025d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610281919061067f565b10156102b9576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600460205260409020600201544210610303576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018690556103138161040b565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af115801561038c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b09190610698565b50853373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103fb91815260200190565b60405180910390a4505050505050565b60008060130180548060200260200160405190810160405280929190818152602001828054801561047257602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610447575b505050505090506000806014018054806020026020016040519081016040528092919081815260200182805480156104c957602002820191906000526020600020905b8154815260200190600101908083116104b5575b5050505050905060008251905081518114610510576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105be57600061054086858481518110610533576105336106ba565b60200260200101516105c5565b9050806000601001600087858151811061055c5761055c6106ba565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604091820160009081206017549094168152929052812080549091906105b09084906106e9565b909155505050600101610513565b5050505050565b60006127106105d483856106fc565b6105de9190610713565b90505b92915050565b6000602082840312156105f957600080fd5b5035919050565b60006020828403121561061257600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461063657600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105e1576105e161063d565b60006020828403121561069157600080fd5b5051919050565b6000602082840312156106aa57600080fd5b8151801515811461063657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808201808211156105e1576105e161063d565b80820281158282048414176105e1576105e161063d565b600082610749577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212202bedc241781571ab7fe4fd69a337154d94b9579ca6501067a80dd11c0d25fdb964736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061091b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601754600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060175490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea2646970667358221220291f04f5e03b22cdef1c242838205e5b27770afc9273f76f2d5ffd00d6dc113d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601754600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060175490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea2646970667358221220291f04f5e03b22cdef1c242838205e5b27770afc9273f76f2d5ffd00d6dc113d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -308,6 +332,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xE87a9dC52a82A0356744E8b9C6cf549A30CB11Ae" + "address": "0x5c244Aaa0318B9b09CABc7F2d3e9b2f4444ACB08" } } \ No newline at end of file diff --git a/deployments/PausationFacet.json b/deployments/PausationFacet.json index 0523e47..70f3f7c 100644 --- a/deployments/PausationFacet.json +++ b/deployments/PausationFacet.json @@ -170,8 +170,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea26469706673582212200eb19804fbc998304365e68bd35f384a3d6a5f17b8e285269b19a67c8825d6ae64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea26469706673582212200eb19804fbc998304365e68bd35f384a3d6a5f17b8e285269b19a67c8825d6ae64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea26469706673582212205964cf95b8abf4ca50b0f051e25186ea0a2a1e06a54e9ac7ebde1b3d65f13a4164736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea26469706673582212205964cf95b8abf4ca50b0f051e25186ea0a2a1e06a54e9ac7ebde1b3d65f13a4164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -180,6 +180,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xA79c069354CD9cC65F8be1a81929eFC07b169b04" + "address": "0x0e9E56e85073baDe4ed347BDcf55dc938D918F8f" } } \ No newline at end of file diff --git a/deployments/UnlockFacet.json b/deployments/UnlockFacet.json index a7ad2e1..f409467 100644 --- a/deployments/UnlockFacet.json +++ b/deployments/UnlockFacet.json @@ -275,8 +275,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212204c83c21fe05b66c79875efdfe9a36c3151415265210eee7a89ab1e78deca979264736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212204c83c21fe05b66c79875efdfe9a36c3151415265210eee7a89ab1e78deca979264736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c579f685dca9b636ec7dddbde2e4aebeec49b74800a1d62c2c0d469eac8d14bc64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220c579f685dca9b636ec7dddbde2e4aebeec49b74800a1d62c2c0d469eac8d14bc64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -285,6 +285,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x48428adA84e4013c625755B6F8A8CFaC34a48D84" + "address": "0x091AAa13e11dA1503733D052A54C8c68D7b4BccA" } } \ No newline at end of file diff --git a/deployments/WithdrawFacet.json b/deployments/WithdrawFacet.json index 367075a..135908c 100644 --- a/deployments/WithdrawFacet.json +++ b/deployments/WithdrawFacet.json @@ -170,8 +170,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220d5ef93f93abbb251af899be872d2ab95afe1d8589821a164d554ea065eafda3c64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220d5ef93f93abbb251af899be872d2ab95afe1d8589821a164d554ea065eafda3c64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220ce696cfc7204c6f1d0d52150e0811ea5fe3f7fa5ce1837018e87d8d45c9ce65c64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220ce696cfc7204c6f1d0d52150e0811ea5fe3f7fa5ce1837018e87d8d45c9ce65c64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -180,6 +180,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xcB2D87178D9489d59a9b3948DCBf7B718Cd2df59" + "address": "0x4108c4EC8DC945DF16bC780b56F79B849f08D7B0" } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 2c1df50..36e0ab5 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,6 +9,7 @@ import '@nomicfoundation/hardhat-toolbox' import './tasks/verify' import './tasks/automatedClaim' import './tasks/season' +import { formatUnits, parseUnits } from 'ethers' const AVALANCHE_RPC_URL = getEnvValSafe('AVALANCHE_RPC_URL') const FUJI_RPC_URL = getEnvValSafe('FUJI_RPC_URL') @@ -24,6 +25,8 @@ const config: HardhatUserConfig = { accounts: [DEPLOYER_PRIVATE_KEY], chainId: 43114, url: AVALANCHE_RPC_URL, + gasPrice: +parseUnits('28', 'gwei').toString(), + gasMultiplier: 1.5, }, fuji: { accounts: [DEPLOYER_PRIVATE_KEY], diff --git a/scripts/deploy/gelato-resolver.ts b/scripts/deploy/gelato-resolver.ts index 2cc14a8..420db2f 100644 --- a/scripts/deploy/gelato-resolver.ts +++ b/scripts/deploy/gelato-resolver.ts @@ -6,10 +6,18 @@ async function main() { const liquidMining = LiquidMining[network.name as keyof typeof LiquidMining] try { - await deployContract('GelatoResolver', { + const GelatoResolver = await deployContract('GelatoResolver', { args: [liquidMining.address], log: true, }) + + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + liquidMining.address + ) + await DiamondManagerFacet.setGelatoExecutor( + await GelatoResolver.getAddress() + ) } catch (error) { console.log(error) } diff --git a/scripts/upgradeDiamond.ts b/scripts/upgradeDiamond.ts index 18fc1a3..2f41285 100644 --- a/scripts/upgradeDiamond.ts +++ b/scripts/upgradeDiamond.ts @@ -10,27 +10,20 @@ async function main() { const diamondAddress = LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] .address - // Deploy DiamondInit - const diamondInit = await deployContract('DiamondInit') // Deploy Facets const FacetNames = getFacets(['DiamondCutFacet', 'DiamondLoupeFacet']) - const Facets = await Promise.all( - FacetNames.map((name) => deployContract(name)) - ) + // const Facets = await Promise.all( + // FacetNames.map((name) => deployContract(name)) + // ) + const Facets = [] + for (const name of FacetNames) { + Facets.push(await deployContract(name)) + } // Do diamond cut - const args = defaultArgs - const functionCall = diamondInit.interface.encodeFunctionData('init', [ - Object.values(args), - ]) - await addOrReplaceFacets( - Facets, - diamondAddress, - await diamondInit.getAddress(), - functionCall - ) + await addOrReplaceFacets(Facets, diamondAddress) console.log('āœ… Diamond upgraded') } diff --git a/src/GelatoResolver.sol b/src/GelatoResolver.sol index 8db602f..6956e5b 100644 --- a/src/GelatoResolver.sol +++ b/src/GelatoResolver.sol @@ -8,6 +8,8 @@ interface ILiquidMiningDiamond { function getCurrentSeasonId() external view returns (uint256); + function getSeasonIsClaimed(uint256 seasonId) external view returns (bool); + function startNewSeasonWithEndTimestamp(uint256 _rewardTokenToDistribute, uint256 _endTimestamp) external; function claimTokensForSeason() external; @@ -65,11 +67,12 @@ contract GelatoResolver { function checker() external view returns (bool canExec, bytes memory execPayload) { uint256 currentSeasonId = liquidMiningDiamond.getCurrentSeasonId(); uint256 currentSeasonEndTimestamp = liquidMiningDiamond.getSeasonEndTimestamp(currentSeasonId); + bool currentSeasonIsClaimed = liquidMiningDiamond.getSeasonIsClaimed(currentSeasonId); - uint256 nextSeasonReward = calculateReward(currentSeasonId + 1); - uint256 nextMonthFirstDayTimestamp = getNextMonthFirstDayTimestamp(); + if (currentSeasonIsClaimed && block.timestamp > currentSeasonEndTimestamp) { + uint256 nextSeasonReward = calculateReward(currentSeasonId + 1); + uint256 nextMonthFirstDayTimestamp = getNextMonthFirstDayTimestamp(); - if (block.timestamp > currentSeasonEndTimestamp) { execPayload = abi.encodeCall( ILiquidMiningDiamond.startNewSeasonWithEndTimestamp, (nextSeasonReward, nextMonthFirstDayTimestamp) diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 4c72337..4609ac3 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -12,6 +12,8 @@ error DiamondManagerFacet__Invalid_Address(); error DiamondManagerFacet__Invalid_Input(); error DiamondManagerFacet__Season_Not_Finished(); error DiamondManagerFacet_InvalidArgs_ChangeBoostPoints(); +error DiamondManagerFacet__NotGelatoExecutor(); +error DiamondManagerFacet__NotAuthorized(); contract DiamondManagerFacet { AppStorage s; @@ -52,7 +54,14 @@ contract DiamondManagerFacet { modifier onlyGelatoExecutor() { if (msg.sender != s.gelatoExecutor) { - revert DiamondManagerFacet__Not_Owner(); + revert DiamondManagerFacet__NotGelatoExecutor(); + } + _; + } + + modifier onlyAuthorized() { + if (!s.authorized[msg.sender]) { + revert DiamondManagerFacet__NotAuthorized(); } _; } @@ -231,6 +240,10 @@ contract DiamondManagerFacet { s.gelatoExecutor = executor; } + function setSeasonClaimed() external onlyAuthorized { + s.isSeasonClaimed[s.currentSeasonId] = true; + } + // Getters function getRewardTokenToDistribute(uint256 _seasonId) external view returns (uint256) { @@ -354,4 +367,8 @@ contract DiamondManagerFacet { poolShareBips = (_userTotalPoints * 10000) / _season.totalPoints; estimatedRewards = (_season.rewardTokensToDistribute * poolShareBips) / 10000; } + + function getSeasonIsClaimed(uint256 seasonId) external view returns (bool) { + return s.isSeasonClaimed[seasonId]; + } } diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index 55f6607..408ed7c 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -86,8 +86,9 @@ struct AppStorage { address stratosphereAddress; uint256 reentrancyGuardStatus; address emissionsManager; - ////////////// - /// GELATO /// - ////////////// + ////////////////// + /// AUTOMATION /// + ////////////////// address gelatoExecutor; + mapping(uint256 => bool) isSeasonClaimed; } diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 8d9c4c0..192898a 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -92,6 +92,10 @@ task('automated-claim:all', 'Claim all rewards for a season') const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + if (seasonId === undefined) { + seasonId = currentSeasonId.toString() + } + let seasonToClaim: string if (seasonId === currentSeasonId.toString()) { const seasonEndTimestamp = @@ -180,6 +184,8 @@ task('automated-claim:all', 'Claim all rewards for a season') } console.log(`āœ… Claimed for ${chunk.length} depositors`) } + + DiamondManagerFacet.setSeasonClaimed() } catch (error) { console.error('āŒ AutomatedClaim failed:', error) throw error diff --git a/tasks/data/season-depositors-avalanche-5.json b/tasks/data/season-depositors-avalanche-5.json new file mode 100644 index 0000000..7418743 --- /dev/null +++ b/tasks/data/season-depositors-avalanche-5.json @@ -0,0 +1 @@ +["0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0xdf0c403bf50801b0437671114e6c05ea6e310499","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x558188b83af5168b62ca8f928d07dd51433b3425","0xc2ff0c70067a62a208ec6763a153f1eacc3146a6","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0xba012eb523aa19ebb0bde8b9aba0435cd3c4bd53","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0xdd451d6e91f57da8a2e92507dc96aee4d5c3dfa0","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0x08e5bfe35ab0a0aef102df0390186b9f401a3c83","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x07737aba415bd610700663b633c4babb827f38aa","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xfc78aee970a4b57406e384bf3e148440d6b23728","0x150d63350f27db753ed2e602d6474b27fcab713c","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x0f698d5cdfdbdaac6b38edc504e698f74ba43023","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x3200f484ccb390b38814c142b6a30e4885100e28","0x8c862dff50699290a6043427d073bd4a6e42763e","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x8480f3f5cb5bcd0aff9cab138fc1fd8d4865b599","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0xf6878bc768d664afdf815898d1f908be54eedc52","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0xac56fc694e06e536a384d273bfc318650cb135f6","0xff93970b68850f77813afd5926b65f0b2a99dc73","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x91342c51ead36ab67a274dfde3a2252b233c6668","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x2848afd62180dfcb20951275fbf8179ad67d81aa","0xfbe624883e445208cf927abc444f9a36a0eb155e","0x3463e691d7473662525288560f25d8adffe98905","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0x27a90a6825132eb88e8feaafe035658663c8944f","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0x50425ec3b3f62b31466c225a51d9d1a405531eab","0xeb7e835ce7174e064e92b6161685dcfc91bb5c4d","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x5539f8cb52c1813e70daa65cc70f6defa6ab73bb","0x474118147a047f8dd2679d14e5947490a21cb74f","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x0aca219a4b144c45eba91800196f5a7aeef377b9","0xb72ad48aa021c977c9b6473002d2e07701629e66","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0x5d5c88952be741a1dcdf9b155a6ba5d7f63343c1","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x715c6f7ed0ccef7d9af6dae0436b2a1995b5599d","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x4180a0da3c4d833452150634a1e0141c20d34196","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xae49cb1b2fe6cfc29e6ef7c3c2484d4ecec99fe5","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xf25e2932d84a1982dedf4d74257c5eedaeca20f4","0x95dbddd6aaba1ce457a42180669dc192849c4341","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0xe07a47908133aa6d59d421d9854a52c28aa053a0","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x7643df115bcd333a0b4c651d114f25a617c735a4","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0xd3a675df46208cebed56e236f86e650829e22f9d","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0x5e5547f8c425bb60870820907172c2a5b7d90283","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0xae8ab67bd43326e424b649050d33b704288af1b5","0x06972cc41d56e548e615e3395f236fd0e812a991","0xea3802178afe086aeace9e4452b76ba5e27a612d","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0x253902b38f19ccc22e589b4c12beb21293a89353","0x9bcc379fe398f15f8165ffca8d7a4155b774c782","0x97bb19836e60e7df1262b9d131074c64a1299eac","0x549d7b6fea00fcbc4aa70abeb73fc1c88d591bd9","0x24ff50d3c156a2d98fca3ca0bdab4c2d2a693119","0x57f50af8110af03ae21d8c483c39baf06235126e","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x15ef3708be7c8bfab5357be38acfb2159c625832","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0xc09c3ded8e674350cb74f11c2afc5a785ec25425","0xbd7c54edc102166a97a9a844067c7e32f048c430","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xa15704171245d148206a8f1240eb51cf3dadc368","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x93fe43db40c997ae784143f060032db16293d93f","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xb7515a3b07df4e54becbc6de8e5ea17170395bf1","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0xa59193fb01e9b0661ecf8270f2c98272530cad01","0x99c16079c89f47feecf45546053a859dcaaac997","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0x8c9e5391866e6e05d2d884e7970f0f0793277880","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xbcf507bf620c3bd65874feaa4400cd924e432a14","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x76a014267b1d9e375d4a84554504e366c7de1167","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0xfe9b4781893a22eb10913cabf3d578ebc24be1cd","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x5c263db138be88737ad66c01428ff847861ad8f1","0x227c2411f03630303483a88b6d4c49eb32a92f84","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0xb57980f93881da0950fd01d215c11bd3b411ea8f","0x6d8eb2d195b0cd658f34690782236e55661cf82d","0x7678a517f7251b075f06994bd55de4e62e8b5f84","0x80a86b3eb09d9f83cdb0967281dc62eba968cbe8","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0x95d52f89e069e183fab5f8ca3328072202f0cad0","0x2464c45cb3040821a49773717ae4d375dee3915b","0x65f4923c646c62d5803940e94ac03da955c3c814","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xd309efbd1410d595aeb610dde0eb7a2e087b42bc","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0xabaf7ae21fab058edfd665c118adea740390159b","0x3972c0ac366b274186b469485c32c400fbd1640f","0xc0805e89313fe3251072016bb8d1c02a38aa5632","0x1009df820facb5d676d485669d06d290e5580bfd","0x77b41acbc72d4c64d88fce50428100a13a84c186","0xb841ddb964e7c9309941732d6c3270f60986893e","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0x2dba82021c355a0239e951c8c93dcf1e9b82246f","0x2e5415cebd85e63769eebb2439fc192a901078f7","0x980ece433b54caa56251d050cb90e706871cec8d","0xc67fbb1fd4dc8bccb340fde1737230e6d84a974d","0xebd2ad98fcc53ee0c4e72adb4ea336a42fc250de","0x2647050446e6437558c6df9313c412ee97ba7d19","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x564621bca495fc73fdfd7fbca3be85d7ff18fb1a","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x710ce64cc8fb9332836f8f12d74636fe1bdb2186","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0x237deb0192880732869926af2ec85a6a64c88e8f","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x4da48333589d54956f4b8c497e274867630a8bad","0x3983f90047a33db4369259fae42f13429fe46bb8","0x6dc9044c4b848a81ec467f37e0c253d4fecf7de8","0xc97b6eeb9813e50cca714cfad479cd8647701b46","0xbd7c1c8073bdbc784239ba5822dedc12dd70e5af","0xab27b52d1bb9806344296b707d459f6e13b61be2","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0x83973e694d35461a33eb056a36d02e4e6e56cee1","0x59bc91d631d4ebcd2dd010a2da494677d8b7e084","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0x3d2051bbb53b9e628ac246ae2f97a6aa68c84f91","0x2923f5ed47c69549f0ecae49b06085c7c5430db1","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0x411f12c30e1b471223b0e407e0cb4bbed6bd181f","0x320e4801c10fee174327005fab8516e54f2283dd","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0xe90d5ba82ef7a7d15997f8e12482e0bca6d1e979","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0x827dbbe748a492b242a9a189ac578ef8876ee635","0x32843cb7d41d5db861c58199e0fcece1bd4f0d0a","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0x1ffa9d8a224c7c582a898f003a2f3b6e5471271c","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x7e3ca3d0bad3cac05c28c9327b579b8a7167c27d","0x26014c73e070a30e5468225f19d1d799397a2df6","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0xd02082678a48ff7d53ef22f312c911f18595ee2f","0x8e9a2cea15733ddc69e1021f78c74b9aba534674","0xf9c2f322398e58dad8532716d751a7447ab7e299","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0x982fa6e21054217c3b154070af7616935b1a0576","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0xae9315bbe81325cf6bdb431d85981155e8fe507d","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0x721100c936494fe26d91ecaed06ea117eaa7164e","0xd74622ed5cbd8c6c93b0f96f115b9a07dc7c8bd8","0x1caf13e8fbe83b8b5902bbc2959f2f9d839f70ec","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0xe85054783ac72b93a082bf579b48615993c1559b","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0x1e741f9bb96b9a990051936d841fd136d605e531","0x5d315beb4c49178231103248c0198ba70fbdc76f","0x3920faaa62c641a0900270a71acecfcac8c158de","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x26829d23c4a1d2192a8ef61cbda614c653a50fda","0xcd9f0e2336cedb8d0504766cd3eee1d522d8d074","0x90921efeb37a66ee59621fc196087cbf2c27618f","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0x2f381172e2224f922bcc4886c98c147be34fd59d","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0xdc00ea58e0c6dac15f6b21a380c0a9aebe323c68","0x43dc10dc0f481422e7c0d1b2416976bb4209bb72","0x8f040ac74286ab7bbe224fb61d23eb280ea5152a","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0x32e6557a77724385732df7112eb7693115171d3e","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xd9daedb465ec48a8431cecb081299e4544efeea5","0xf12008f7a04b81dcfc58924157c95def01977b05","0x08da821717d3a2436fbb56e1de9c421c001a9648","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0xc678090d264ef66fc354bb66875ffb40e9bab97c","0xa82f14e8241cd61f823579ff89c805bbca270feb","0x6248d23207c36ee03788060a136d781baec52a0d","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0x92f8bffd6c1d5695721ecb0ba63523710990a59b","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0x2f65330c88181564e2208de9f776c8799223a633","0x7f825692dfae7107d16bf4e2071fe06b1bc72297","0x9de1925269f2c68a2a570647ecb170fc245db448","0xaa97c6927642cbff371765672d5ee822474bb72e","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0x958d983fe50176d844bcecf137edb95fd1afc540","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xe00b841251b8d8f0f78ab5ccd541f3773b8389db","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0x6182df3418e4bd1b1793e17175e9b41080c89171","0x2a922fed52c4e039e67533b2c0785f1255960d85","0xa3a1c3c360979e037a478543b607977313baa922","0x84aaaf0294c36551042c6681dfa0838fb2c3a66c","0xdf925749e5c9e69e281b6b97868097097f81c537","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0xaf5b23630c79a41c059e441d0e1d9ad5ef0f5d2d","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x8f6a052fe9229a4cf3a4b327f4c05675d2e9cd5d","0x7e71cc0c8f636f33ef4d7522bf4fc71e0bced0f6","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x4734cbccc556efc2e07d9e8fa8de13eaa8716758","0x4d20b6750e3e4dc42f4ce1620ef9e287111d6c58","0x209329b630ee09a04b37b168970eb66f422a2025","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x9bc709054a65c826e93a67e6ffbaa3830a8d3980","0xe76e1015997c1913303341f9b19a577114147563","0x07043ac357e1241aaa7b112f55d47b17fc3bf396","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x35f27b1f5a531a2bd2349bd14724d50148ad05bf","0xd8cb840fb68154297ea267b110acf2b8327ef953","0xb847f453ec067377214f90a20826afddf0319eb2","0x8c39df93724f9057f083434e8b954370c7a830ed","0xb0929a62902d43fb076d00a6b4dfaa470f546f79","0x030378b20f910dfedab89c5c6d61b049fcbf0445","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0x97f46368175b980b7124e38f0af4daac008a058f","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x743fe0b59467e55224220ab61b69da821d09bd6e","0xb2423e90eab0a24934a68a799b896616031f4c1e","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xb13279a5de26519712a2101bdadc597f5720320f","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x7fc17e7ef4ae2217e8f7d530b99e40eb0e2a789a","0x2171f2865e51157513813c56daf5f2543931b6bf","0x8f0576170143731420237deeb8eb8764ac64534e","0x81dad978630a19f814c716a685f49e5fb54e538e","0xfe529266884e96ddf87d7f11475a1116fc1a90b6","0x650c11c69d4b0b2a51f72ae555d1d2e9f652518e","0x1f94a12e745ce696c9338a1db393e0125f218740","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0x298f3c3487e87a1ce12100fb16e1f5589e350198","0x33737e34d80c317e4e96ba9474223594ba5199d8","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0xf577148d8979ce41a707a47d8a72a114b535273a","0x8e570e5007a9cd7ebce23f49302ead902607e584","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xa95b7239594929b61f2e0a8987838ac9ca350aaa","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0x19e54e9e57cc0c5a0af142f345f6022903262667","0xe38b04f83bb9c9648ceb86fd7d801c8d0768e3bc","0x1ff130ccd9373c30e337125896747e299e5eeab2","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0x4b0f3beaade897299682c30ce1bc9585d82888eb","0x04236988c39c28fb0cc15d50af22515eaa038c13","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0xee318930f864178119bd8f3d36cbdc43b986c06d","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0x5d9fa323d70441c70d8b9be597b629016c3af898","0x4205cf51a09f8e4e8f4dd632abe89b3415cba6d3","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x510b994672200a21316e4665b15d4b6f1a16770e","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x02aeb91289504e7ebba064471eb64cd4757d7aa6","0x2fe09418301e5629df6034c9d5fdedbde6605df9","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x71b73edba3cc3731e9dc9644d11a07147cc6dadb","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0x1bcca5b62a017a81b51882b0f2d30f15e4671179","0xbb878eff5b50048b8267b5d2d3824f4a4d39ca40","0xc603f01630d07f3b3ffe816a3f8b674d3603a1e8","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x0d6fadf6be04ccc400f9813d12a35ad4bf3a475b","0x8b4a106521ae96a41b2ec405d3fcb05eaf4a7c4f","0xcc81f3fbaf04a41c226a12b25877f58703b8c364","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0x8316d8837b456ea3b60536b14c62357652b7e416","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x255a9eb9869db522fceda015697cbea917b9e6de","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x9df85695cb25508e04c05f43c586eeeabcb41735","0x629ffa634c3733dba1eab088eadba7ef25936035","0x697652ad036a251bee98821e0dba68e196029f0f","0xc777910af1ad444f03c16e3dcc1a8e0156b61f04","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0x483028f6531db87645c67cec4bd97777ea90b4f3","0xa333e486608821200004b98212355a7df32491dc","0x591de72fed568f3b6c2c96ba5aaa58ffec5cd108","0xc7056431ddd10ff482af812f1ed892e3c1039f62","0xb7ac6d3701f93c6371016d5079db2777b60abaea","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0x9508349ac9182cef23be0990cf23e0e2ff43f287","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0xe5641cbc73955b268995c6e4887fc196163b2b0c","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x00ff9ff4ba4a5593485f7644f4093894baabfa73","0xfd33e3eb2600b95645c2abb13d1c4cd4fe3e7dca","0x218aee94eac19635546d42b3c1aa40cb86d190c8","0x362cb8c54bfe43e0071a750112e465ff68be81f9","0x993e1df7606613b14366dfd90dd0478d21772e80","0xe614f620e1ad131d9ef45343548c064faeff25af","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x8f3e0270798a01b526dee0ee6d6019e36a20417a","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0xda592c3a8a1426ffcb4da81e149f9f1a63c9d32e","0xcde03566d2d324bc2fe22581e4d9506779e1e451","0xecc10f7dbb2833667cb8404806c4b25a5aa27828","0xbb90138caccbf3f9d845a1e64bd30fdc08b115cb","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x0e10816ac60b5ed3776864b259b31abd22b66955","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x2863a270ecf9f28a16b9307e2e66661570a3f2c2","0x5842adc8a15bf1aa419e38ea67242036b3984210","0xf4e6232d2f86bd3399d956b3892d6b1893e1e06e","0x1635ce4325eb96817610255fed3b39273deea95e","0x5c65efbce63fa52a2ae056aadca9e9655ea388ed","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x11c91012cfd0bfbae673f1fcf39b10b1c05b2201","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0xd964d7e9e3bdfd1d9928877347dbbe29cf39348c","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x699be501fd6e4e79415ce9db729a39dd3c04d279","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x7fbfba8204c9c15d66fe1429a072752081a23ed7","0xd442afcb44fe095e9315161a222fba53e17ce2a8","0x750ddafa79df09d90de5a2ebfcbf1f2eb5c4e76a","0x87cf69467e239f29ff880cf7f0d1b3a07b1bbc08","0x0a5eee35105fdb4090347b27fcb27960d5c9120f","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0xa75b019c269322ccb08ac5ed59b25c0e86e1ed67","0x9467135a90023c731803289676302fa18e75f5fe","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0x62fa1525fa43621c0a72f39bded0759063f297a1","0xcfe0b0a3a708f48e8ad38ec27511396ca8ed17ec","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0x68e3937876369d26a11dcc3b3581f7585a3a5bf4","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0x69404a89ab44f18cb71e9dc9339ef62a8cc9e96b","0xfbb4fe9d1e6b0b8d61dd011350cb761297b52a03","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x1a1666752529e164aa4c7c7bfe5347bb2932a3ea","0x1f49d6303b9be888c2210125640c749bf437ae0d","0xdbeef580eb836f68d1e08769372799f84766d9c5","0x2cf67db8764c0ed821e9539e387d07ea9713cc43","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x26cd3876eb91cace7eadd2b437a65d249c635128","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xfa6f603c44af236babe9d7c6a6e402883e12b547","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0xa67a78bf7a23c0504441138fa9c64f816f9e1414","0x4574b559f2442d52ce6a3580a03f4fccd420a397","0x1e050ca02787ab13d2006c9f06801789546a9eda","0xbb1f823554d8f62804686edda026022db7454195","0x756b49da56257a73b487ba56d0b580410a8719a5","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0xceb63b823a22310af59de9960c3a78fea77e3b82","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0x4dd37912b674679f5a98f473ac60beb2998778b9","0xcdfbc32c61b7cb47ca1f4e01c44b5be55d4b50d2","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0x0f9a0ad7d90e74437c7a2b6dc3b2d4b2a73052c3","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0x021534597b71824a8659d60ce637dec4da21ff58","0x86a69e4fa797262e9cb539155adf1ae6681a9766","0x054260b3cd46b5bd67ab45792c15a9224605b9a1","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0xad956de6b7b498f6e75a61788661e38d6c9d45de","0x58e11e0dde32519f52ac04c6b4be44d05c57b22a","0x6ee26afdde94b7985df756d7f2d70418bc9f0720","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xcca784a4e59e9cf4553dc817f106ce118eab7933","0xd22c1b44a6e73ec4d3a16c467d76ad82d0ed8218","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x0efc56448f39d84fd85e631dcc40fedac152c2d3","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x2a4b4d3ee28eec116dc523f1996e94c6cdbd6fea","0x61559a000912997cc40ae3127eb3757a16e0cac6","0xfe2cc1b99c0997a416ccad803c5f205b8f1b49fa","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0xb2a08c0b893604dffaf06483e195b83145a55bf9","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x382518ba6f42a0ab075d6b1ca2bf4c1384546218","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0xf33720272b829c85109a31b3ac479ac443756a9b","0xf02ba499e2eb34e66da6cb6b1ca930945e867610","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x5e9def163ece7711d23d4e7319013b10596dc14e","0xffde7bd8ff0b6e85af956684ff46260aa880ed00","0xe2d3f2a9bf70af50c4d574f1b670ad54442c9acc","0xab02a7dacb026179be5a0e9cda306a8aba1fd06b","0x07beedcc2d7b0ad58ecabc0a167664ba148b8abd","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0x307f6408c64c45447e246952977d2d28a3d5cee0","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x5ddb8e92911fe1685521106fd7bf15479059f412","0xd8c0d5523824994d43743f94dab72f16b306b248","0x6bf37ef5de3c2a67a7be757b4485aec9721259a5","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x77f62b2dd47520f0e29663c8f208a40682202936","0xc16ccc8bea2b3e4bb16db5a96e029cae5f989a15","0xe791bdb46116ec8336415a52d5ae550c4d7163b1","0x39e7aab28fbf731e752dbc46549b0822148d4d84","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0xf25ece5d088a3258a81c857f031939c196c6bf63","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0xfd252a01e2f0d0998b5aa6505f1fb6e128b9fa88","0xfca0919f8e431a4f2d19489143088975410bca32","0x2ecfefe673706b361dc5817d23484f997db79984","0xb33ca886adc00d50a991a739312a8d20d8e1c1d4","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x12372b0ee93cafe88d00ec53da94ca73b5fd767e","0xede982ed15790e561c605cef2c266c023c43d2d3","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0xaa3c5ab4627d5114e1565d4b483a93c9b8925628","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x4eb9448dc71c19585fdd99571b6873fef74ab5d9","0xffcf93dc89977641c0d3506cdb06c3d02d1214db","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x52e22f7c967944004149434e5ffb7e700099a7d1","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x69cfecc77d5c218093a7d2c85d4705040d75924a","0x6815d26995ae88d912a4be4237196bd7f1dc868e","0xea80928510d054dbcf04baa75317704e9628d26f","0xa92d86e469b32d08c3b42af7ba6d8404ea03f8c2","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0x17a8f61c40012d94c64c9cb402634561a06f60db","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0x1f4180b058afe5aeed78d1109ba8dbcc0e90de46","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0xba9398086d0fbbbb2654f446c66a450408d0757b","0x73b37009778048f6db88fd602582473e74e5019a","0xc4f41654aca0b55782e6477c1f4b34af653313fd","0xde6916679c8264b2c4770a452cd7a41d58b8eba8","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0x51bd80affe272e2f5576d2356681eac5a95e1945","0x0118832d17079a8fa442492bb316cf26ef144767","0x23e6df2693de753252f034be95116faa7270b4c4","0x394fc2fddf969d91eb79c7f8c7d6b1fe928df86a","0xec6fd16d1f35f745d7842a2a4922fc7b5a64ddf5","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0x653e0bf7e6591626de2a6bd28062591a0c5bbf62","0x2fe8283062fc30cb0bed18408ace49d8adccdfa7","0xb8fab5a74a588065f201618dece10775494c4110","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0xf8c108440155c3d93a2d7fc01daeee4d299293dc","0xa55378cb5bdd084855ac6a504d55ea7c0c0f30b0","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0x4f174261fb3959b49a0b434f486dcc0529ee97d7","0x30541d093cb67e4c4e4cbd78d29eb0c172c3cda7","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0x5aa0db49a1dc5ebc4537f19e816157a9942d039c","0xea29a51b283ea6c0d3872a5c3df4dde3cba94128","0x22c5a5979d1d3dabaccb98968367f50cba77047f","0xb073ad67d8b3aa66a849736510f50953c8abb53f","0x465e434c5160559d823ac97122dab8fe69910f11","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x4ff7b6f3fd2995694b3c03d45cb6d777b1d54dc8","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0x0e728ac923d5fa4d0b5a13e5bc1e2b7585ac9d6b","0x01f8f947d12d4408001e0bd3d66fcb01dec9f2fb","0xec40655a6b7300a711b3133900921229b0ff2727","0xa737d3cc3d19f4cf64e21edfe229215d8611d69a","0x6178a2278773f87309603b28df69ebd1264b0329","0x47e05717ead0e4536dda2202cf701547afe58f8e","0x84dedc347d0975c965df7b8cd81c4fd26e45d279","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x03974898b0952c37cdac839f3e9384110f2ddfcf","0xbe408e161f41a0d64ec5391ebd78de3292c99cd7","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0x6e8f37ee5915749afc8b291173837fd132099837","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x988967cf4f458a4ab11c868d3729d7b05f65b20d","0x204074efcc1440174d6804c278af8df7303baace","0x32743f06d20ff8965e8ffef3eee1dc5432668e33","0x2cb14c64b16b02461fd81998d2e248471d3fcae1","0x3dce6720024f9cf835302924818f155acc543575","0xed127bb88c33950dea655d13342e1c5f37a23a06","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x300f00437198cbe0f841c7db55a1fe970b6a5319","0x4233b033fc4348d14e9e81cd3d8f95ac51b0fcef","0x94c740f171592fcc0b152d90a177bec88e541974","0x907e812ecd235cb6fb2665d048cde02070962333","0xe60993ac8bb768ec437503811068b8ceece4ab39","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0x5d2595924d34148b842d7a4a9b3582cf73a38cda","0x9ad3a5e6b77aa5dc13e0bcce358a8fb7cbe73966","0x9cc180e1cf7449b3eb82ee113c84de41e98f4a37","0xd57fb63d9ec0c08555896d625b044a5d68055754","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0x78133bc446f67848255781e79743902f7c762bcc","0xe392396e811ec252822da4459eaf29e96f002877","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0xd66ab18893494034892890ae74235c702d6b95f2","0x32ce34a267e617410f25c4879af780b602a599ba","0x8da9792fb5be75154186cca5b59b95d0f6bd0e89","0xc0feed24d45e3dfeb817241ab1e86f27c97fb845","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0x2ad807a0bb34dc4b1bc7fcb912f833444ad54042","0x38395ccb0173ba1fc49e159efd6215ce6016644e","0xf37832b43ad81d74b266d6935f394ec8037ec254","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x283f2ca35223e12d680e20a7f71fcb30f375dbd4","0x32e41f2e97be553cb48d273ef788365c5f9902d7","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x8670923ef71d0451b939dcdd0309c6142c07d800","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0x4e7164b6fcc4e8f5b267b4bdb0db8f34b9394c0e","0x522558e26df98200e0f9031e246d47315c5086d9","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x87f68331b3ce561e4967aef155086c2d3f7c138f","0x72d0779298e3297c63063e4d351252209129c7b1","0x45dc179c350cc2ed6727775a44e5e355cdd69a00","0xa2e20d2b48067170cc0bea7c613482ec1ebde026","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x3fa09c1f0a47bf69cfc351b536160d7609d3d77e","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x7e4e7be312d007c6f9d3246f0816accf99bcd880","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x04b88e1255463ef58877388e1e0fa3d457179411","0x09d453227298ef8e7ce12f5171322442d98679a0","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0x894d44046f35608e1ecfeca49f798b7b8cb027d8","0xfeea6c6167b865782478e87d0944f21d889a1224","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0xb361ae2aa882d2f4183c2b0da51970d6972f6d0f","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0xe9d2d959327a91f1c09a47cd99c05f4f71685c15","0x9f1cddb53f101f15b1bfb8251191979bb18262d1","0xe5f05ca690ab1e309eab3c5829fee5c159833b42","0x9ab348843028ff3a50d739a119761cfd8b52fd2b","0xf568af57b088e565624409cae2147db23da72795","0xbaa8fedb458ddb5e0e75d6705b13e8da054b1544","0x7510abad26a82166498fe8c660a98886ee52c19b","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0xff4e6d4c310ae881f5f622247aac56efe49927d2","0xa1875c746636634e8f55a8edeb0feddaed2488d0","0xb555009df0dd3ba8e5c9ae74018dc16f3a14ecf3","0xe9ca5136514d9988249d5e4a9bcd27c1eb200543","0x3dccf8acae9cbc7ff6113aea13940f8b7aabc5a4","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x9222436d8b8ac3716b0660507d35073812e14d9c","0xb8f3fe31975b4ce36b453e3e5a3ebd04a35972cc","0x26672765c04c1dc3cc3290a79d8550a7993d785c","0xdd23b86646653f37575772afad9c34c5854cc480","0x1d83969532fac5ffef2ed293e423f634ddac94c4","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x66b6585182d2b878e1169e833d4cbf0a0a0facf4","0x866984fd11cf74b356fa8bb79b1a8d8f5a7fb968","0x1cda025b63260d18e51c84f81def58782af53e9f","0x89750b7919f8212d3f7dc962c56a2670ce31d016","0x37cab3a1efad9ccb90c9d8a4a0ab93bdfcf5aeda","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0xa31e64b8bca66a7a30540e5c6b40e9d4dad2ccfd","0x2c812daf5b0297b935a287ad27340f2b37939f2c","0xbfb907dd6f2dd6072e436a960550903d2e971a94","0x3fcaaacc54f5240aea1d8767b4238b9a0eb11952","0x64950ad846e0b9e61a6f606a90c29c9016dc909d","0x44e54f991204b2b25d2e567d7bfb3a724e0ccbe2","0x321b2c8e22fd4ffba6580e1a6014f7a8cc2721c3","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x751d0fa216dd955c9534822e969c289b3df86f38","0x0bfce37b6614a67eb769e98374161263fcf9e9c8","0xe1199918fcc17d161b978fc267e6766d31df1362","0xb9ac3bdc086c5773105177056b2a1a77d752727e","0xae7b70972300511f2085f4ea3f0cd795b3521a07","0x48d852570061cf9382048cf8c99e599ecf4e29d7","0x5ba944e3db959d2eb14b15f782ee5542097c727e","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x0a4e6358567ade9a1333e0366412777029d469d4","0xc0561558b7d18f971a8ab25753eea597215c893b","0x90013ec8e0976cafcd937074c258ee68f9a69f35","0xf02ff23e6ef1606db3b33832e05e0e798a41b829","0x0c5a5bd45078916ff5ff3acafeb19fe96fd747dc","0xc2e4e82d6e7e16438dcaf81ae325ea25b2120f56","0xf14d5876a0beff95b09769aef55f9fe83640330a","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0x400139b09097fc4c43634018359e286f85bcd469","0x7ce6149c8f049d36b41dc49608f7ce2d53d5bc2a","0xd218f2589e9baee8f0032057538eb1313f9752e7","0x74daebf8b0f5a38df9acc0b3dd50ceb82c44d3e4","0x416552278815a25c96acd6d4dccd2a417653d85f","0x21e1882df2fa4744e0cd0e2ae8819757692dbf4e","0xfbd8b4519f24f81af52a4aedf3b78180b6dec1ab","0x9bd1ebe10c018269b9b1152af1dee2ab9711ec98","0x03394cd1b9bd73e4ba49a0480a395a87a5dd3294","0x0fb2af7316f79df61da583fda2821bdb999297de","0xa65c450b0b8f203becb81dedc13b3443f48d166c","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0xd9f4da967fab291e475795c877504450c26de279","0xfc749385de796532a31a2c8976bb4d537647d825","0xcee64e0f252da6d228d3e2308b9b811630d5ebb2","0xbd29e8db224205789ff1fb1b4fe532a35775d3f2","0xd50938c168cfa25d0c65e7e5b065439adb0524d6","0x888920e7dafc88e456b9842f13ac62a57671f31f","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0xb1556926ef15fa23fd149eedb959af292ba5deb0","0x523044de194911829e303470e5ccb284e1d4c96d","0x3f0e58eb1e93a00902b8a22b23731d0ea0e049f4","0x1ed9cb1d102270f377dfb9b7781a28fbbd79a38e","0xda5388992e47c3a245a964f2d78baacc371b3400","0xc67e82828a9f55943cda2d31c5397d60f02ee0e8","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0xe289dbaf65ed817a3b3e348335e5c856d974ee85","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0xd14689dca1b1529d4d2b57cf1c6804c82dcb96e0","0x5dc0f05bb54f8ff1ff174b41cecf748c9a51ba20","0x7484c6158ca424b836ba65c8a97c71be639b1d6d","0x9ba41755bbb988a405bcaaab8e1d0b046ee173f2","0xdc49bea6f527e7c889969c9380c5232cea90a3ed","0x912a21f0fa0ae9976af3f5707b83b9a2aed6a895","0x6aba46ec3ed56b7858316050ca4c2dd43c23fd93","0x445f2a2312671367b52d994aa7ee5d70161a9c93","0x4874193cf77b10bf21a16deb28fee1757b5754f7","0x280c09bea82601a946c4be9761908851a8748872","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x4017205f4731f85fc870449e244375e7e8288c06","0x91c8786d1b32bd0e99a1591b59451c6d014bee09","0xb1827fce61c94b759f443ef4fd17f2fbcfc709c8","0x38e52a58021be2cb09a2822ed2b6e9b7b560eda5","0x3b3ee91d34f0dbd27db80a35dbf6dc2245ad5f00","0xc49654e52a0a6ffe8df4a834cf128b7bfb5a0e4f","0x0bda046968c97347c6154f59013f059ca88bb03a","0x5599746948950205b229ba683824652cfb504e5d","0x330c5981b13ced5186c8cc369c2f84391d190364","0xc384ea49d7933bb841d88380e9f02da6397abbfe","0x7c1f434b31acb3d4b808e852b7228ff5d38b3032","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x2ff2e07f09a99dcd761ea0eddfd1beea3bef942d","0x4ae9e350ae60f3ac75111199c4bd7e4964b92a41","0xec83a60886925e903c9e6cd2a8624db91e276502","0xdd8aabc91e5ca1e5db1d8c61b6fe805f5b7af635","0x4e8fcce4629c1239d5ac2f766cf0f6f0cf421741","0x901e267453cfa589954074affef982eaf8069f5e","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x737160eece21845b77fa878320c4d907073d3ce8","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x6cdefa646f06e8de25fe881a007c2a0f0954472b","0x80c7bf8b95539938ce9100ebf51cb05598d2beb0","0xc5bef4cb2bd685871f78fd219b47ad2d2c562471","0xe13a8a33b7919bd0b7eed1293a7c3d02716b1b6c","0x67da2565ce6064ff72c97f69b7e248d6944b2d2c","0xd85c63984630836d1403f4e77682bba128bcdd25","0x43df2b78d32d22ba8ce77e13848e8b59ec3b7f05","0xa69d108d06c878ed745a18e2f9af9045b02603a3","0xc2b6493c1b6a99840ea6fddfae0846ac7c1a5e5d","0x309c717ee9d528e3df049b7ba89f8c8f2ab6d641","0x352a80959ce2c8c1c6d6eff881a4b23b543ab38a","0xec49ebeed63af5049d729d9840f5b49854a47156","0x9986789a9e362f00055f023c148ca133fa604472","0xc913b10980b3d079cd9b0aa39c73714c76470bea","0x6b26ad1efbac209e6d94624a5140555eb68537f2","0x20bcf3dcba31672d875ef1934b0f24b1b616f0de","0x045e6833fa2b7bbd1a6cfc3cc2630a6e20ff9e87","0xaa2b32c3e9082fabb0f2780c31c1410420ca909b","0x031a5543b91c5dcb978f9877d5643be5d8f30c8e","0x4cbba90cf8969204d101751ce08998c474d176ec","0xc4b273031aa8318e039dee66dae23438816531cc","0xf09de6992d90ad1d6987b9a8aa85019de93a7d9f","0x8963e2d4982a89824c08741270244af0acac5c2e","0xc113d81fcd50957d20a264437a08fbe847a6a0cc","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x4af24ef194344885afa2b575dad0f3aaedb94b1c","0x7c3046b949332696db82998a995af24592ae851a","0xd1555e8436c2ad8bb10e75f5cd21563e61b9ae5a","0xfdd7399a5804c0f1ab634b61669a34b70b44a8dd","0x7eb92ca89f6872067238dbba6aacdcd2c2a90fca","0x361665f2c47a2b94081e1f0688ad9383446267e0","0x3beabf3e6bcf363fcb3752158b1e1911a05540de","0xabc7c9860d11645a365d056efee61df53de7e8b4","0xbf4bb5eab808dc316be2d6f98e0e3ea619ecf424","0x7afeb5459e688c7aa1d121e73a8100996a9b7c24","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0x084abcd9238c88d0ae94215a95ceef5b4e693863","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x2263813148c8f6067ecde582c08e6cafbad10235","0x4d261de6de5543173a39c7b24cd963cc014adcdf","0xdaad6241ca10057f5f9001498aef5fce533cd58c","0x71bb1e72ca66ff81a7c23be97248df303ee4defe","0x6b1787f9e479a994f40809cceb74710e7991b571","0x45236f6fddbd29cab70e9ffed2c373459463c1ae","0x00ac0048b4ac2d2ae8635a88283523f135c63551","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0x5deb505d3d04d6d4c1d4dea3dbde114c4cb7bae8","0x45bb318ae758c1bb8074389d899cb25468e18d09","0x7e46aa16a65583d42e82bc90aff1b47dbb35feb5","0x06dd5751f9b6e0e6aacf1f72aa439c2c9f5fa18d","0xa845b97dfe63912a2b1b915f111dd630a630c787","0x2d748fd2f4c033b2541d3e1a312d5752fd0b6702","0x71762e7db6284178408cd78e4527af11226f7524","0x071a704af5e1fdb36173ef9347b72ed790af968a","0x9cf37c82f3dae5ecaaab814a5dd33fc8b805eba7","0x5059e0195d152f61de2944627919ad227b832efc","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0x584d0af396fa8ab142be4013a8d46c7751c9117d","0xb363c97d17766f1021f138f68f912c94ee1d1623","0x1218f76ea1ae239edaf57aabad32dbd340fc8599","0x6da7fe8b3d40ff277f3fa42b9a55650cb26b972c","0x5c3cb7b19a8980b300ee25b077aca5fe3c85bea8","0x6656da8e7339ba707ec346d660276e7799843eaa","0x64c4de7bae3989df15e1c77c4788fe1cb8281913","0x50486a8840cd2c9d29303d05905e12c36c26c799","0x2fbfa0ed56fe9dd3f5a6737cd09a019210d5b015","0x83a9a014c2fbac123abbeb14f80ba275206005d6","0x573aa6f2e207ba93deccedd79b178891ea121665","0x41309ec7707249f4197f679710f567bd34db73f8","0x3b99d811fcf5396fcfbb6a94517fe4c85ade8ce1","0xaa3df90846c3d55c6111472e11652d6e8dc903da","0x9fd2d8c4e59dcd48fd44436e0ab4b39a72782403","0x7c0cb61ba8f722712de0e12d36fd60908efd5875","0x29e4850598a7789ffa17f89bc0bf890414210e65","0x6221d23e2aecefe15cff2f87b8387bce6b69e646","0xd61cf80adc9bb3ae18b4f2cd0044c4c2991aa4fd","0x07c1444871cd7860ebfa06d118c49ef03de23f79","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0x20e5c3a7b177b6f8bd17cae3c9013f65f0c6755a","0xe7c3395111d739908d1d6671a1acc69f6b6538fb","0x76b10097c254c095fa792171870d9517ca4c8387","0xa64a89112372eb64c7f67bcd82fa318c057570f7","0x88baa594fd3ec1062678846892095ddcbefec868","0x1f37f599115822e6a795b1bb028eeddb02b3a66a","0xd133d9902e60490514ce9f6ed297668d98e7f2c6","0x8d339db79630c895665ce0bbed9dc01f16ba8fd0","0x704acba8cf0d36d7407805a8d99a3926c200f122","0x85029f5ea54742c64632a27f47526825240fe285","0xe14c488ccb91e31531ed1bdc41d439696c82f684","0x501520041cd2c1ea37a82b14a903c2f388f9cb2e","0x7b9bf4eadbb2145f05d562d24a985d9ad2673a79","0x7de3812689b00161eb1bdc13489eaa4774dc7341","0xc56524f364f26ef4c6ab1e58482323573810201c","0xab1d7b51d17aa78684bdb3d99654176165e35f1d"] \ No newline at end of file diff --git a/tasks/season.ts b/tasks/season.ts index 041d0b2..5daaebb 100644 --- a/tasks/season.ts +++ b/tasks/season.ts @@ -1,10 +1,9 @@ import { task } from 'hardhat/config' import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' -task('season:start', 'Start a new season') - .addParam('rewards', 'The rewards for the season to distribute') - .addOptionalParam('duration', 'The duration of the season in days') - .setAction(async ({ rewards, duration }, { ethers, network }) => { +task('season:set-season-end', 'Force set the end of the current season') + .addParam('end', 'The timestamp of the end of the season') + .setAction(async ({ end }, { ethers, network }) => { const diamondAddress = LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] .address @@ -13,16 +12,13 @@ task('season:start', 'Start a new season') diamondAddress ) - if (duration) { - await ( - await DiamondManagerFacet.startNewSeasonWithDuration( - ethers.parseEther(rewards), - duration - ) - ).wait(3) - } else { - await (await DiamondManagerFacet.startNewSeason(rewards)).wait(3) - } + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const setSeasonEndTx = await DiamondManagerFacet.setSeasonEndTimestamp( + currentSeasonId, + end + ) + + await setSeasonEndTx.wait(3) - console.log('āœ… Started new season') + console.log('āœ… Set season end timestamp') }) diff --git a/utils/deployContract.ts b/utils/deployContract.ts index c8c297c..64ddf5d 100644 --- a/utils/deployContract.ts +++ b/utils/deployContract.ts @@ -20,6 +20,7 @@ export async function deployContract( contractName: string, options: DeployOptions = defaultDeployOptions ) { + console.log('šŸš€ ~ file: deployContract.ts:23 ~ contractName:', contractName) const artifact = await hre.artifacts.readArtifact(contractName) if (hre.network.name !== 'hardhat' && options.skipIfAlreadyDeployed) { diff --git a/utils/index.ts b/utils/index.ts index 4854e00..9d36311 100644 --- a/utils/index.ts +++ b/utils/index.ts @@ -22,14 +22,16 @@ export const calculateReward = (seasonId: number) => { return reward } -export const getNextMonthTimestamp = () => { +export function getNextMonthTimestamp(): number { const now = new Date() - now.setUTCHours(0, 0, 0, 0) const nextMonth = new Date( - now.getUTCMonth() === 11 ? now.getUTCFullYear() + 1 : now.getUTCFullYear(), - now.getUTCMonth() === 11 ? 0 : now.getUTCMonth() + 1, - 1 + Date.UTC( + now.getUTCMonth() === 11 + ? now.getUTCFullYear() + 1 + : now.getUTCFullYear(), + now.getUTCMonth() === 11 ? 0 : now.getUTCMonth() + 1, + 1 + ) ) - const timestamp = Math.floor(nextMonth.getTime() / 1000) - return timestamp + return Math.floor(nextMonth.getTime() / 1000) } From 94099f980ffffd56722a6eacec4d3564728009f0 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Mon, 1 Jan 2024 12:17:42 +0100 Subject: [PATCH 18/34] release:season 7 --- deployments/DiamondManagerFacet.json | 11 +++-------- scripts/startSeason.ts | 7 ++++--- src/facets/DiamondManagerFacet.sol | 4 ++-- tasks/data/season-depositors-avalanche-6.json | 1 + 4 files changed, 10 insertions(+), 13 deletions(-) create mode 100644 tasks/data/season-depositors-avalanche-6.json diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 68ec2cc..81b16b9 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -2899,11 +2899,6 @@ "name": "DiamondManagerFacet__NotAuthorized", "type": "error" }, - { - "inputs": [], - "name": "DiamondManagerFacet__NotGelatoExecutor", - "type": "error" - }, { "inputs": [], "name": "DiamondManagerFacet__Not_Owner", @@ -4280,8 +4275,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612996806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612416565b610954565b005b61034261033d366004612416565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612431565b610ccf565b61039061038b366004612416565b610d93565b6040516103599190612453565b6103c06103ab3660046124da565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124da565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f366004612600565b610ea6565b61032d6104223660046126c0565b611039565b6103f36104353660046124da565b60009081526004602052604090206002015490565b61032d6104583660046124da565b61119b565b6103f361046b3660046126f6565b61123e565b6103f361047e3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612431565b611278565b6103f36104d33660046124da565b60009081526004602052604090206003015490565b61032d6104f6366004612600565b611393565b6002546103f3565b61054d6105113660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124da565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb366004612600565b611577565b6105d36105ce3660046124da565b6116fd565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117b2565b6103f361271081565b61032d6106533660046124da565b611869565b61032d610666366004612416565b611950565b6103f36106793660046126f6565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612431565b611a56565b6103f36106d13660046124da565b6000908152600460208190526040909120015490565b6103906106f53660046126f6565b611b14565b6103f36107083660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612720565b611c26565b61032d611cb2565b6103f36107fa3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461274c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd36600461277f565b611db7565b61032d6108e0366004612431565b611e02565b61032d6108f33660046124da565b611eb7565b61032d610906366004612416565b612002565b61032d610919366004612416565b61212e565b61032d61092c366004612416565b61225c565b6103f361093f3660046124da565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127d1565b835160e0840151909850909150610c15826127106127e4565b610c1f91906127fb565b9550612710868360600151610c3491906127e4565b610c3e91906127fb565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612836565b602002602001015182610f8391906127d1565b915080610f8f81612865565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612313565b508151610ffa90600a90602085019061239d565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061289d565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127d1565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061292e565b6111499062ffffff16426127d1565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b601b5473ffffffffffffffffffffffffffffffffffffffff1633146112c9576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112ec57506000818152600460205260409020600201544211155b15611323576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132e8160016127d1565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611403576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461143e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561154a5760008281526005602052604081208651829088908590811061147357611473612836565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114cb576114cb612836565b602002602001015190508160000154600003611513576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611522828261294d565b61152c90876127d1565b6003909301919091555092508061154281612865565b915050611446565b506000818152600460205260408120600701805484929061156c90849061294d565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115e7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611622576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116685782818151811061164157611641612836565b60200260200101518261165491906127d1565b91508061166081612865565b915050611626565b5061271081146116a4576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116b790600e906020860190612313565b5081516116cb90600f90602085019061239d565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061289d565b61174560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117fa60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611915576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff811661199e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a0e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b02576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b73604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c96576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b601b5473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dfb91906127d1565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e72576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f27576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f4a57506000818152600460205260409020600201544211155b15611f81576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f8e8260016127d1565b60028190556000818152600460205260409020818155426001820181905591925090611fbd906220f5806127d1565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612072576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120bf576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661217c576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122cc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612333565b506123999291506123d8565b5090565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d5782518255916020019190600101906123bd565b5b8082111561239957600081556001016123d9565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241157600080fd5b919050565b60006020828403121561242857600080fd5b611dfb826123ed565b6000806040838503121561244457600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124d28285018215159052565b505092915050565b6000602082840312156124ec57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612569576125696124f3565b604052919050565b600067ffffffffffffffff82111561258b5761258b6124f3565b5060051b60200190565b600082601f8301126125a657600080fd5b813560206125bb6125b683612571565b612522565b82815260059290921b840181019181810190868411156125da57600080fd5b8286015b848110156125f557803583529183019183016125de565b509695505050505050565b6000806040838503121561261357600080fd5b823567ffffffffffffffff8082111561262b57600080fd5b818501915085601f83011261263f57600080fd5b8135602061264f6125b683612571565b82815260059290921b8401810191818101908984111561266e57600080fd5b948201945b8386101561269357612684866123ed565b82529482019490820190612673565b965050860135925050808211156126a957600080fd5b506126b685828601612595565b9150509250929050565b600080604083850312156126d357600080fd5b82359150602083013560ff811681146126eb57600080fd5b809150509250929050565b6000806040838503121561270957600080fd5b612712836123ed565b946020939093013593505050565b60008060006060848603121561273557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275f57600080fd5b612768836123ed565b9150612776602084016123ed565b90509250929050565b6000806040838503121561279257600080fd5b82359150612776602084016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127a2565b8082028115828204841417611272576112726127a2565b600082612831577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612896576128966127a2565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128ec57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ba565b5050508381038285015284518082528583019183019060005b8181101561292157835183529284019291840191600101612905565b5090979650505050505050565b62ffffff8181168382160280821691908281146124d2576124d26127a2565b81810381811115611272576112726127a256fea2646970667358221220cb6d6e249fe4e320a58c736e643b4c725535726eb6d3301e2bfb359284dc175564736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612416565b610954565b005b61034261033d366004612416565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612431565b610ccf565b61039061038b366004612416565b610d93565b6040516103599190612453565b6103c06103ab3660046124da565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124da565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f366004612600565b610ea6565b61032d6104223660046126c0565b611039565b6103f36104353660046124da565b60009081526004602052604090206002015490565b61032d6104583660046124da565b61119b565b6103f361046b3660046126f6565b61123e565b6103f361047e3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612431565b611278565b6103f36104d33660046124da565b60009081526004602052604090206003015490565b61032d6104f6366004612600565b611393565b6002546103f3565b61054d6105113660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124da565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb366004612600565b611577565b6105d36105ce3660046124da565b6116fd565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117b2565b6103f361271081565b61032d6106533660046124da565b611869565b61032d610666366004612416565b611950565b6103f36106793660046126f6565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612431565b611a56565b6103f36106d13660046124da565b6000908152600460208190526040909120015490565b6103906106f53660046126f6565b611b14565b6103f36107083660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612720565b611c26565b61032d611cb2565b6103f36107fa3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126f6565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461274c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd36600461277f565b611db7565b61032d6108e0366004612431565b611e02565b61032d6108f33660046124da565b611eb7565b61032d610906366004612416565b612002565b61032d610919366004612416565b61212e565b61032d61092c366004612416565b61225c565b6103f361093f3660046124da565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127d1565b835160e0840151909850909150610c15826127106127e4565b610c1f91906127fb565b9550612710868360600151610c3491906127e4565b610c3e91906127fb565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612836565b602002602001015182610f8391906127d1565b915080610f8f81612865565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612313565b508151610ffa90600a90602085019061239d565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061289d565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127d1565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061292e565b6111499062ffffff16426127d1565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b601b5473ffffffffffffffffffffffffffffffffffffffff1633146112c9576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112ec57506000818152600460205260409020600201544211155b15611323576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132e8160016127d1565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611403576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461143e576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561154a5760008281526005602052604081208651829088908590811061147357611473612836565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114cb576114cb612836565b602002602001015190508160000154600003611513576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611522828261294d565b61152c90876127d1565b6003909301919091555092508061154281612865565b915050611446565b506000818152600460205260408120600701805484929061156c90849061294d565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115e7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611622576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116685782818151811061164157611641612836565b60200260200101518261165491906127d1565b91508061166081612865565b915050611626565b5061271081146116a4576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116b790600e906020860190612313565b5081516116cb90600f90602085019061239d565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061289d565b61174560405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117fa60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611915576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff811661199e576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a0e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b02576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b73604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c96576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b601b5473ffffffffffffffffffffffffffffffffffffffff163314611d03576040517f5697326000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6f57600080fd5b505af1158015611d83573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dfb91906127d1565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e72576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f27576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f4a57506000818152600460205260409020600201544211155b15611f81576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f8e8260016127d1565b60028190556000818152600460205260409020818155426001820181905591925090611fbd906220f5806127d1565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612072576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120bf576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661217c576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122cc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612333565b506123999291506123d8565b5090565b82805482825590600052602060002090810192821561238d579160200282015b8281111561238d5782518255916020019190600101906123bd565b5b8082111561239957600081556001016123d9565b803573ffffffffffffffffffffffffffffffffffffffff8116811461241157600080fd5b919050565b60006020828403121561242857600080fd5b611dfb826123ed565b6000806040838503121561244457600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124d28285018215159052565b505092915050565b6000602082840312156124ec57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612569576125696124f3565b604052919050565b600067ffffffffffffffff82111561258b5761258b6124f3565b5060051b60200190565b600082601f8301126125a657600080fd5b813560206125bb6125b683612571565b612522565b82815260059290921b840181019181810190868411156125da57600080fd5b8286015b848110156125f557803583529183019183016125de565b509695505050505050565b6000806040838503121561261357600080fd5b823567ffffffffffffffff8082111561262b57600080fd5b818501915085601f83011261263f57600080fd5b8135602061264f6125b683612571565b82815260059290921b8401810191818101908984111561266e57600080fd5b948201945b8386101561269357612684866123ed565b82529482019490820190612673565b965050860135925050808211156126a957600080fd5b506126b685828601612595565b9150509250929050565b600080604083850312156126d357600080fd5b82359150602083013560ff811681146126eb57600080fd5b809150509250929050565b6000806040838503121561270957600080fd5b612712836123ed565b946020939093013593505050565b60008060006060848603121561273557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275f57600080fd5b612768836123ed565b9150612776602084016123ed565b90509250929050565b6000806040838503121561279257600080fd5b82359150612776602084016123ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127a2565b8082028115828204841417611272576112726127a2565b600082612831577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612896576128966127a2565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128ec57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ba565b5050508381038285015284518082528583019183019060005b8181101561292157835183529284019291840191600101612905565b5090979650505050505050565b62ffffff8181168382160280821691908281146124d2576124d26127a2565b81810381811115611272576112726127a256fea2646970667358221220cb6d6e249fe4e320a58c736e643b4c725535726eb6d3301e2bfb359284dc175564736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506129d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612454565b610954565b005b61034261033d366004612454565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d61037836600461246f565b610ccf565b61039061038b366004612454565b610d93565b6040516103599190612491565b6103c06103ab366004612518565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612518565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263e565b610ea6565b61032d6104223660046126fe565b611039565b6103f3610435366004612518565b60009081526004602052604090206002015490565b61032d610458366004612518565b61119b565b6103f361046b366004612734565b61123e565b6103f361047e366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c036600461246f565b611278565b6103f36104d3366004612518565b60009081526004602052604090206003015490565b61032d6104f636600461263e565b6113b2565b6002546103f3565b61054d610511366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612518565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263e565b611596565b6105d36105ce366004612518565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612518565b611888565b61032d610666366004612454565b61196f565b6103f3610679366004612734565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be36600461246f565b611a75565b6103f36106d1366004612518565b6000908152600460208190526040909120015490565b6103906106f5366004612734565b611b33565b6103f3610708366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275e565b611c45565b61032d611cd1565b6103f36107fa366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127bd565b611df5565b61032d6108e036600461246f565b611e40565b61032d6108f3366004612518565b611ef5565b61032d610906366004612454565b612040565b61032d610919366004612454565b61216c565b61032d61092c366004612454565b61229a565b6103f361093f366004612518565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc919061280f565b835160e0840151909850909150610c1582612710612822565b610c1f9190612839565b9550612710868360600151610c349190612822565b610c3e9190612839565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612874565b602002602001015182610f83919061280f565b915080610f8f816128a3565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612351565b508151610ffa90600a9060208501906123db565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128db565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e81600161280f565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296c565b6111499062ffffff164261280f565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d81600161280f565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612874565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612874565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298b565b61154b908761280f565b60039093019190915550925080611561816128a3565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298b565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612874565b602002602001015182611673919061280f565b91508061167f816128a3565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612351565b5081516116ea90600f9060208501906123db565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128db565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b21576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b92604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d41576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dad57600080fd5b505af1158015611dc1573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e39919061280f565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8857506000818152600460205260409020600201544211155b15611fbf576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcc82600161280f565b60028190556000818152600460205260409020818155426001820181905591925090611ffb906220f58061280f565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121ba576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612371565b506123d7929150612416565b5090565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb5782518255916020019190600101906123fb565b5b808211156123d75760008155600101612417565b803573ffffffffffffffffffffffffffffffffffffffff8116811461244f57600080fd5b919050565b60006020828403121561246657600080fd5b611e398261242b565b6000806040838503121561248257600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125108285018215159052565b505092915050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a7576125a7612531565b604052919050565b600067ffffffffffffffff8211156125c9576125c9612531565b5060051b60200190565b600082601f8301126125e457600080fd5b813560206125f96125f4836125af565b612560565b82815260059290921b8401810191818101908684111561261857600080fd5b8286015b84811015612633578035835291830191830161261c565b509695505050505050565b6000806040838503121561265157600080fd5b823567ffffffffffffffff8082111561266957600080fd5b818501915085601f83011261267d57600080fd5b8135602061268d6125f4836125af565b82815260059290921b840181019181810190898411156126ac57600080fd5b948201945b838610156126d1576126c28661242b565b825294820194908201906126b1565b965050860135925050808211156126e757600080fd5b506126f4858286016125d3565b9150509250929050565b6000806040838503121561271157600080fd5b82359150602083013560ff8116811461272957600080fd5b809150509250929050565b6000806040838503121561274757600080fd5b6127508361242b565b946020939093013593505050565b60008060006060848603121561277357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279d57600080fd5b6127a68361242b565b91506127b46020840161242b565b90509250929050565b600080604083850312156127d057600080fd5b823591506127b46020840161242b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e0565b8082028115828204841417611272576112726127e0565b60008261286f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d4576128d46127e0565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292a57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f8565b5050508381038285015284518082528583019183019060005b8181101561295f57835183529284019291840191600101612943565b5090979650505050505050565b62ffffff818116838216028082169190828114612510576125106127e0565b81810381811115611272576112726127e056fea26469706673582212204d6a5ba6fb009da6db5f8195f76366275f1f32c3826da01dc0f32a69c706f46864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612454565b610954565b005b61034261033d366004612454565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d61037836600461246f565b610ccf565b61039061038b366004612454565b610d93565b6040516103599190612491565b6103c06103ab366004612518565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612518565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263e565b610ea6565b61032d6104223660046126fe565b611039565b6103f3610435366004612518565b60009081526004602052604090206002015490565b61032d610458366004612518565b61119b565b6103f361046b366004612734565b61123e565b6103f361047e366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c036600461246f565b611278565b6103f36104d3366004612518565b60009081526004602052604090206003015490565b61032d6104f636600461263e565b6113b2565b6002546103f3565b61054d610511366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612518565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263e565b611596565b6105d36105ce366004612518565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612518565b611888565b61032d610666366004612454565b61196f565b6103f3610679366004612734565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be36600461246f565b611a75565b6103f36106d1366004612518565b6000908152600460208190526040909120015490565b6103906106f5366004612734565b611b33565b6103f3610708366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275e565b611c45565b61032d611cd1565b6103f36107fa366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127bd565b611df5565b61032d6108e036600461246f565b611e40565b61032d6108f3366004612518565b611ef5565b61032d610906366004612454565b612040565b61032d610919366004612454565b61216c565b61032d61092c366004612454565b61229a565b6103f361093f366004612518565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc919061280f565b835160e0840151909850909150610c1582612710612822565b610c1f9190612839565b9550612710868360600151610c349190612822565b610c3e9190612839565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612874565b602002602001015182610f83919061280f565b915080610f8f816128a3565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612351565b508151610ffa90600a9060208501906123db565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128db565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e81600161280f565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296c565b6111499062ffffff164261280f565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d81600161280f565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612874565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612874565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298b565b61154b908761280f565b60039093019190915550925080611561816128a3565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298b565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612874565b602002602001015182611673919061280f565b91508061167f816128a3565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612351565b5081516116ea90600f9060208501906123db565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128db565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b21576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b92604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d41576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dad57600080fd5b505af1158015611dc1573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e39919061280f565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8857506000818152600460205260409020600201544211155b15611fbf576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcc82600161280f565b60028190556000818152600460205260409020818155426001820181905591925090611ffb906220f58061280f565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121ba576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612371565b506123d7929150612416565b5090565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb5782518255916020019190600101906123fb565b5b808211156123d75760008155600101612417565b803573ffffffffffffffffffffffffffffffffffffffff8116811461244f57600080fd5b919050565b60006020828403121561246657600080fd5b611e398261242b565b6000806040838503121561248257600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125108285018215159052565b505092915050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a7576125a7612531565b604052919050565b600067ffffffffffffffff8211156125c9576125c9612531565b5060051b60200190565b600082601f8301126125e457600080fd5b813560206125f96125f4836125af565b612560565b82815260059290921b8401810191818101908684111561261857600080fd5b8286015b84811015612633578035835291830191830161261c565b509695505050505050565b6000806040838503121561265157600080fd5b823567ffffffffffffffff8082111561266957600080fd5b818501915085601f83011261267d57600080fd5b8135602061268d6125f4836125af565b82815260059290921b840181019181810190898411156126ac57600080fd5b948201945b838610156126d1576126c28661242b565b825294820194908201906126b1565b965050860135925050808211156126e757600080fd5b506126f4858286016125d3565b9150509250929050565b6000806040838503121561271157600080fd5b82359150602083013560ff8116811461272957600080fd5b809150509250929050565b6000806040838503121561274757600080fd5b6127508361242b565b946020939093013593505050565b60008060006060848603121561277357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279d57600080fd5b6127a68361242b565b91506127b46020840161242b565b90509250929050565b600080604083850312156127d057600080fd5b823591506127b46020840161242b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e0565b8082028115828204841417611272576112726127e0565b60008261286f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d4576128d46127e0565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292a57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f8565b5050508381038285015284518082528583019183019060005b8181101561295f57835183529284019291840191600101612943565b5090979650505050505050565b62ffffff818116838216028082169190828114612510576125106127e0565b81810381811115611272576112726127e056fea26469706673582212204d6a5ba6fb009da6db5f8195f76366275f1f32c3826da01dc0f32a69c706f46864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4290,6 +4285,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x2bD5c300979513c9Ef37160255791991574500EF" + "address": "0x482F8577A4B90f25a769006F8F607E424BEBcacb" } } \ No newline at end of file diff --git a/scripts/startSeason.ts b/scripts/startSeason.ts index e390679..71a0afe 100644 --- a/scripts/startSeason.ts +++ b/scripts/startSeason.ts @@ -10,15 +10,16 @@ async function main() { 'DiamondManagerFacet', diamondAddress ) + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() const rewards = calculateReward(Number(currentSeasonId.toString()) + 1) const parsedRewards = ethers.parseEther(rewards.toString()) + const nextSeasonEndTimestamp = getNextMonthTimestamp() console.log('Attempting to start new season') const startSeasonTx = await DiamondManagerFacet.startNewSeasonWithEndTimestamp( parsedRewards.toString(), - // 1696118400 // 2023-10-01 00:00:00 UTC - getNextMonthTimestamp() + nextSeasonEndTimestamp ) await logTx(startSeasonTx) @@ -26,8 +27,8 @@ async function main() { const mintVAPETx = await DiamondManagerFacet.claimTokensForSeason() await logTx(mintVAPETx) - console.log('āœ… Vape minted') + console.log('āœ… All done') } diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 4609ac3..6b283d4 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -159,7 +159,7 @@ contract DiamondManagerFacet { function startNewSeasonWithEndTimestamp( uint256 _rewardTokenToDistribute, uint256 _endTimestamp - ) external onlyGelatoExecutor { + ) external onlyOwner { uint256 _currentSeason = s.currentSeasonId; if (_currentSeason != 0 && s.seasons[_currentSeason].endTimestamp >= block.timestamp) { revert DiamondManagerFacet__Season_Not_Finished(); @@ -196,7 +196,7 @@ contract DiamondManagerFacet { s.seasons[currentSeasonId].totalPoints -= difference; } - function claimTokensForSeason() external onlyGelatoExecutor { + function claimTokensForSeason() external onlyOwner { IEmissionsManager(s.emissionsManager).mintLiquidMining(); emit VapeClaimedForSeason(s.currentSeasonId); } diff --git a/tasks/data/season-depositors-avalanche-6.json b/tasks/data/season-depositors-avalanche-6.json new file mode 100644 index 0000000..d5e2958 --- /dev/null +++ b/tasks/data/season-depositors-avalanche-6.json @@ -0,0 +1 @@ +["0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0xff93970b68850f77813afd5926b65f0b2a99dc73","0xdf0c403bf50801b0437671114e6c05ea6e310499","0x66c4b2e85ea5a50a0bf85f431f679bb5c21c5317","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x3beabf3e6bcf363fcb3752158b1e1911a05540de","0x50425ec3b3f62b31466c225a51d9d1a405531eab","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x378653930892a0a40e1529ac6db1b9ff5b001010","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x8c39df93724f9057f083434e8b954370c7a830ed","0xb847f453ec067377214f90a20826afddf0319eb2","0xc70673b31c31cb2f38a5191b778568015090e3b9","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0x8c862dff50699290a6043427d073bd4a6e42763e","0x02aeb91289504e7ebba064471eb64cd4757d7aa6","0x5c263db138be88737ad66c01428ff847861ad8f1","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0x710ce64cc8fb9332836f8f12d74636fe1bdb2186","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0x97bb19836e60e7df1262b9d131074c64a1299eac","0x549d7b6fea00fcbc4aa70abeb73fc1c88d591bd9","0x24ff50d3c156a2d98fca3ca0bdab4c2d2a693119","0x2ecfefe673706b361dc5817d23484f997db79984","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0x1206a6efe2adeaeedb0471736f7c339801999423","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0x57f50af8110af03ae21d8c483c39baf06235126e","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x77b41acbc72d4c64d88fce50428100a13a84c186","0x237deb0192880732869926af2ec85a6a64c88e8f","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0x0118832d17079a8fa442492bb316cf26ef144767","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x209329b630ee09a04b37b168970eb66f422a2025","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0xac56fc694e06e536a384d273bfc318650cb135f6","0x1f94a12e745ce696c9338a1db393e0125f218740","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0xfeea6c6167b865782478e87d0944f21d889a1224","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xf6878bc768d664afdf815898d1f908be54eedc52","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0xd3a675df46208cebed56e236f86e650829e22f9d","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x7fc1e85a295f6ad12707b7f7c7eb6ec031ce9936","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x653e0bf7e6591626de2a6bd28062591a0c5bbf62","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0x501520041cd2c1ea37a82b14a903c2f388f9cb2e","0x3200f484ccb390b38814c142b6a30e4885100e28","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0x9ad3a5e6b77aa5dc13e0bcce358a8fb7cbe73966","0xe955fc993430b64881888b815570857658a24a2e","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x298f3c3487e87a1ce12100fb16e1f5589e350198","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0xaab445f2846476a31aaed66112b0f3e2ad82c50a","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xabaf7ae21fab058edfd665c118adea740390159b","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0x7de3812689b00161eb1bdc13489eaa4774dc7341","0xc157fea3da6f386a14aedfc516bd8c5ac2efb3da","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0xb72ad48aa021c977c9b6473002d2e07701629e66","0xa95b7239594929b61f2e0a8987838ac9ca350aaa","0x42e750af4a823dd807784ac7f100f56f104d5962","0x9ab348843028ff3a50d739a119761cfd8b52fd2b","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x7643df115bcd333a0b4c651d114f25a617c735a4","0xd728e5857e8f39bc460bc41adf6e7ce5921b13ee","0xe5327d3ee139d3fb4a802fe0e08d4428b3647960","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x084c058bad49a6382090cc5fdab4ab6f64c97349","0x93fe43db40c997ae784143f060032db16293d93f","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x25d872fbb73c37fc676c3784445e395bb9cf9d63","0xd40908f2b93fcaef80067c6c541249aabd5531ed","0xbdc0859e2baef875caf2a07010b9c6a8b2630b59","0x0aca219a4b144c45eba91800196f5a7aeef377b9","0xe85054783ac72b93a082bf579b48615993c1559b","0x27a90a6825132eb88e8feaafe035658663c8944f","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0x7b495e53aa1a6b3059f3fb7b976ed1b55f3f8d3e","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0x97f46368175b980b7124e38f0af4daac008a058f","0x07737aba415bd610700663b633c4babb827f38aa","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0x5e5547f8c425bb60870820907172c2a5b7d90283","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0xa954f2e675b7bfde33609f6c038e4bb1f8eef980","0x4da48333589d54956f4b8c497e274867630a8bad","0x3972c0ac366b274186b469485c32c400fbd1640f","0x227c2411f03630303483a88b6d4c49eb32a92f84","0xc09c3ded8e674350cb74f11c2afc5a785ec25425","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0x300f00437198cbe0f841c7db55a1fe970b6a5319","0x4233b033fc4348d14e9e81cd3d8f95ac51b0fcef","0x94c740f171592fcc0b152d90a177bec88e541974","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0xb7f147b4fd27332ce04ed300edfc22e68016ea1a","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0x7fc17e7ef4ae2217e8f7d530b99e40eb0e2a789a","0x2171f2865e51157513813c56daf5f2543931b6bf","0xd2eff1011f61eecfadb41929d9e68a22e2e1e4bd","0xabd3e31a34d621a5ecf943b7783a72ae7428344a","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x634917b41527d69ad20ee8fe35933ac08182aa20","0x2647050446e6437558c6df9313c412ee97ba7d19","0xc2fe50e4e2a72346108527a815627dda4bbd165c","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0x8e9a2cea15733ddc69e1021f78c74b9aba534674","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0xc678090d264ef66fc354bb66875ffb40e9bab97c","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0xb841ddb964e7c9309941732d6c3270f60986893e","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x564621bca495fc73fdfd7fbca3be85d7ff18fb1a","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0xf14d5876a0beff95b09769aef55f9fe83640330a","0xb57980f93881da0950fd01d215c11bd3b411ea8f","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0xff61a30a954367758552d5fd9ce7a28369898496","0x942ff66bc66ed7b56d0ba79b7fbe70de9f7bd046","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","0xbcf507bf620c3bd65874feaa4400cd924e432a14","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x510b994672200a21316e4665b15d4b6f1a16770e","0x89ac4cb968a757412ab35f3b5ac9ca1d5d04d831","0xa15704171245d148206a8f1240eb51cf3dadc368","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0xb0237808621beb2eb377779d0c5a8d81ffd16a0c","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0xfe5ff96ec7986c8c27fed59b17e693092bdebb5e","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x1e050ca02787ab13d2006c9f06801789546a9eda","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0xcee64e0f252da6d228d3e2308b9b811630d5ebb2","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0x88baa594fd3ec1062678846892095ddcbefec868","0x1f37f599115822e6a795b1bb028eeddb02b3a66a","0xfd252a01e2f0d0998b5aa6505f1fb6e128b9fa88","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0xe2d3f2a9bf70af50c4d574f1b670ad54442c9acc","0xb2423e90eab0a24934a68a799b896616031f4c1e","0x307f6408c64c45447e246952977d2d28a3d5cee0","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0xd57fb63d9ec0c08555896d625b044a5d68055754","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0xc0805e89313fe3251072016bb8d1c02a38aa5632","0x0efc56448f39d84fd85e631dcc40fedac152c2d3","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0xa59193fb01e9b0661ecf8270f2c98272530cad01","0x99c16079c89f47feecf45546053a859dcaaac997","0x1c2fe0556ca8d260adcc800846a37600645f8fec","0xe4c8f1d1d5397af88da84d24a99a59c06a99b4fd","0x2464c45cb3040821a49773717ae4d375dee3915b","0x65f4923c646c62d5803940e94ac03da955c3c814","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x1cda025b63260d18e51c84f81def58782af53e9f","0x89750b7919f8212d3f7dc962c56a2670ce31d016","0x37cab3a1efad9ccb90c9d8a4a0ab93bdfcf5aeda","0xdf925749e5c9e69e281b6b97868097097f81c537","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0xa333e486608821200004b98212355a7df32491dc","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0x07beedcc2d7b0ad58ecabc0a167664ba148b8abd","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x6656da8e7339ba707ec346d660276e7799843eaa","0x520292efec8711bb4d0768efd4c2bcf0d6371642","0x6815d26995ae88d912a4be4237196bd7f1dc868e","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0xf9c2f322398e58dad8532716d751a7447ab7e299","0x980ece433b54caa56251d050cb90e706871cec8d","0xfdd498c312cb5aac919e830d6315290d2be190c7","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0xc5bef4cb2bd685871f78fd219b47ad2d2c562471","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x22c76c3268aed765aebebd3b01b38e919c99b88a","0x2a4b4d3ee28eec116dc523f1996e94c6cdbd6fea","0x61559a000912997cc40ae3127eb3757a16e0cac6","0xfe2cc1b99c0997a416ccad803c5f205b8f1b49fa","0x570abe0929b5e21a867d82774c29b739e39bd8ed","0xec83a60886925e903c9e6cd2a8624db91e276502","0xccf81389129f506d2a278e1ace0b6fa942a6b4a4","0x3bd75973b3a6bd6eb69632898182b0677216b064","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0xd964d7e9e3bdfd1d9928877347dbbe29cf39348c","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0x69404a89ab44f18cb71e9dc9339ef62a8cc9e96b","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x704acba8cf0d36d7407805a8d99a3926c200f122","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x0e10816ac60b5ed3776864b259b31abd22b66955","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0x4d261de6de5543173a39c7b24cd963cc014adcdf","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0xbd29e8db224205789ff1fb1b4fe532a35775d3f2","0xd50938c168cfa25d0c65e7e5b065439adb0524d6","0x715c6f7ed0ccef7d9af6dae0436b2a1995b5599d","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0xf29bf64d60eb3263d12faa2c7241ad7c70150172","0x483028f6531db87645c67cec4bd97777ea90b4f3","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0x1949654a043a6774b164f38a0c07a3c8d76539f1","0xeee07dcf68cb4fde1c34d586a2786d4c3d45bb67","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x50486a8840cd2c9d29303d05905e12c36c26c799","0x756b49da56257a73b487ba56d0b580410a8719a5","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0x88aa97378c113051a5a8cb1251b3b4c065b80ffe","0x35b542f9321de0203f86b627e13810d9ddcd8bf1","0xd9f4da967fab291e475795c877504450c26de279","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x5aa0db49a1dc5ebc4537f19e816157a9942d039c","0xbb878eff5b50048b8267b5d2d3824f4a4d39ca40","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0xff4e6d4c310ae881f5f622247aac56efe49927d2","0xa1875c746636634e8f55a8edeb0feddaed2488d0","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0x26014c73e070a30e5468225f19d1d799397a2df6","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0xcf84895a0db94cc077bc3ed25006f39141fb22b8","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x29e4850598a7789ffa17f89bc0bf890414210e65","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0x054ff6642fa5bfb99f619c9b162af44a5c5898eb","0x2863a270ecf9f28a16b9307e2e66661570a3f2c2","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0x8316d8837b456ea3b60536b14c62357652b7e416","0x12372b0ee93cafe88d00ec53da94ca73b5fd767e","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0xaebb6242d5d975bba29cba765f4486e9e56f23d5","0x3920faaa62c641a0900270a71acecfcac8c158de","0xaad1557ef67d88221bd1e029d0aae501390cc7ac","0xecc2eff7e481e885832e529c1811263039d9aea0","0x247106916628c7423176a1f5ab4a12825961d85a","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x9de1925269f2c68a2a570647ecb170fc245db448","0x697652ad036a251bee98821e0dba68e196029f0f","0x05f9799b5a91258c63401e2be5c095af805630b5","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0x32e6557a77724385732df7112eb7693115171d3e","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x600d08d97367d9fc4a2c1eaee417f5ad0f55c8ab","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0xe00b841251b8d8f0f78ab5ccd541f3773b8389db","0x204074efcc1440174d6804c278af8df7303baace","0x988967cf4f458a4ab11c868d3729d7b05f65b20d","0x32743f06d20ff8965e8ffef3eee1dc5432668e33","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x7fbfba8204c9c15d66fe1429a072752081a23ed7","0x44e54f991204b2b25d2e567d7bfb3a724e0ccbe2","0x321b2c8e22fd4ffba6580e1a6014f7a8cc2721c3","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0xe614f620e1ad131d9ef45343548c064faeff25af","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x1e741f9bb96b9a990051936d841fd136d605e531","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0xfcc46b36098f6d2490097b0c6f0ac5c97b212d5e","0x5e9def163ece7711d23d4e7319013b10596dc14e","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0xfbd8b4519f24f81af52a4aedf3b78180b6dec1ab","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0xb1ecc06c51d2523145465c7c2c29930dd47f5947","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0x78133bc446f67848255781e79743902f7c762bcc","0xb39f1bb9044774bd7881c66e9f6563a4cf007273","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0xdd6bc886f14e607254d6f1a24321ed38bf8e3f5e","0xc47d0e72a26f8038a6a8b9e303808532856b3d5a","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0x03ea3830138e1a986a8013e180a6de5a8beee6cd","0x44e58743f9855c9ba574b768e8efa0338a009e03","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0x2ff445c7f72a85db44659adfb08140c59c4592a4","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0xfbe624883e445208cf927abc444f9a36a0eb155e","0xfb7ccfa8e828a2167c77ff9e2d5202eb8f631e96","0xc4f41654aca0b55782e6477c1f4b34af653313fd","0xde6916679c8264b2c4770a452cd7a41d58b8eba8","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0x474118147a047f8dd2679d14e5947490a21cb74f","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0x912a21f0fa0ae9976af3f5707b83b9a2aed6a895","0xe5641cbc73955b268995c6e4887fc196163b2b0c","0xc113d81fcd50957d20a264437a08fbe847a6a0cc","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x2fbfa0ed56fe9dd3f5a6737cd09a019210d5b015","0x83a9a014c2fbac123abbeb14f80ba275206005d6","0x977223ef93b8490e8e6d2dc28567360f489a3ee1","0xb363c97d17766f1021f138f68f912c94ee1d1623","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x2ff2e07f09a99dcd761ea0eddfd1beea3bef942d","0x7d25fbba15cdcb441f1280cfd3f6304079dacdd8","0x91342c51ead36ab67a274dfde3a2252b233c6668","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x3463e691d7473662525288560f25d8adffe98905","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0xf577148d8979ce41a707a47d8a72a114b535273a","0x8e570e5007a9cd7ebce23f49302ead902607e584","0xba62f48807dbf1d478737b50a122e5cbfa09a828","0xae8ab67bd43326e424b649050d33b704288af1b5","0x05f2ec23361c65b4636c64c78f47a827d79934f8","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0x0c15b9473d898dc914a1c290d44d363b5113aefd","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x06972cc41d56e548e615e3395f236fd0e812a991","0x3983f90047a33db4369259fae42f13429fe46bb8","0xe1b3f8b7710b2251bcb4ac92b31a9f6a3a17e0e8","0xe9907b110655a7c93c93d0d5c1b63727dcd749da","0xcca784a4e59e9cf4553dc817f106ce118eab7933","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0x56e67d7b2741c4b389cb281dc30829afecbc3dc7","0x9df85695cb25508e04c05f43c586eeeabcb41735","0x85a3ff9b19486ff1d4902562d57996f27ff716d1","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0xe60993ac8bb768ec437503811068b8ceece4ab39","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0x8f3e0270798a01b526dee0ee6d6019e36a20417a","0x34d6562861cee3d99f72a693b11a6c6c3459916f","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x591de72fed568f3b6c2c96ba5aaa58ffec5cd108","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0x68e3937876369d26a11dcc3b3581f7585a3a5bf4","0xb533c39bdc314a5469b3a668ec8110985ad29ea2","0xd61cf80adc9bb3ae18b4f2cd0044c4c2991aa4fd","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xe90d5ba82ef7a7d15997f8e12482e0bca6d1e979","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0x9fb5d1608d1b0c16047242e75d9197789793f443","0x67bb61cc05833e839a99432615a3403243db0cae","0x9d0be5f4ce3ed8a3b25d8a853664e86887b65024","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0x5d5c88952be741a1dcdf9b155a6ba5d7f63343c1","0x7656b7e94d8f7d548a7e054b00f54ad430543972","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0xbb1f823554d8f62804686edda026022db7454195","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0x64950ad846e0b9e61a6f606a90c29c9016dc909d","0xa3a1c3c360979e037a478543b607977313baa922","0x84aaaf0294c36551042c6681dfa0838fb2c3a66c","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0x558188b83af5168b62ca8f928d07dd51433b3425","0x69e6116d9d747642aeb45c2c1874eb0f67244503","0x76b10097c254c095fa792171870d9517ca4c8387","0x90723bbc9d8fcf70cf6bdb2b410a277a9b44917b","0x752e5fe4ca41aa32b82a0cb842e3dec13e23f709","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x3cbf2ecb330250d1ffef9585573e2af89dfd7a48","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0x22384967afb16984d5d1f303b56d25f2965363cd","0x993e1df7606613b14366dfd90dd0478d21772e80","0x827dbbe748a492b242a9a189ac578ef8876ee635","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0x7e4e7be312d007c6f9d3246f0816accf99bcd880","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0x41f6d5f63cba6344b8ad055b393c587b9f3594d9","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x7a805f5202cadac16dedb4d2a4264cc29c27c1ff","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0x8c9e5391866e6e05d2d884e7970f0f0793277880","0x0f698d5cdfdbdaac6b38edc504e698f74ba43023","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0xf9afcc2a89358ecc4220a53034e3188bbfea3140","0xf761753840d5547c4a632adb861f3615bc49dab1","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x2f65330c88181564e2208de9f776c8799223a633","0xae49cb1b2fe6cfc29e6ef7c3c2484d4ecec99fe5","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0x9c6b2b78ff0485f2fa71405eca70affd60ded2da","0x889d9f05211e99a91d520eeb22365dcda9a72644","0xd4bac2e66be26e9b3a42194dbb4704663465d74e","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x91ef622e7f3378ba99451ba1361b9ab656708999","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0x19e54e9e57cc0c5a0af142f345f6022903262667","0xaa3c5ab4627d5114e1565d4b483a93c9b8925628","0x416552278815a25c96acd6d4dccd2a417653d85f","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x3a50759e226d96f01d11e866e783553367f7ae66","0x8186b3cbd88c94e9fa7e20cb79ce33b0732173e3","0xaa2045d4f6c76211fc5e5c9c64fcb4224c2c3430","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0xb2486435ab56c626cd7aa25631c5e8995abb990e","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0xfd33e3eb2600b95645c2abb13d1c4cd4fe3e7dca","0x8f7823d11399c44d6d3bd12c1944e743dab55122","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0x46ca10a7adb428cc8b3658d88ecf0f331c8b0200","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0x7973502200b08ed0f493d8e3ffa10750f2897d05","0x9340c8716e8469de024e2b4332cfa52a252dbd4d","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0xd2c8c39e475cf92140626e93a5588e94a57c0170","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0x62fa1525fa43621c0a72f39bded0759063f297a1","0x107b55698d5c4f2db7c7020397f1a652d3080e86","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0xb2a08c0b893604dffaf06483e195b83145a55bf9","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0x703131daf8ea911feaf1a60f3c0ff6160e9333c7","0xd1aa8e5ce40ae5e6437b85c887c45828a739fee8","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x0e2c9eea0f814da7db2dc196ebaba7d6133993f4","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0xcde03566d2d324bc2fe22581e4d9506779e1e451","0xecc10f7dbb2833667cb8404806c4b25a5aa27828","0xbb90138caccbf3f9d845a1e64bd30fdc08b115cb","0x4cd60c8a00cc412638214eba42f82c848cd8b3ea","0x8480f3f5cb5bcd0aff9cab138fc1fd8d4865b599","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0x27e74133212825f7241de925bf51a3bede881659","0x149a5b994d061144cb61c9477857fab856dbfd0a","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0x2a922fed52c4e039e67533b2c0785f1255960d85","0x2f381172e2224f922bcc4886c98c147be34fd59d","0x04b88e1255463ef58877388e1e0fa3d457179411","0x09d453227298ef8e7ce12f5171322442d98679a0","0x4f174261fb3959b49a0b434f486dcc0529ee97d7","0x5539f8cb52c1813e70daa65cc70f6defa6ab73bb","0xbb8153590646f39c25ef2285d9d56805733f47cd","0xc0fc8c3c8aafc2b07250bc63858306c2748adce0","0xc913b10980b3d079cd9b0aa39c73714c76470bea","0x6b26ad1efbac209e6d94624a5140555eb68537f2","0x20bcf3dcba31672d875ef1934b0f24b1b616f0de","0x045e6833fa2b7bbd1a6cfc3cc2630a6e20ff9e87","0xaa2b32c3e9082fabb0f2780c31c1410420ca909b","0x031a5543b91c5dcb978f9877d5643be5d8f30c8e","0x24cd0db23a635f115300091449ffce559dda1b76","0x9b998cf59383e9ac0d9ff64117fed07896218f85","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0xb4c5abb3e366c5ff3f729713bf36e1c858bc4ef1","0x2848afd62180dfcb20951275fbf8179ad67d81aa","0xd442afcb44fe095e9315161a222fba53e17ce2a8","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0xd8c0d5523824994d43743f94dab72f16b306b248","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0xea73eae94f6edc7c4f9ba76bda8654fe47056f3c","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x6cca95fe2ae6dd29ed0cd425334ec1b2c9e0ce6c","0x6e8f37ee5915749afc8b291173837fd132099837","0x8b4a106521ae96a41b2ec405d3fcb05eaf4a7c4f","0x9195144e97fd60ba86eaec5b764f05409ae1e30b","0xad956de6b7b498f6e75a61788661e38d6c9d45de","0xdf08fe1b843d7f98d87fd266005e1c49b55c30ae","0x1b7df6b8e0829e1e8cfb9fc301cd7bd71b69ce31","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0xe8f5a834f4dd8c53e1351760356972fc59b11425","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x07c1444871cd7860ebfa06d118c49ef03de23f79","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0xaa3df90846c3d55c6111472e11652d6e8dc903da","0xfbdc3f73a2443bb416ed326b006041b7bae6f615","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0xf09de6992d90ad1d6987b9a8aa85019de93a7d9f","0xe02bfb4ff47cb177cef881583451b4cb8f5ff6ef","0x30541d093cb67e4c4e4cbd78d29eb0c172c3cda7","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0x523044de194911829e303470e5ccb284e1d4c96d","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0x85029f5ea54742c64632a27f47526825240fe285","0x4af24ef194344885afa2b575dad0f3aaedb94b1c","0x4d0fa0e4494d6ab2d9c0344e0b6e9f5434e0d51f","0x894d44046f35608e1ecfeca49f798b7b8cb027d8","0x5d9fa323d70441c70d8b9be597b629016c3af898","0x9b1bce54185302f3cc1e9d14212e1d0b13d8527a","0x95d52f89e069e183fab5f8ca3328072202f0cad0","0xc775a8a8f6d5f689134623b48a5fcc8721bc81e3","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0xc0561558b7d18f971a8ab25753eea597215c893b","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0x5ba944e3db959d2eb14b15f782ee5542097c727e","0x72d0779298e3297c63063e4d351252209129c7b1","0x4cbba90cf8969204d101751ce08998c474d176ec","0xab02a7dacb026179be5a0e9cda306a8aba1fd06b","0xc2ff0c70067a62a208ec6763a153f1eacc3146a6","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0xf12008f7a04b81dcfc58924157c95def01977b05","0x465e434c5160559d823ac97122dab8fe69910f11","0x958d983fe50176d844bcecf137edb95fd1afc540","0x9df9558781cb771006f010131a299a27fd41679c","0x4ddbb04e5d5cb68f0fc1f089fb7471e5d8deccb4","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0x7c4cdba4b2a1c79f30491296e461ab07a6f8081b","0x982fa6e21054217c3b154070af7616935b1a0576","0xc56524f364f26ef4c6ab1e58482323573810201c","0x6e2976b235637eb32d1be9b58bafe0eb8678d7b1","0xa68d8581be2e85193c58b2190300cc9e0c09a345","0x851e3805be7ec2991d56e27ebd749196d33489b7","0xb0d3173fffea8996e6f3df486f9eb021073dc86b","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0x10e1bf9139239735acf4314d9046e95dce245ac4","0x3db26bb72c4cac088ae41db663f5e548589d1f6d","0xbfb907dd6f2dd6072e436a960550903d2e971a94","0x42b75fca65042b86ec6a63a1803e5cfbcab02149","0x7f825692dfae7107d16bf4e2071fe06b1bc72297","0xa67a78bf7a23c0504441138fa9c64f816f9e1414","0x4180a0da3c4d833452150634a1e0141c20d34196","0xbfa4f33bc90151641dad7b839b78d73e30e429d0","0x1d47beb17226c3bd016cc15d0ca16cc6eb314ea3","0x5d2595924d34148b842d7a4a9b3582cf73a38cda","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0xbe325856260b1f98600bed3b2d469b892568b433","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x463d620dad690a455dce84013cf1d3fc52a6fe60","0x37ce6c6624f810cde5f8a5a6806513c3f429b465","0x1635ce4325eb96817610255fed3b39273deea95e","0xc5cc3bf3ec037b5a9c88c12aa32652a81ac1fb0a","0x457d89781bcfb0db89e2ca664e78574782f27a71","0xa187712d483127ed9c0f223119dcc49213123143","0x9222436d8b8ac3716b0660507d35073812e14d9c","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0x5599746948950205b229ba683824652cfb504e5d","0x92851633192abe05b58fb27f1199d26d208e1dcb","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0x6248d23207c36ee03788060a136d781baec52a0d","0xab1d7b51d17aa78684bdb3d99654176165e35f1d","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0x20e5c3a7b177b6f8bd17cae3c9013f65f0c6755a","0xd85c63984630836d1403f4e77682bba128bcdd25","0x43df2b78d32d22ba8ce77e13848e8b59ec3b7f05","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x4eb9448dc71c19585fdd99571b6873fef74ab5d9","0xffcf93dc89977641c0d3506cdb06c3d02d1214db","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0x1d25e931df103f4ff49a945ffb7656ea311a0532","0x880a40e5fd461451d6f77e67dc4e74c04b78570a","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0xfb87dd4273fb77f2c847387a765e48f025c01885","0x054260b3cd46b5bd67ab45792c15a9224605b9a1","0x253902b38f19ccc22e589b4c12beb21293a89353","0xfd6fd3da65775b1e076ec7ca1ea1788d6d4aacdb","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0x59906f80c0bbb49106a04555978f05d04a533b34","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0xb1e60835ac782815ad3db6db29c2898cbef6323c","0x5c3cb7b19a8980b300ee25b077aca5fe3c85bea8","0x64c4de7bae3989df15e1c77c4788fe1cb8281913","0x417e75cda2dc78efacbc9a4236738541e45430a6","0xed96045451439647c46c449016fd65039ce208c2","0x51bd80affe272e2f5576d2356681eac5a95e1945","0x6cffcc9b6c33910d40c4ac24f2a68c7cbe2af7bc","0x87f68331b3ce561e4967aef155086c2d3f7c138f","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xae9315bbe81325cf6bdb431d85981155e8fe507d","0xee318930f864178119bd8f3d36cbdc43b986c06d","0x9ba41755bbb988a405bcaaab8e1d0b046ee173f2","0x1c403bb27ad2dc82fb1b9c44c37f42889ffb22eb","0x02bd3355463d2466366375adb8fce857f6e0e6b3","0x0891c649fa92dc28400c0f175e94112172be07ba","0xb158d678ce9ed6042e59d929b2e73823ab1a5ecc","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xd8cb840fb68154297ea267b110acf2b8327ef953","0xf8c32c2c4dcd9461e33927809052fd84dcc44e04","0xc28e635715b808494187941bbb26248e1ce8e1b2","0x29477a93e19f6c0469cb90bfd96123c6646ab443","0xdd23b86646653f37575772afad9c34c5854cc480","0x5fbc2d71646936dcc2e9af3cd7e2ae20bf8e9f99","0xce5600f9ac619677ca3e0853d1fddd067919b3fd","0x3a0df50e161dc213b353dd8c75de8b709662821e","0x72bc750dbc1340889a21c4e804abe1e549c5cf75","0xec49ebeed63af5049d729d9840f5b49854a47156","0x3dfadcf87494364735076cd50be4a62864e65ded","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x9ac125e587f30e10f30de58f1f1cd193b726462c","0x3474bcdbb83c30608361070f8ffef1dfca8a4aec","0x7ccbc67f48a5663d1986331f2fafb3dfa032030d","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0x7510abad26a82166498fe8c660a98886ee52c19b","0x294b3782aef0848f8bb233172cc46eff8b1d3c49","0xe14c488ccb91e31531ed1bdc41d439696c82f684","0x64a4d26202702dc805b030a98e025e605a01fd08","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x0e875fa3ffa7f4765b49d2cdc1a9d691ffc06ee6","0x60fa0397c7cb60ea828e232850fb91016ee6c193","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x2844310391cd489c8e2dcd5ba7e34aa47a37c6ce","0xe2ab24afc85ae42de00765bcdd75a07ea2633098","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x97b0315a1e35ff45070c1394ed06f6207c1b46f5","0xe439cfd3749e431991a4bdd0be363f0fab0c556b","0xc9cbf0ca1bcdde90fab4f69d0f29cef696cdacd9","0xda6aabcf79948d7e85ad05c3b980f86046a308b1","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x8670923ef71d0451b939dcdd0309c6142c07d800","0x06bd38b0663535b69e218d85a83db7248b7d77fd","0xf432ad9835cdfe91ca0523a2a1e5cb3bd03dd219","0x6b1787f9e479a994f40809cceb74710e7991b571","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x699be501fd6e4e79415ce9db729a39dd3c04d279","0x4e8fcce4629c1239d5ac2f766cf0f6f0cf421741","0x901e267453cfa589954074affef982eaf8069f5e","0x33737e34d80c317e4e96ba9474223594ba5199d8","0x84dedc347d0975c965df7b8cd81c4fd26e45d279","0xcfb9720ceec369cf68f96de452403be7010db191","0x7772a9b9acc75f76aee774633ff8aad10c9d41be","0x9950dd62617f6123551aa61de4a31a0dee02a4e9","0xc6f7f2a795e3b807d9e92574789da4e64e77ac9a","0x6cb062197e25c84e9fec7607bc2769d1f2b51415","0x7763e34985909c72b92ad494d0d42fd92102efa4","0xed230f2ac91c0ffa8b374ce320846d375fdfd915","0x4a53eaf19dda2f251d526d49cf4772bd373fcb06","0x8d8a4f69a8cee838af1ad833723993b91b593045","0x283f2ca35223e12d680e20a7f71fcb30f375dbd4","0x6221d23e2aecefe15cff2f87b8387bce6b69e646","0x9f2d669c9a830fbde6b06fed594a25be6fd21ab7","0xa8300b92a403f9abe944d04512d07130770149fe","0x84009c8280d2248bdc82e9c9b636cbd958f4d169","0xcdfbc32c61b7cb47ca1f4e01c44b5be55d4b50d2","0x52ff38f0546972047b4be3e19ea7bfd8bd79e205","0xa00ba50f23e6377f74633610ab3a53b4a063ff7e","0xfc9224c1ee4bdb6a4f9b7a10ebc6570062835a5b","0xa82f14e8241cd61f823579ff89c805bbca270feb","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0xba99a18b335cd25c70d7911386637b0314ae714f","0x0353af851a3997b307ba28c57525add18080916a","0x4b0f3beaade897299682c30ce1bc9585d82888eb","0x5c0abcff80a9390983ed7f9fbbba0bea43005b0b","0xfc78aee970a4b57406e384bf3e148440d6b23728","0x4936c897275f60243d6273fb7c6330db5f6b6cc6","0xe03394fd8a4b8039c468d7f7a7ca41e97f097bb6","0xaf2e7312024dcd6713c5bdb855b8cf5c76086acb","0xc48b54a194f4176c354e2a77ac6fc6228859d472","0x4017205f4731f85fc870449e244375e7e8288c06","0x91c8786d1b32bd0e99a1591b59451c6d014bee09","0xb1827fce61c94b759f443ef4fd17f2fbcfc709c8","0x718ddaf9e38505ce9b8777cbcacc10979c5dc269","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0x4aad9cdb896db9f9cab630a4f002701cf8052c3f","0xf9cf263e79eaec3743f89684112e3a3315622eb4","0x1d3d60b8ea7fc12ceb502cab418e187a421db70b","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0x32843cb7d41d5db861c58199e0fcece1bd4f0d0a","0x361665f2c47a2b94081e1f0688ad9383446267e0","0xde7d93387cd255a214a8098c102ca45a3501a2f5","0x281895ec46aebf608beb1f722690d8b0e5b0838e","0xe38d71a28d964e302b20a10f3e36e7d263404af7","0x2a54543fc75ed0fba892e3165c4cb76069e22257","0x25d977a8d3e9f8742d53a35dfcc7138d6b92ec9b","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0x2ad807a0bb34dc4b1bc7fcb912f833444ad54042","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x063c2cb6aa70fcb1410f2f455f153d0664e92369","0xd218f2589e9baee8f0032057538eb1313f9752e7","0xb84180c2d8ef3d07d2bf8e0a20960bd12a879c88","0x0bc5db7e5d07337d59ab66de9c0c361eb3c52866","0x122d4c88cdabdc3f51020ff3e672b2c76af258be","0x592f1f366b0b9b6ba618ad9ed848ea23a85013a4","0xc2b6493c1b6a99840ea6fddfae0846ac7c1a5e5d","0x4ca78fa6275505f10b57b6ee933f3d666ca0ed09","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0xe76e1015997c1913303341f9b19a577114147563","0x07043ac357e1241aaa7b112f55d47b17fc3bf396","0xa2e8692908d17a004eee0fd6166b586bcfd2c3a1","0xaf4bdfaf2b7874318667ff37088cd6116cae9f03","0x1218f76ea1ae239edaf57aabad32dbd340fc8599","0xf4e04233ab8309a25eeb440c44cb19d3dd10c6fb","0x78a5a659a89f83d0ffd8a75388292e80b3babe48","0x23895eba2ae941da7e70cb5e4a19a3a355e9483d","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x6b7fa9818889e7e8cc7e96ce5673e08848eecc55","0xeac31644cda60c834e8552040662e1ddfc5ee37d","0x0ab6f34c4c1dc5b8aa0f0dfce733439fd6009b68","0x050cfb381da9235d71512b3c70fea9b47619ce9b","0xff062145b0c2fe9edaefb4e009ca5747f49d04f3","0x58b73ab099cc9fb28374238edce35e0cb541249b","0x02e65f52f46373a60e8f87c16e496111f4f47ef6","0x9884705f4e825a2174c115280c4d147379d5c33d","0x0b88c36e44b4e8b61622bd36435fc954df2c9483","0x59b3a07937e2715601c39f140d0f51d78e393393","0x1c84c8dacd2cffb2cccc5c4ca92104c1010d11cd","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0xcc00a9aaac8d1e3f56ceca81be2b25ae4f0462d1","0x5d4d3fae4d0282fd8a558b5f42ba700974cbfd1a","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0x2502ed67f3ae4f39d10b1d9a1730f53ea45970ef","0x714a044dd397315e276098a7031e0dc826e3eaa0","0xd8b2b7f42873f111348c835563e26865474337db","0xedabc24149b0e9d171ddd70d2c804fd80d02ac9a","0xff88ad51af24a99d2966b819fea4a64e75613730","0x67da2565ce6064ff72c97f69b7e248d6944b2d2c","0x6a383953523b17b7a06d43b34836f958f83c7893","0x6ded2bd77f2507115f55eb5e29d92248d1af8212","0x6942d2de08a37766e5327496b9398bcbc65253ad","0x10b6d83b1acca229c93bdfb6d5363960576d0795","0x66ff7c2943eb24c9c923a94c7c8959fede19ffeb","0x926391c9dd8ab1ec43a8d43e0721d71924f021d3","0x1381fc52facbd0de8a6de0471009bfc5be883b02","0x0a862efcbfcb4f63ee339950bd2414062107e079","0xc45558b3b0c57de26332d7c4f7b68b843fcd76db","0x1cdbb3f9382d335c3cf9027dd7061824a36fc990","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x80bc5c37b2838e16db0cadae04ebcfb5b0e7cad6","0x46dd680b2f8499d61aa5f06db3231f76f2d44a61","0xe9ca5136514d9988249d5e4a9bcd27c1eb200543","0x4d3e7a5c691e8d85817e1cfe7c0fcf7fc3d9d12d","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb7ccd311a970388ceeaa2f55c427889242b297d6","0xcc57971374fcdf76a73341a54996c4a6f8dde1c9","0xbeb467d146b0abef0393291aab9c580639b59e18","0xb27f45683c6511259790bfdb5af82a96c438cad0","0x1c7a3f19159a580dac91720e3d848750253f5148","0xeedeecd1d331298dd945da27fda21778a5d170af","0xd77d617f9ae24a4f5f65a313883538a13f6b6f08","0xbe9d3318c0c9cf238cd808cd7113d9c1fd823ff4","0x77f62b2dd47520f0e29663c8f208a40682202936","0xdaac0cdfa298c514d9ea59fd15ab24e1d93d776a","0x80c05c4481a8c31584780bd1dc59f3d9b56fccbd","0x023d6d39e6d094748a1beca9cfa177da5cc9d89f","0xda98823c1b88c06e25fbdbe032c9466d180e5306","0x8f0576170143731420237deeb8eb8764ac64534e","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0xea80928510d054dbcf04baa75317704e9628d26f","0x522558e26df98200e0f9031e246d47315c5086d9","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0xf8e150e7944edb4b765562163490baffbcf0fde3","0xb88651dbff1b81876b0e76d67fffedb64ccf14d5","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0x737160eece21845b77fa878320c4d907073d3ce8","0x4e7164b6fcc4e8f5b267b4bdb0db8f34b9394c0e","0xb7515a3b07df4e54becbc6de8e5ea17170395bf1","0x0467e993ae5216e318cf7cf27dd17d44d7724666","0xf525f47b64b012cf3ca2bd3be95949453ec5b253","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0x9467135a90023c731803289676302fa18e75f5fe","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0x0bfce37b6614a67eb769e98374161263fcf9e9c8","0x9e0d6e275ac85ea588c88b988dfb66e2535a13ce","0x3dce6720024f9cf835302924818f155acc543575","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0xf33075291298e2ffe53a6359071198e4697be976","0x815aa2a243a3dd5d19806a58b1c5e944b7f0854e","0xc7056431ddd10ff482af812f1ed892e3c1039f62","0x13751aab15d6d1070049dd48b6a01328f263f333","0x1624b16d8ed381e648a675987ebe4950a1dd9e88","0x951f273cc84b35fb67bce8a5e227bfaba05d1da4","0xbc71259b4c91357155b29b9a3d92580658fda2a0","0x0e99ca7f0ee2472f236062ac3fae3852d4f9f945","0xba4573701a054acd9220f0c268759a597bf579d2","0x4bce5704c5b51403a0308e6f632123181368342b","0x587fbe613c3cc991455f0ea531ff6006c0b8fd51","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0xbc8cfd052d1419dd9674cf177948c8965454bd58","0x30603dc7e128482c5395045801188bb628be96c9","0x750ed0d5c75c1ba91a677724298ae8ef678cf31b","0x568f47278f3176366e7a5906d3d7163750ea9b99","0x0f9a0ad7d90e74437c7a2b6dc3b2d4b2a73052c3","0x43362856b5263c27a0bc33a14f005890c1956899","0x3adf86f139cd90afc208152f80f56059c07bec6b","0x5d8652226e1bcbe99897f18a4c9b8995d793a16c","0x48d852570061cf9382048cf8c99e599ecf4e29d7","0xea39336fad1dda9cf3cd1eed7462c9d871c8af4c","0x6058a85aa2feedaa47d77142d223b06902dced1b","0x260b5483e3cb63fb58302da3aedd8e29ebdfbe1e","0xfc6600d3d71b0628272b71ee892b73cba28671b5","0xe7c3395111d739908d1d6671a1acc69f6b6538fb","0x8ed53686c39f432eb9d3875b0150bb36ae7a7204","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0x9b0a9561b561dad891f7624c7d0352de889cfe16","0x9f1cddb53f101f15b1bfb8251191979bb18262d1","0xbe41d26a7f059a6f87813a13f7001515f6c64be7","0xe07c0f459754a0d37a234b22ef8461e0e819f930","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0x04b5fdd6b783dfc763b9c778f3c75e18776ac159","0x3dccf8acae9cbc7ff6113aea13940f8b7aabc5a4","0x4da97fbb1e062f0c06ceecc6c6e630967861746e","0x1658d2ded0f366699dac1f776e75c619bba041fe","0xb4a4c177428677b459202cea9f9e0eca43b21c22","0x186cf8f2aa5cb18bfc5920ed86054bc1e22741a9","0xa55378cb5bdd084855ac6a504d55ea7c0c0f30b0","0x97b9864115ed3d3dc428799c525bbe9215c34464","0x8108c8061428a1cedbde50b213f3b7b1c43565eb","0xc2b35713f9ec1967e4a5265959471bb33eca92c5","0xc2817844ab0f9380dd4302490e1fe7d7a5143af4","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0x4d275214be7487ba210158c29d27c216829489bf","0x9cf4cdb8bcfc24f88c755834a5992ed322f1055e","0x74b29bed05623cbe43feaf22f3b862c800640c77","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x46d515dcd356908ea791a444a25388c4e8c29f3d","0xbcf60dd40450a471fd68e6270cc898e1edb1c395","0xf6f7a57598a11419385df885ff8ea8f1da885dc0","0x2c00b8a4af17fc9b926392e014f84f5ee394a919","0x7cd4d0944638cb30cfb9f8180d7a0b05afef0559","0x36fdadd410d8ea8a32d3486e84a0a42588e64aad","0xd563ca8cf68660f10d240a7a5d2720853650edda","0x439f0912342eef38cd480df839a7cb51e7be6217","0x4ad06c6bfac635ec55753293ca86d4e9f5514963","0xd14689dca1b1529d4d2b57cf1c6804c82dcb96e0","0x21fddfd3557f807fb308a97950c613bbe89baa7f","0xd049c7b37dd91a97d7281bddf93d62aaa8a8f465","0xfa67b23cc34f3ed1a17598bc5fc4ad68adc62ff6","0xe5cdb1057b0b267ec96b348aefd172a52ec16a4e","0x6bbe2a84895ca675b2bf8d3633e25118c12ef912","0xac702bd2ca3df4944c1efd8ccc2616b9bbfb9b02","0x9913c805ea1660b373cb7b4554e084386a207e88","0x75dfba2f6025d3021f97b32dcf120eb11a6425ea","0x1fde76e16ca451579ef2a5014c3ed250465c552a","0x8c4acbbfa7363db0eefcb8cec84124a38aedee61","0x2cab0f778ca7592950cf7a5f168448669a7c1b3c","0x0f44d3d2505fcb82b5b2d9701e1eabe902585f24","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x3438ffe33c3bc4b9047afd921c8903967d8c7061","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0x7b9bf4eadbb2145f05d562d24a985d9ad2673a79","0xd0c62a24ca3359e2dcfbefbbf7f73aba32f40010","0x804b1656e464b695b6fe1d29f8d861e3eb1e35cf","0x19ab0951ea07d27bdec3648ee57c498e61bbe58b","0x4b4e0b9b1d7814af6905af1f975db2b5ce2668da","0xb7faca3585241e899f3c96668bee199617b39332","0x8caacc188d4f0a250f131778dccaf5405f5935f1","0xb056cab887045ae0366ce7ef65811f51e7e83632","0xf48443c8e441a29ac3ad8560e6c46bcf0c82cfd1","0xe13a8a33b7919bd0b7eed1293a7c3d02716b1b6c","0x2f68b30838515d185e191dc88a99d1a150bc831b","0x781f4e33f9717b23ec4c859df776718684427223","0x20ce9de4bee4160ed7e9544bf7283be8e25b22be","0xeded89a4e49037e3e7da6e6671493a3b1f3788c5","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xa7473f10be830996c064185b9e37a49cd4cc5712","0xb762fc6fb322bc7eff978a4cf1257a28b84f2785","0x220ac4181502bec00c952007265a36c1f0af25cf","0x48f8dc61316a7569bdce0d14a94884a27cd803e4","0x945f8c340c29e3c9e0342787581027a8d3faf413","0xc76c9107f7632be9cb72c81ca223be7d0a98a004","0x92d9f5c2fb80e0be363082fab54f1178e8baa2f5","0xb9ac3bdc086c5773105177056b2a1a77d752727e","0xdaad6241ca10057f5f9001498aef5fce533cd58c","0x327a0e28353ccbf25363a78ee2069f6629b5d8f6","0x3be99211d5026097ba0f4f34440b64ef94af84a7","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x3fa09c1f0a47bf69cfc351b536160d7609d3d77e","0x05a7acce2d7bffabbc937b489a4345a6ff042e62","0x25e69da373a18f0a0dc9db682c7eb6f6e140a78a","0xdec5bd9693d622a570c47eb8dfac305994e377f9","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x6f428ffc388787935b9c5ddb9f6e26bbdac8fae5","0x3d7a8d624d20419c2166823f0aa4c85bd575b0a4","0xc44011d58d2ff158e22a886c056983255bc3d8f2","0x5002ba9fff1caf235728021048923efc01b045fa","0x228300c99eb4328662fa7423073d992e2e8bdf9e","0xc4e7f0e98eaf9a98feacaf7847d238312e178779","0x7eb92ca89f6872067238dbba6aacdcd2c2a90fca","0x8f68fef7f366177c5bd6bebf51b7d1fe3597c564","0x994a1d434d74a2803c9e00d64797d2ea096308c1","0xceb843304885c30042c5b52ec286952bb7cdb58b","0xbe1d23f9ff238d02616e6475726a11806a99bfb5","0x7948c307638e84c0156887d54f770c562f031f3f","0x752ed09d0956afa588b43694444b4d400cf5597d","0xcb91381190836ba2d3f7d23bfd214883efcbf8cb","0x6786e3cf6b7b7fab55038d452d2d197cc3176db4","0x6bcd9fbe0edc8505cd5d3b0ada06a57dd5b6c75d","0xaf8c87eafe8e1eb60e49305b78a5368ea3ba6d06","0x8963e2d4982a89824c08741270244af0acac5c2e","0xebfa85ed4cf40614fdcc6f7a5b6dbc39fca0fa84","0xe5e26755418bb65c6bead0dd7dda17a57cb64cce","0xe24f5471181fbfe7874a3227d97d32d5e0baf4ca","0xd4e2d1fc19ae8459293943d78352d6016a8854a7","0x4da717d6e45e4fed6ba6ea43791f1a14334973dd","0x690b20a1298afda6f1e1818de99c3802919d4281","0x93e7c216c25e53e98dd7bbfacfc05b5b1342ffa0","0x4596d82dfec93f2aa0dd68730a9c0550839035b8","0xbf22fa288bacd7ad784814d3a6c2f593c2d51698","0x62ccca85394c3ab9f0e76a3d2a3c798443ce016c","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x2d5d90af47bb302df13906eeb67db6dce8b238d6","0x7a00d6671d0ed8acb5c552198a0bd84947c2611c","0x722dcceda4491e5992017ad8b244dcc4d51215bb","0x06f7dc8d1b9462cef6feb13368a7e3974b097f9f","0x3bcb29cb62cc847c297a5c3fda379a10faba86b1","0x6407886b1bae3e1b535c6d47d7dcd56195b3c11d","0x69c5c424a2e606d931cc21fc676b1d8acdde9b8f","0x37edfb2576810db078e9a838ac405e787578996e","0xef4cb099ee1a785e6097fa8ab871eae5e1652516","0x6d477834817548d0fcacab2a066fef395198234a","0xe7bf0d0cbeec7ea8a99348b492c777bac69e1f89"] \ No newline at end of file From b7cab6b4383bef02354f6e2cc53c35e312c8f9cc Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Wed, 7 Feb 2024 11:11:15 +0100 Subject: [PATCH 19/34] chore: add depositors season 7 --- tasks/data/season-depositors-avalanche-7.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 tasks/data/season-depositors-avalanche-7.json diff --git a/tasks/data/season-depositors-avalanche-7.json b/tasks/data/season-depositors-avalanche-7.json new file mode 100644 index 0000000..ed0b54a --- /dev/null +++ b/tasks/data/season-depositors-avalanche-7.json @@ -0,0 +1 @@ +["0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x7942fe304321342371c1d9b7da3ede4f292ca658","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x42e750af4a823dd807784ac7f100f56f104d5962","0x37660168cee7fa1ad8cb10382ec3db04efad87cb","0x5d108e6a3ff87c7cfd6ace7f57f997f5aee4cd9b","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x9083e74fa0e9a36a5b4427c8d4f38f02b5892429","0xabaf7ae21fab058edfd665c118adea740390159b","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x7e8f2da0d7a944ec3f76a8c91c5c710001ceca15","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x5c263db138be88737ad66c01428ff847861ad8f1","0x74b29bed05623cbe43feaf22f3b862c800640c77","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x48f8dc61316a7569bdce0d14a94884a27cd803e4","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0x65f4923c646c62d5803940e94ac03da955c3c814","0x2464c45cb3040821a49773717ae4d375dee3915b","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x3972c0ac366b274186b469485c32c400fbd1640f","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0x52ff38f0546972047b4be3e19ea7bfd8bd79e205","0xec83a60886925e903c9e6cd2a8624db91e276502","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x980ece433b54caa56251d050cb90e706871cec8d","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x32e6557a77724385732df7112eb7693115171d3e","0x0102f6720ddf8cb686e3ea0ae8b397c56ac919b8","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0xb57980f93881da0950fd01d215c11bd3b411ea8f","0x6b1787f9e479a994f40809cceb74710e7991b571","0x429c712d9aa50a93a07377e3aef081e9ef343312","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0xb841ddb964e7c9309941732d6c3270f60986893e","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x02aeb91289504e7ebba064471eb64cd4757d7aa6","0x378653930892a0a40e1529ac6db1b9ff5b001010","0x62fa1525fa43621c0a72f39bded0759063f297a1","0xef4cb099ee1a785e6097fa8ab871eae5e1652516","0x6d477834817548d0fcacab2a066fef395198234a","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0x7fd8db24be5552ba3fc4a2c675d99a7713cb26ed","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0xab27b52d1bb9806344296b707d459f6e13b61be2","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0x642e10bd2974dc6c4587f900049bc3d45de0529f","0x1d1193629af57b00f5b350252646c63496ac8be0","0xa1fb7fa7d0aa54b9f0d2e88599387976bc1fdea1","0xccf81389129f506d2a278e1ace0b6fa942a6b4a4","0x37edfb2576810db078e9a838ac405e787578996e","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0xd9e63164bbe8935ed50190d839965c2616f8daa7","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x3d7a8d624d20419c2166823f0aa4c85bd575b0a4","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0x520292efec8711bb4d0768efd4c2bcf0d6371642","0x6815d26995ae88d912a4be4237196bd7f1dc868e","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0xb2486435ab56c626cd7aa25631c5e8995abb990e","0x9b1bce54185302f3cc1e9d14212e1d0b13d8527a","0xb72ad48aa021c977c9b6473002d2e07701629e66","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0xa59193fb01e9b0661ecf8270f2c98272530cad01","0x99c16079c89f47feecf45546053a859dcaaac997","0x5842adc8a15bf1aa419e38ea67242036b3984210","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x3bac8e1926dccfa86f4cfd820edc30ea4ab50382","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0x77b41acbc72d4c64d88fce50428100a13a84c186","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0x8ed53686c39f432eb9d3875b0150bb36ae7a7204","0xa27eacdcf251dbe4dfaf9b0865be8cb0195db0f5","0x227c2411f03630303483a88b6d4c49eb32a92f84","0xb2423e90eab0a24934a68a799b896616031f4c1e","0xb056cab887045ae0366ce7ef65811f51e7e83632","0xf48443c8e441a29ac3ad8560e6c46bcf0c82cfd1","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0xc5bef4cb2bd685871f78fd219b47ad2d2c562471","0x25d977a8d3e9f8742d53a35dfcc7138d6b92ec9b","0x24cd0db23a635f115300091449ffce559dda1b76","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0x64a4d26202702dc805b030a98e025e605a01fd08","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x5002ba9fff1caf235728021048923efc01b045fa","0x2a4b4d3ee28eec116dc523f1996e94c6cdbd6fea","0x61559a000912997cc40ae3127eb3757a16e0cac6","0xfe2cc1b99c0997a416ccad803c5f205b8f1b49fa","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0xfb7ccfa8e828a2167c77ff9e2d5202eb8f631e96","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0xf854eb944eee9dd131fcaa2e55be053dbf3e7b93","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x945f8c340c29e3c9e0342787581027a8d3faf413","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0x994a1d434d74a2803c9e00d64797d2ea096308c1","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0x186cf8f2aa5cb18bfc5920ed86054bc1e22741a9","0x3245855c9861c0139c4ff1a0bf085c68d6df20a3","0xa15704171245d148206a8f1240eb51cf3dadc368","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x07737aba415bd610700663b633c4babb827f38aa","0x9b0a9561b561dad891f7624c7d0352de889cfe16","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0xac56fc694e06e536a384d273bfc318650cb135f6","0x8c9e5391866e6e05d2d884e7970f0f0793277880","0x3bd75973b3a6bd6eb69632898182b0677216b064","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x64950ad846e0b9e61a6f606a90c29c9016dc909d","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0x2ecfefe673706b361dc5817d23484f997db79984","0x27a90a6825132eb88e8feaafe035658663c8944f","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0x8316d8837b456ea3b60536b14c62357652b7e416","0xdd02664cba1b7d6583cb4121a84a678be9b2e7ce","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0x385990cf1958c75bb1d6a6856ccd38a4d41f6d95","0x8b4b0132950271e18cebacd5288aefbd9dfa6a2e","0xe50de4168631a6c35873865b198eed4532145587","0x065a015b8dfaa2039b56eb6268218b99e015b619","0xebc71d2a556a237ae32c596c9771b6e0ee69ab5a","0x2842cddf4ea26d3c73f558ecf81b1b79b027583d","0x023d6d39e6d094748a1beca9cfa177da5cc9d89f","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0x4109f107f1b027799e133bbfb2581ee195ddea04","0x3fa09c1f0a47bf69cfc351b536160d7609d3d77e","0x5288e251d87540618cf67a358f04fb6c393f5c88","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0x26014c73e070a30e5468225f19d1d799397a2df6","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x9ad3a5e6b77aa5dc13e0bcce358a8fb7cbe73966","0x8e9a2cea15733ddc69e1021f78c74b9aba534674","0x9de1925269f2c68a2a570647ecb170fc245db448","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0x4aad9cdb896db9f9cab630a4f002701cf8052c3f","0x3b092a263e67dd9560a3182f42ff567f2f921aea","0x7b9bf4eadbb2145f05d562d24a985d9ad2673a79","0x209329b630ee09a04b37b168970eb66f422a2025","0x4a53eaf19dda2f251d526d49cf4772bd373fcb06","0xf180c14dcd820f4622dc9a653f8688844968e47d","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0x827dbbe748a492b242a9a189ac578ef8876ee635","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0x06f7dc8d1b9462cef6feb13368a7e3974b097f9f","0x71742acc750cf449b58831a8b28a9eec4ceb70c8","0x4d261de6de5543173a39c7b24cd963cc014adcdf","0xceb843304885c30042c5b52ec286952bb7cdb58b","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x62ccca85394c3ab9f0e76a3d2a3c798443ce016c","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0xbb1f823554d8f62804686edda026022db7454195","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0x06972cc41d56e548e615e3395f236fd0e812a991","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x2a54543fc75ed0fba892e3165c4cb76069e22257","0x60bf62067dd3155f3acfeed177b872fe30214c58","0x3beabf3e6bcf363fcb3752158b1e1911a05540de","0x7643df115bcd333a0b4c651d114f25a617c735a4","0x50425ec3b3f62b31466c225a51d9d1a405531eab","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x0353af851a3997b307ba28c57525add18080916a","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0x6176feb65958f08ed4310c4b2900fabd5d8ae894","0x24cfe19e9240d03a75968805afc00610cef0a867","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x7e89daf03d3e81d81ba6a242fd05646faef524b8","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x864ea716df37cb55823681d04cf3332a851d54e0","0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0xedcba6be63ef49ea9422eaa82a94949e06754252","0x44021db3162e5baac4637ae1520077473e25bd92","0xf9c9cdf8d95c211188313f7d3ec29128fb900872","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0xe90d5ba82ef7a7d15997f8e12482e0bca6d1e979","0x0f698d5cdfdbdaac6b38edc504e698f74ba43023","0x97f46368175b980b7124e38f0af4daac008a058f","0xb7faca3585241e899f3c96668bee199617b39332","0xdec5bd9693d622a570c47eb8dfac305994e377f9","0xfc6600d3d71b0628272b71ee892b73cba28671b5","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0xe2d3f2a9bf70af50c4d574f1b670ad54442c9acc","0x3bcb29cb62cc847c297a5c3fda379a10faba86b1","0x8b6881a8eff0ce5cc642e8ac23277e2160a68e94","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0x894d44046f35608e1ecfeca49f798b7b8cb027d8","0x21ceb56a7b1db662283486e4acb822d0ed35570a","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x781f4e33f9717b23ec4c859df776718684427223","0x237deb0192880732869926af2ec85a6a64c88e8f","0xf09154455fb83411a2c2ada0eff7a4b28ea510ca","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0x294b3782aef0848f8bb233172cc46eff8b1d3c49","0x57f50af8110af03ae21d8c483c39baf06235126e","0xbf22fa288bacd7ad784814d3a6c2f593c2d51698","0x4eb9448dc71c19585fdd99571b6873fef74ab5d9","0xffcf93dc89977641c0d3506cdb06c3d02d1214db","0xff88ad51af24a99d2966b819fea4a64e75613730","0xd8c0d5523824994d43743f94dab72f16b306b248","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0xec49ebeed63af5049d729d9840f5b49854a47156","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0x339568c1f3e2e5adb101a54dfdf6b26a83b0ab2b","0x72d0779298e3297c63063e4d351252209129c7b1","0x07beedcc2d7b0ad58ecabc0a167664ba148b8abd","0x9df85695cb25508e04c05f43c586eeeabcb41735","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x13751aab15d6d1070049dd48b6a01328f263f333","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0x564621bca495fc73fdfd7fbca3be85d7ff18fb1a","0xe85054783ac72b93a082bf579b48615993c1559b","0x958d983fe50176d844bcecf137edb95fd1afc540","0x454ee52c7205106e373ba269fb681d3b206d9c50","0xe999be2f815c563e81ff2813a900fa87d4ed624a","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x19e54e9e57cc0c5a0af142f345f6022903262667","0x743fe0b59467e55224220ab61b69da821d09bd6e","0xc3e36dadc27e4dd96ca436d5d7da0bb6d6f7cd11","0xf2fc4f6c2ba2e81e4a81dd7366b790d276fdd007","0x68111f294f964c051ebb38209d3d00b1767870ae","0x061cf116faa818ca47037090412bb83298c8d152","0x26672765c04c1dc3cc3290a79d8550a7993d785c","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0xdce4b61978e3b2f6d135142122e6c78682c59836","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0x0e99ca7f0ee2472f236062ac3fae3852d4f9f945","0x7cf80e9484f5b620824902cf75bc229bad99c361","0x40479f5b6dc643ca4c0112dcef1be77364fd3c8c","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0xd9f4da967fab291e475795c877504450c26de279","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0xa333e486608821200004b98212355a7df32491dc","0x88b0a6736c015cea795c33d567cb49e5e17bbe6e","0x0a862efcbfcb4f63ee339950bd2414062107e079","0xe60993ac8bb768ec437503811068b8ceece4ab39","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0x84009c8280d2248bdc82e9c9b636cbd958f4d169","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0xc678090d264ef66fc354bb66875ffb40e9bab97c","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0x88b1c46079dabd2f2cd1b612924015f776a50178","0x1644112ee11f2b6cc8a351e2df5576509ff73d7c","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x253902b38f19ccc22e589b4c12beb21293a89353","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0xbf24d50b1eb6ee2bb4d1397509b286718f2cbcee","0x1658d2ded0f366699dac1f776e75c619bba041fe","0x6e2976b235637eb32d1be9b58bafe0eb8678d7b1","0xb955f8d342678eb72d441999744ce9fd6ffbefde","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x42860175b3785bd2fbfc62719e8f28d1fea29a8a","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x984becaf762a006552706f5cf0f58cce09675b70","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0xaa3c5ab4627d5114e1565d4b483a93c9b8925628","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0xeded89a4e49037e3e7da6e6671493a3b1f3788c5","0x5599746948950205b229ba683824652cfb504e5d","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0x93fe43db40c997ae784143f060032db16293d93f","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0xd154c64fc7dd159e0b2fb3320524bef33440e5fb","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0x28158e7461a8c65a981daa557518a349b5647aa4","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0x151dc4a4d891c50ec1c29201b639a2a950b7841b","0xcedc2c5dfbd508f25065614cf7c529ded9bfe552","0x474118147a047f8dd2679d14e5947490a21cb74f","0xc488945dce7e2d2333a8ed89f4536d64cc76c382","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0x6bcd9fbe0edc8505cd5d3b0ada06a57dd5b6c75d","0xaf8c87eafe8e1eb60e49305b78a5368ea3ba6d06","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0x2bfdea06e45097a135e1e22e5dbe5eff9b7b06db","0x0e10816ac60b5ed3776864b259b31abd22b66955","0x2d5d90af47bb302df13906eeb67db6dce8b238d6","0x993e1df7606613b14366dfd90dd0478d21772e80","0x872b2ccbe2601b8e133234aedfd876b0dd70bddd","0xdf0c403bf50801b0437671114e6c05ea6e310499","0x25e69da373a18f0a0dc9db682c7eb6f6e140a78a","0x989c4ab6b59d4086b5eea91ccc7c78c2b8ff629a","0x051420d034c5b5f3871ef75626347721744ada83","0x56c3af2c9134b27d1fc57c0ed3776e3fe1e740f3","0xd96f5f9b05d173463e05cab60b5d06c15b1d6aaa","0x6775e9d38177924b56ae8ef5b704003224d7069d","0xe1dc5292ea7cc83e108c8cfa02cb1082865e1acb","0xa966df3607e99596158718ab7b16ca8bd6b55d94","0x23cabd8f79e13afd7e22519b8269b610c96a8348","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x9467135a90023c731803289676302fa18e75f5fe","0x5aa0db49a1dc5ebc4537f19e816157a9942d039c","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0x6ee26afdde94b7985df756d7f2d70418bc9f0720","0x29477a93e19f6c0469cb90bfd96123c6646ab443","0xb391bd4ab47ce7c7adb278189944c0bf1d05c413","0x1624b16d8ed381e648a675987ebe4950a1dd9e88","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0xf577148d8979ce41a707a47d8a72a114b535273a","0x8e570e5007a9cd7ebce23f49302ead902607e584","0x826f1ce9c5f7594ce16bf0be8172883150faad63","0xcc57971374fcdf76a73341a54996c4a6f8dde1c9","0x3a0df50e161dc213b353dd8c75de8b709662821e","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x2ff2e07f09a99dcd761ea0eddfd1beea3bef942d","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0x1ff8bde727bedfc9119e999f5cb143405f17990b","0xab10b65949be68f060857c8c42bff2ae27890a1b","0xd687af1f204ca33c77927d0e0f8cdeb4cf169684","0x3bbb7e84cc5499daf3736b1f827acf408e45408f","0xc99a0cc97e42ba76b2b8c6d19f976f5e8b2a577c","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x69c5c424a2e606d931cc21fc676b1d8acdde9b8f","0x3c2762a66ab9fa72eb163dcdb5d40556cc4e70cc","0x300f00437198cbe0f841c7db55a1fe970b6a5319","0x4233b033fc4348d14e9e81cd3d8f95ac51b0fcef","0x94c740f171592fcc0b152d90a177bec88e541974","0xc2b35713f9ec1967e4a5265959471bb33eca92c5","0xe00b841251b8d8f0f78ab5ccd541f3773b8389db","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0x83efe85f64c2beff2c8a7a7a7d9dad66eeb1b916","0xfbb4fe9d1e6b0b8d61dd011350cb761297b52a03","0x72bc750dbc1340889a21c4e804abe1e549c5cf75","0xd57fb63d9ec0c08555896d625b044a5d68055754","0x5ba944e3db959d2eb14b15f782ee5542097c727e","0x7ccbc67f48a5663d1986331f2fafb3dfa032030d","0x1c2fe0556ca8d260adcc800846a37600645f8fec","0xe4c8f1d1d5397af88da84d24a99a59c06a99b4fd","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0x4c269248992cc1801a06d0612e05242d2d15cfa1","0x05a7acce2d7bffabbc937b489a4345a6ff042e62","0x8f68fef7f366177c5bd6bebf51b7d1fe3597c564","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0x2972eb6f0f2edf35016a4ad7a431e6dcf0233ffe","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x6656da8e7339ba707ec346d660276e7799843eaa","0x3ddd4106195934cf4235bf477e2f0c9ac42e4db2","0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","0x04ac91676d54c44f63270f872583a24660a5f566","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0x4205cf51a09f8e4e8f4dd632abe89b3415cba6d3","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xa95b7239594929b61f2e0a8987838ac9ca350aaa","0x2e0771c37beee66ce8c7e73a282cb03fe78bf092","0xdee0a8bf3e592277b3763e28e60e97233a98ce4a","0x1e050ca02787ab13d2006c9f06801789546a9eda","0x69404a89ab44f18cb71e9dc9339ef62a8cc9e96b","0x9df9558781cb771006f010131a299a27fd41679c","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0xf12008f7a04b81dcfc58924157c95def01977b05","0xb39f1bb9044774bd7881c66e9f6563a4cf007273","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x2217854468cfa2eecc21761bcc67a2f773aa1425","0xffcbe5a6d807d47deea491cfc9a606fdedfd8ea3","0xaa1596bad40285ecbfe048ca60fb0aef1b2fc73e","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x64edad38cbbc84a8f9eee0ef9db1dc1c707fca11","0x5445c0a61914c0b2aaa759656bdae2cbc8eedaf3","0xcb4032379caf07bc41c7cf2a10763f99a170c2ed","0x49018ad25b689ff946267883830d3087b277eb52","0xeddfe24144eb4c6644106655634dc29b73ed352a","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0xb84180c2d8ef3d07d2bf8e0a20960bd12a879c88","0x7eb92ca89f6872067238dbba6aacdcd2c2a90fca","0xdfceb6d502812116cc0b965284a08e6b9a526a49","0xf9c2f322398e58dad8532716d751a7447ab7e299","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0xd458dbf3e605cfad84bfb3516bfbb499023cd7f9","0x5e9def163ece7711d23d4e7319013b10596dc14e","0x5feeabe666ef28e055ac4fa72d17b541599fe61d","0x1a4edff5fa2c6116f36c4c950f6bbcda46d74177","0x8e5f2de4879c80986763619f297987fbea052474","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0x2f381172e2224f922bcc4886c98c147be34fd59d","0x8108c8061428a1cedbde50b213f3b7b1c43565eb","0xcf525ee8cfc59ea9976f85cec0d24b7cf6ee9bbb","0x4180a0da3c4d833452150634a1e0141c20d34196","0x87efa46bb2cdd706f12ef46e2e68ff7e0d5088b6","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0xe5cdb1057b0b267ec96b348aefd172a52ec16a4e","0xd964d7e9e3bdfd1d9928877347dbbe29cf39348c","0x2647050446e6437558c6df9313c412ee97ba7d19","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x46c86e18d9073d0f3d4899b733c73f940b11e296","0x97bb19836e60e7df1262b9d131074c64a1299eac","0x549d7b6fea00fcbc4aa70abeb73fc1c88d591bd9","0x24ff50d3c156a2d98fca3ca0bdab4c2d2a693119","0x41f6d5f63cba6344b8ad055b393c587b9f3594d9","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0x510388680d11d4473b4fca975dbc8b1922912e72","0x6b58c9566780f63d8c56fd2c96814be2657467e9","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x15ef3708be7c8bfab5357be38acfb2159c625832","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0xf9ac202a6f75ca67cece7937ab36711c4e25b749","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0x502a363cc5c22c7760a086261d39c1d866cf7dcb","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x8f6a052fe9229a4cf3a4b327f4c05675d2e9cd5d","0x7e71cc0c8f636f33ef4d7522bf4fc71e0bced0f6","0x7c1f434b31acb3d4b808e852b7228ff5d38b3032","0x144fe10482fc1384cde291b6e01ca868b9355eca","0x1f94a12e745ce696c9338a1db393e0125f218740","0xd77d617f9ae24a4f5f65a313883538a13f6b6f08","0xc8f2b69718c9cb98ffbe4a22d35d0cc719bd1af0","0x4a77b90f2af54e302a853a9b92e90826fa0742a7","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x1c84469ee010a5c1fa0771aaf450bde11e34fbcf","0x1e741f9bb96b9a990051936d841fd136d605e531","0x30603dc7e128482c5395045801188bb628be96c9","0xbcefd945c037ee574ecaa6e2e35c61cd9a9e9e5b","0x85b5a8344a1724cd534328e4006bfd517daeb503","0x7fbfba8204c9c15d66fe1429a072752081a23ed7","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0xab1d7b51d17aa78684bdb3d99654176165e35f1d","0xed9c900699971b5a050bb9fc45ffdac30fe5d22f","0x6407886b1bae3e1b535c6d47d7dcd56195b3c11d","0x6b3484065dd3c73841f2590251fcbd582de77e82","0x8b4a106521ae96a41b2ec405d3fcb05eaf4a7c4f","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0x4d275214be7487ba210158c29d27c216829489bf","0xb847f453ec067377214f90a20826afddf0319eb2","0x8c39df93724f9057f083434e8b954370c7a830ed","0x01d985ea44d2eee7a786bb27f307b96ab3d7199a","0x92851633192abe05b58fb27f1199d26d208e1dcb","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0xfbe624883e445208cf927abc444f9a36a0eb155e","0x25d872fbb73c37fc676c3784445e395bb9cf9d63","0xd40908f2b93fcaef80067c6c541249aabd5531ed","0x5984a688e23d415a58dc4be3d612d609815e0f5e","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0xae49cb1b2fe6cfc29e6ef7c3c2484d4ecec99fe5","0x5d2b198c651a02072f934d9a0189f9879ca69698","0x5ddb8e92911fe1685521106fd7bf15479059f412","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0xcc00a9aaac8d1e3f56ceca81be2b25ae4f0462d1","0x02bd3355463d2466366375adb8fce857f6e0e6b3","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0xd2eff1011f61eecfadb41929d9e68a22e2e1e4bd","0xabd3e31a34d621a5ecf943b7783a72ae7428344a","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0x9fa5921ef2012f37b9e8911a647ca34c92e46045","0x418625547ad4ddf64d3ce64867135769155de92d","0xd1f3da11afcaf27e0f8a547c67b02db7d0559147","0x68320a84211280426ebe6e77c1c74ab0a5f07194","0x6e5c61ea802d020ef81b9a7a406ec9cb1921dcb3","0xea5dc276aa321978961f887105081d7da5b940fd","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0xb932047206f891b7a8a8c867969e2908da869892","0x0f44d3d2505fcb82b5b2d9701e1eabe902585f24","0x85029f5ea54742c64632a27f47526825240fe285","0x6dc9044c4b848a81ec467f37e0c253d4fecf7de8","0xc97b6eeb9813e50cca714cfad479cd8647701b46","0xbd7c1c8073bdbc784239ba5822dedc12dd70e5af","0x12372b0ee93cafe88d00ec53da94ca73b5fd767e","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0x7763e34985909c72b92ad494d0d42fd92102efa4","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0x53375501b0c7dbc62626c0c3aaa337bd51f36c24","0x45b96ed5d5b18f4f865266d8371c662cd241e6d5","0x483028f6531db87645c67cec4bd97777ea90b4f3","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0xabcc15e6dd037320e61cdd4a427b6db5ed91c40e","0x980bd0360937776b469921255f9f1d59a2db0dbf","0xc4f41654aca0b55782e6477c1f4b34af653313fd","0xde6916679c8264b2c4770a452cd7a41d58b8eba8","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0xf04b63e3a86dcfe5400c4cfd23b4c0a8dc2e09cf","0xe10f4752c7937db2c53dc5deea2643cf16077e4b","0xac702bd2ca3df4944c1efd8ccc2616b9bbfb9b02","0x23895eba2ae941da7e70cb5e4a19a3a355e9483d","0xa7a0579fe6d6f258106c8d5d3830c3ec913b3296","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x151b684182558dc36be6f7ab581784f4f4f8bdb5","0x1009af9f39fc16f6a5ea531be2968a9d48fe5303","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0xb56e0bc0ba4735887ebd29933589216cd619fa19","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0xb982f7f0254f390f5f0dcd7e5269bc52fae9f69d","0xeca885f1c55f5ad7b162107420b372786389bad1","0x9fb5d1608d1b0c16047242e75d9197789793f443","0x67bb61cc05833e839a99432615a3403243db0cae","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0x697652ad036a251bee98821e0dba68e196029f0f","0x204074efcc1440174d6804c278af8df7303baace","0x988967cf4f458a4ab11c868d3729d7b05f65b20d","0x32743f06d20ff8965e8ffef3eee1dc5432668e33","0x2df4eeefa9d926025d1cdebb7f60979432453889","0xd8cb840fb68154297ea267b110acf2b8327ef953","0x0f087166eba61d90500131348a9b3f69e0b9bf25","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0x866984fd11cf74b356fa8bb79b1a8d8f5a7fb968","0x558188b83af5168b62ca8f928d07dd51433b3425","0xd4e2d1fc19ae8459293943d78352d6016a8854a7","0x9e0d6e275ac85ea588c88b988dfb66e2535a13ce","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x15062c79c764317bd069a7e236550516fa5d0c80","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x298f3c3487e87a1ce12100fb16e1f5589e350198","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0x93ed0385744d83e6e257a72ef993f67f4ef263d9","0x1f3340a3b39db5dbc6c5d46d5669e2e66f04e97e","0xf53a569b8c3e8466b7ca671cacd7be66d9b171a0","0x880a40e5fd461451d6f77e67dc4e74c04b78570a","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0x59cf09d68940636efc588cf86618d3efa2414c39","0x76d6707aa039b589233a1beffdc429578c3355a3","0xc45558b3b0c57de26332d7c4f7b68b843fcd76db","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0xc0805e89313fe3251072016bb8d1c02a38aa5632","0x0efc56448f39d84fd85e631dcc40fedac152c2d3","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0xff4e6d4c310ae881f5f622247aac56efe49927d2","0xa1875c746636634e8f55a8edeb0feddaed2488d0","0xb2a08c0b893604dffaf06483e195b83145a55bf9","0x8f7823d11399c44d6d3bd12c1944e743dab55122","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0x68d68109c301c10c6ad2c2519842f311b868cc4c","0x9aa4b22a616d5cbc6834d3e5da877d17f93c2b77","0x1e754a08bcee0c9284ca4c518a4af7897b8d3a66","0x154e51835f7dca0b02f5a0513811c654ed4cf924","0x465ba1a17d280888ecd7200bd48547d791c39977","0x1635ce4325eb96817610255fed3b39273deea95e","0x228300c99eb4328662fa7423073d992e2e8bdf9e","0xcfa14a6ed76b8881ee565bf22323e64ab87cf938","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0x1aa75658c6d0a1875eda370ef2fa75c3b20f5998","0xf0b8ecf5e5ef1cf80e91f9a6ebd24d6416d2cf6c","0x87f68331b3ce561e4967aef155086c2d3f7c138f","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0x04b49ff522641350151a4de4e5dfe9d2468efce7","0x982fa6e21054217c3b154070af7616935b1a0576","0xa52596ab19b2ecc92126e37141295d438fb9b00d","0xe614f620e1ad131d9ef45343548c064faeff25af","0xfbc5a814b59909691798dedb451239df30e48758","0x5539f8cb52c1813e70daa65cc70f6defa6ab73bb","0xf68215537766a3a8bc8409fd38f3ad645c0ffe26","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0x6ecc25972d5c7d4a3348fc69d6b2cac068ee27c8","0x9773923089af8d94c5cea81e88047f8cd4b6ab83","0x3474bcdbb83c30608361070f8ffef1dfca8a4aec","0xd049c7b37dd91a97d7281bddf93d62aaa8a8f465","0x3b49bb4243be3deb9044510fd8d0c442fc2bcefc","0x8186b3cbd88c94e9fa7e20cb79ce33b0732173e3","0xaa2045d4f6c76211fc5e5c9c64fcb4224c2c3430","0x3e459c4683209d2f1bc9b77a3588970edf9ea281","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0xd24db7da55d9e3afaafa636eaf9775d683d6e5f6","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0xba4573701a054acd9220f0c268759a597bf579d2","0x1e98e5e67ad1d5e53970c0b634ff9ec6ca2b3fa9","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0x0d7d026e537205a7eaa749edff3e767e42502ade","0x681caa36d91aeb81f0c65b3de0b7bddfbccafdc8","0x1d25e931df103f4ff49a945ffb7656ea311a0532","0x095ce1a6a1a916c0f13271bc40e6b0a6bb9186f7","0xab8e0f234f7944dabbb59a970de9db4d6b8c4e6e","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0x95d52f89e069e183fab5f8ca3328072202f0cad0","0xc09c3ded8e674350cb74f11c2afc5a785ec25425","0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0x6bbe2a84895ca675b2bf8d3633e25118c12ef912","0xd3a675df46208cebed56e236f86e650829e22f9d","0x0658b45130b69aad47a01a3a898be5eedecb24c3","0x2a922fed52c4e039e67533b2c0785f1255960d85","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0xc7056431ddd10ff482af812f1ed892e3c1039f62","0xf09de6992d90ad1d6987b9a8aa85019de93a7d9f","0x64e4c7f705a88e785d1c9d1bacce7eefe5d33116","0xc27258e8dc226488e9e3c5f7dcb3ad8a41739982","0x7c2684151bde3002d79cfe19e1ecf4de015a31ec","0x055348cbfaf21fc53656039604ca6047bde5d300","0x21efc3dd7d7c85fbe2bab255d5b405f5706a277d","0xd361452fbe788ef971713d3e2a6565c99d2735d2","0x7a805f5202cadac16dedb4d2a4264cc29c27c1ff","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0xc59ac386682a51af447da70f53f2ff815acfec9d","0x3960e96ed17b7a45d098dc44a99f80b41ed1151f","0x59259dd3e3f5eb4bd910adf379e33a443b1d1444","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0xdbd3d4cd70e88f24e17fa2335cb16dc8ff74caf1","0x30541d093cb67e4c4e4cbd78d29eb0c172c3cda7","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957","0x6aba46ec3ed56b7858316050ca4c2dd43c23fd93","0x9bc8cb3a54b5606ae8e31a57e536d21cefab3764","0x8742d030d9f3dc15eccc99c50c8a6c783f96e211","0x7318c5252e06a09db4953702119e226bf9845c16","0x5e234d462a6ed6b11fc21bb1d2fd27dd1a904383","0x3463e691d7473662525288560f25d8adffe98905","0x8c4acbbfa7363db0eefcb8cec84124a38aedee61","0x2cab0f778ca7592950cf7a5f168448669a7c1b3c","0x30311092566d230442f524b8ddec3999e4cc2693","0x2848afd62180dfcb20951275fbf8179ad67d81aa","0xde439140ac796eee9ab0c93a42702f3b4e194446","0x4b48ec1478ac751e777a0c1edf1ffad640ce8335","0x815aa2a243a3dd5d19806a58b1c5e944b7f0854e","0x6e9b6930e68bc3d9916574d20f6fefff66988e82","0x0d2c5018723475800677676dbe58725f5ec788a5","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x591de72fed568f3b6c2c96ba5aaa58ffec5cd108","0x75691b11ff81f7f88510cc81fd910614dfee92cd","0x06dd5751f9b6e0e6aacf1f72aa439c2c9f5fa18d","0xa845b97dfe63912a2b1b915f111dd630a630c787","0x2d748fd2f4c033b2541d3e1a312d5752fd0b6702","0x4bf6fb743a74b16d8885fb4a50ceed239ad95665","0x80b2f3b9132a18f1285cc11a6f1614a12ed7b9fa","0xde639c2f28378ab59702354608d51b11a5019c3f","0x2643f0288b40451360b96b2b62362d840bbe863b","0xe7bf0d0cbeec7ea8a99348b492c777bac69e1f89","0x979b58690ca3889eeb846376d47d830a2823d796","0xe6eac0f55e3f5ecefae3877015fb8631c95a3a45","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0x568f47278f3176366e7a5906d3d7163750ea9b99","0x0c9718718f7b1298472cedc4c61ebd560f34c798","0xf8db9306fc5a3037550312e3fd3d346a031e0590","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0x21fddfd3557f807fb308a97950c613bbe89baa7f","0x8c4ca0570f0251b72ab74dc24be6c1fbe8333fea","0xb8fab5a74a588065f201618dece10775494c4110","0x8bf0999be9379aff63f6b418e462e1ae215e8f5d","0x3adf86f139cd90afc208152f80f56059c07bec6b","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0xe1d8e74bd951a1a2d2524a40f78f4ecf51db079a","0x62e1e5116a7f0ab0a7a98a2e43b15b8c91177dfc","0xbe2aa9ff18bcfac8b394ca9732fb58de0d60e4be","0x326398d6ae0ff317d728888002a203b83eebd54a","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x8c01955de31db82f9a88be01736d6eac1b3ed23b","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0x6221d23e2aecefe15cff2f87b8387bce6b69e646","0xb1016e288b7f516ede01035d3321294eefac0fca","0x7461731009e947f9a0f930bfd97e589b51b41c72","0xdb8e41e7e6177926e24b3d3cf4b09dda48cd4a14","0x8670923ef71d0451b939dcdd0309c6142c07d800","0xe48e5ff8d7b89c08fbca63efd182e60a199aa6f7","0xc70673b31c31cb2f38a5191b778568015090e3b9","0x83f3df36610f3a07304d246d197c5036ec11239b","0x160cf6551ee3d910f673af762d5a2f1bd4855be1","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0xb7515a3b07df4e54becbc6de8e5ea17170395bf1","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0xbfa4f33bc90151641dad7b839b78d73e30e429d0","0xf432ad9835cdfe91ca0523a2a1e5cb3bd03dd219","0x2fe09418301e5629df6034c9d5fdedbde6605df9","0xe24f5471181fbfe7874a3227d97d32d5e0baf4ca","0x5d2595924d34148b842d7a4a9b3582cf73a38cda","0x53e81c92b95b6f45b3bd256e3dd0bbf3ed453887","0xd50dabaf4a232ad09319c7342880d0f2726a6b34","0x51bd80affe272e2f5576d2356681eac5a95e1945","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0x1a85375a5c1c8890c8d136a8cb6bcce860209f0b","0xc009ea4232461a7e913909306aa7f70e6b909395","0x5fbc2d71646936dcc2e9af3cd7e2ae20bf8e9f99","0xce5600f9ac619677ca3e0853d1fddd067919b3fd","0x83b576a54217017325b70c9e43363c69fbfcfa2e","0xca0d093e1a822f6cd8273da3f2456672945628d2","0x19bf165660e7f354f2702700d5f92972abab519c","0xea3d7e34d282c35bc473cc9782e59ae135450b10","0xa0ea4d51f02d35938be2ac9e27fe0f88e76c3b66","0x2264405d2fb1e7d90a697f4464a15e5b22f17c9e","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0xae8ab67bd43326e424b649050d33b704288af1b5","0x74bfbe9f271fa65cb992dbdb9bac372fad7f0483","0xa94f3651edf117ef6fa879a79294455c8844b05d","0xc6ad9b786a0db72d5ec7f346612f3c6cfb1448bd","0x22adc81de50eb7f27d11653bb925507eee90c59a","0xd810d05d37c8fa861ade98a9cf626e7a9a8d5451","0x69cfecc77d5c218093a7d2c85d4705040d75924a","0x92d9f5c2fb80e0be363082fab54f1178e8baa2f5","0xb93de26e145eb31df90bcf31b1ea67c7605dd59b","0xaedf6eab68e81e4d57e7e64aa45edf1cc43665b7","0xa2af785b657d60e3ca92cf4c6038902b960efbe5","0xe66e74dc9912f04b6857357a61e3990e438d343a","0x0f9a0ad7d90e74437c7a2b6dc3b2d4b2a73052c3","0xfa9527a11e25abb75798b3ab5c6433169cb95924","0x043ed3a18e640e5cc6ec571db07fa7a440234d74","0x5dcd2a775d7d71fc4e7d70c49d2fca078a2d870e","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0x509302c3d574ffaedc51b6784d0b5b482c591e45","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x64c4de7bae3989df15e1c77c4788fe1cb8281913","0x91ef622e7f3378ba99451ba1361b9ab656708999","0x03735f1ee11d49edeb14301489fdb13e1a8fe284","0xd14689dca1b1529d4d2b57cf1c6804c82dcb96e0","0x21e1882df2fa4744e0cd0e2ae8819757692dbf4e","0xc0561558b7d18f971a8ab25753eea597215c893b","0x22337c10cff4431a6f7f4a57e86706ac6ddc8ce0","0x14fabf70c23e97d6e44cd377ae86963cd6907573","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0xb306f62ab2780ed0a34072adbef2ad03fe39688b","0x8f0576170143731420237deeb8eb8764ac64534e","0x0bfce37b6614a67eb769e98374161263fcf9e9c8","0x1fde76e16ca451579ef2a5014c3ed250465c552a","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0xc1e1ee62c35e2091e9555a2b56d5f2c448abeb75","0x71b73edba3cc3731e9dc9644d11a07147cc6dadb","0xa2835c19b372c68c375bbb82e40d6fdc6f13b243","0xd308e0bc48f870d88ff675995a392d1ed4b5028a","0x6b7fa9818889e7e8cc7e96ce5673e08848eecc55","0xeac31644cda60c834e8552040662e1ddfc5ee37d","0x0ab6f34c4c1dc5b8aa0f0dfce733439fd6009b68","0x050cfb381da9235d71512b3c70fea9b47619ce9b","0x9add66805af3469f3784f304c14a7fa95ceea7da","0xeceb3bc3d347dd3a41a0c90223e9fe3952674d28","0xaf2e7312024dcd6713c5bdb855b8cf5c76086acb","0x8a024c016751a083f65484bc7acc1eba64e88b56","0x7f251b02358e70d81cd093a6604c146eb3c3b9ff","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0xf099a63770dbe0ee0f26f71516cc25bec2d53d96","0xc0feed24d45e3dfeb817241ab1e86f27c97fb845","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0xc3d18115e5107c6259439400ec879cdaa1bf8f44","0x2b3740e7553fa04b2328d0a8aa3ad92755f3698a","0x0c93929360ff8b46a46c2de1c8edea9541b78eb3","0x74d8f3cf5f2f95a408788887402c8bcbc4414d46","0x37ee33e4e377ab07611a57bfc3884b14cc069be8","0xc573ae3e2dc7a9c0c747b69a0480c0e892370b5d","0x83155bb03e6b5b49f0e47ed6e2c10b62cfbd1097","0x480ed0645d3abc70adce5552d394befbd943c077","0xd7a7cc75bcad82bb6f257e519b24e1f5c0ddd653","0x0c0f26efc6fc6b79045724dc32a613096a4c14cf","0xc5afc24a66463445104a368fad839bfba0115a75","0x17fb57199c170aec610ce1f4597e0a35595b61f4","0xc5290673e253cc02b19c533ae71fc481c8fb7e0d","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0xd76ff1329b763aef3da06f2ec8c1c8e0b3974789","0xa187712d483127ed9c0f223119dcc49213123143","0x0b82c42d51f5bd79d3db42a968f82d86f09ba127","0x361665f2c47a2b94081e1f0688ad9383446267e0","0x57cc4e0a556d8f3c9941af22d891b52685a14bab","0x0e3c7c3de21ad3f07740603db4bd9fbd30e0a5ad","0xe02bfb4ff47cb177cef881583451b4cb8f5ff6ef","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0xd5f66fa9a84fe9b68cd123bd3efc77c0e174c0af","0xf4a0a75851001dff6f652b3b0523d846cbc4394d","0x56e67d7b2741c4b389cb281dc30829afecbc3dc7","0xbeb467d146b0abef0393291aab9c580639b59e18","0xd9d9d13eeeb2242a105329630d16fbf6567be719","0xd85c63984630836d1403f4e77682bba128bcdd25","0x43df2b78d32d22ba8ce77e13848e8b59ec3b7f05","0xede982ed15790e561c605cef2c266c023c43d2d3","0xf7da27d41c96fc150a45d4feed630f55464faea0","0xcf62a980e4a11f559d514f380c461cf4c75ae880","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x55e8bfe955675af6bbb82801653b48b1a872a52c","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0x8a757ab0de17d3d820a6e2c8516acc239b4b4bfe","0x1ea303ec230402a330af10ec861c98811be3cb43","0x866260389e9c9596720fbaca20f73abd1703bb15","0x773e8eac1ea274a113dd9579cbfd2795181287e6","0x13b3ffa47980575a46ea812ac68c08c3148b907f","0x651d617be940444dde4764840b0696df361b75ce","0xd42f93a50d199f05f49f0bdd7927cb9b275fc3d5","0x8963e2d4982a89824c08741270244af0acac5c2e","0xb328eb72533d0844414778d439204cbd53354903","0xb0929a62902d43fb076d00a6b4dfaa470f546f79","0x8541debdd03a78a2c29dcd9d1e588d30e1519b29","0x77f62b2dd47520f0e29663c8f208a40682202936","0x044ffe4018944c0e309ca0bd3e386f4d0190d379","0x255a9eb9869db522fceda015697cbea917b9e6de","0xeedeecd1d331298dd945da27fda21778a5d170af","0xeb2de0c5869e9b3391402c80b347dd12f82a39e8","0xc775a8a8f6d5f689134623b48a5fcc8721bc81e3","0x3e4f9c3a1bbc13cd5c46d46da3fab64624de18c1","0x4fb5b3595cc935e8e61c86db331dc9194ced8731","0x1e1071784fcf7f16ca1fb581bb17b4184cdb1b0c","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0x76a014267b1d9e375d4a84554504e366c7de1167","0x888920e7dafc88e456b9842f13ac62a57671f31f","0xe38c4225d2f15e677f3c19248719bf313b745529","0x9950dd62617f6123551aa61de4a31a0dee02a4e9","0x66ff7c2943eb24c9c923a94c7c8959fede19ffeb","0xb6d3f44d325c35e8434bf389efd9ee83b19ded54","0x5f50bccaa174a28db541af30dd95644c7c637be9","0x23e6df2693de753252f034be95116faa7270b4c4","0x85f64a42068b0ddb7288078c008090ee944d451f","0xdd451d6e91f57da8a2e92507dc96aee4d5c3dfa0","0xb9654054b87a9b61bac3e8b4d756538bef4464e8","0x9ac125e587f30e10f30de58f1f1cd193b726462c","0x862d6722e7ecfc43893d257e40b8a6a794b2daaf","0x1919a6da1a341378b1e198db255464217d1e8ec6","0xb9ac3bdc086c5773105177056b2a1a77d752727e","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0x523044de194911829e303470e5ccb284e1d4c96d","0x628ff0af9dc13c8c32949f389aed3113f83e2094","0xed96045451439647c46c449016fd65039ce208c2","0xcdb40cfb1dff93b0904b46fe4db42d892205e1ae","0x2910c47c24e6189a9ddf7111dc8f8733c74d2809","0xc12f49927a6f483370190e6dc5b3c128dfee7a9b","0x275caadaab24a735a8be1a0c57a4a7797cf03cf0","0x7f8bc6071a575427615829f314072e95f55482e2","0xb8d6d535be38c042b9332ceb7856e6044d656eae","0x3399841565a0040d4374ce5c7e21ea6580b7bea0","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0xb2e80f701c8df460ba1d5123e69c330d28eb3e4d","0x94368415d8ca03049fb38e23b7d8aa600df7f8aa","0xbfaf2aa7443557f1e477c910b8113a8959923ef5","0x6f146a70f596fb4efb51e2cf52cbe13ad33e5be3","0xcdfbc32c61b7cb47ca1f4e01c44b5be55d4b50d2","0x00ac0048b4ac2d2ae8635a88283523f135c63551","0x0386a62b9ff2e99146dfd2fb96a6d328c68e0f2e","0xf25ece5d088a3258a81c857f031939c196c6bf63","0xa916113d238bdd2b62716eb251388e0b5746901d","0xd7f7c92fb58502496afa2704d2a642da5c189258","0xdbeef580eb836f68d1e08769372799f84766d9c5","0x4cbba90cf8969204d101751ce08998c474d176ec","0x64b876db97b3338334f8cbe1f8b662c9c4b03fd8","0x09779fe3423adf9b3e89626d95e7541fc8d7ba8f","0xa620baa6643c094658673b0eed9528dcbefce687","0x85b6694f227c4602d2e8cea95e986272e09221e8","0x1602c055d009248148c62d0c7b7de1151857922f","0xe6cbf7333303fc382c8cace99f138fda788d3154","0x6e25437c46d2d54450ff52611def89059b00a8b3","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0x722dcceda4491e5992017ad8b244dcc4d51215bb","0x750ed0d5c75c1ba91a677724298ae8ef678cf31b","0xa0a4bd1de248a051df40d4519b2da66608f6769c","0x466790d81f8d4ff5723f08f28690ea7b24301522","0x773e6a11a6450fd1007d35a36eb2333decd1917b","0x4c36d595aab8c3b5af18ab8410f255acc8c3839c","0x50c9936a23f146965889d36084a3cc2ef915df23","0xc3fc509eb41e16fa9a2b2e4af9cc0e7336617fe9","0xf0ee65d910037e35225fda039521a8b73b8e073a","0xd8b2b7f42873f111348c835563e26865474337db","0x758aa67d49c52767fb90c41de3e59f9d1628d565","0x29f50c9805a2adb03e43a267ca14747dcea15c57","0x43838e7f4180c7d7ae84bec46210b8ca07911bad","0xb5187e153f8f5077439d72a50edd5b0b55e39e07","0xa947ed958e3b03a6f01ed1c4415917fd88f8eef4","0x66345a99a53b43026e35e53794f08ac1ec9a4739","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x745c4a0a8031b03e870116bc9080d96de2ad9e37","0x6348016845dec61912814209bacdb67922250677","0x05b61848f77d9f11251c95cd96416bcc20ea3b77","0x44734f1d87fe6bd637095d0849f502c510cccad0","0xd71696bd4d276d9b8b2a764bc1c22e94548032a2","0x2bd6fcf6d2d5282c3def16144b1bec8162a5249b","0x0bc5db7e5d07337d59ab66de9c0c361eb3c52866","0x263447305422b2a1b84dcf5faf2436e5c10db072","0xb7f563b9660e4b0aa3729ba1e87d3cff0382816d","0xfdf0b022741ad2ff9076c8017d0194bee28ee1f1","0xcef2bf79c1a37b34b7ef2bc4325ef8d156ba50ac","0x5e3439d866cc6a6ed8dc3f631192a5f9766de523","0x4c3363779d60b78f97de19c7e9f90d6d7088535c","0x6a10d7cfc8845b8c921205818001a0bc2b6c84b0","0x46dd680b2f8499d61aa5f06db3231f76f2d44a61","0x3b3ee91d34f0dbd27db80a35dbf6dc2245ad5f00","0x08868c28e8f26f4920cd2b6661fedd52f6d73525","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0xfaf6a8973e5a16d5b722b1d3b9a5613a627af974","0x25e2ac2b8134bb8fa96ac303ae5b26b4399d9f6c","0xb0cbb564f3239c230906301fe20f3f9a9c65f57f","0x5c3cb7b19a8980b300ee25b077aca5fe3c85bea8","0x6ea0b8ed43d463487f66a1ba5de7062804694ba6","0x3dccf8acae9cbc7ff6113aea13940f8b7aabc5a4","0xa37911603bbf26706ef132a2969d99da44457a6a","0x4482c52bfa2dd45befe5c360eb739b914fc96724","0x3b38afb89abb742bf3ebb54183bf4d68fa3ce0fd","0xb1e60835ac782815ad3db6db29c2898cbef6323c","0x0c2f4caa07b6f6436106be1156b377d5362352ed"] \ No newline at end of file From f465ae54f0b8d7d0ad0edb4c7f25005a55f37737 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Wed, 7 Feb 2024 11:36:33 +0100 Subject: [PATCH 20/34] feat: update boost fee prices --- deployments/DiamondManagerFacet.json | 6 ++--- scripts/updateBoostFees.ts | 37 ++++++++++++++++++++++++++++ scripts/upgradeFacet.ts | 2 ++ src/facets/DiamondManagerFacet.sol | 2 +- 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 scripts/updateBoostFees.ts diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 81b16b9..3ab0953 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -4275,8 +4275,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506129d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612454565b610954565b005b61034261033d366004612454565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d61037836600461246f565b610ccf565b61039061038b366004612454565b610d93565b6040516103599190612491565b6103c06103ab366004612518565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612518565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263e565b610ea6565b61032d6104223660046126fe565b611039565b6103f3610435366004612518565b60009081526004602052604090206002015490565b61032d610458366004612518565b61119b565b6103f361046b366004612734565b61123e565b6103f361047e366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c036600461246f565b611278565b6103f36104d3366004612518565b60009081526004602052604090206003015490565b61032d6104f636600461263e565b6113b2565b6002546103f3565b61054d610511366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612518565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263e565b611596565b6105d36105ce366004612518565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612518565b611888565b61032d610666366004612454565b61196f565b6103f3610679366004612734565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be36600461246f565b611a75565b6103f36106d1366004612518565b6000908152600460208190526040909120015490565b6103906106f5366004612734565b611b33565b6103f3610708366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275e565b611c45565b61032d611cd1565b6103f36107fa366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127bd565b611df5565b61032d6108e036600461246f565b611e40565b61032d6108f3366004612518565b611ef5565b61032d610906366004612454565b612040565b61032d610919366004612454565b61216c565b61032d61092c366004612454565b61229a565b6103f361093f366004612518565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc919061280f565b835160e0840151909850909150610c1582612710612822565b610c1f9190612839565b9550612710868360600151610c349190612822565b610c3e9190612839565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612874565b602002602001015182610f83919061280f565b915080610f8f816128a3565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612351565b508151610ffa90600a9060208501906123db565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128db565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e81600161280f565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296c565b6111499062ffffff164261280f565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d81600161280f565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612874565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612874565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298b565b61154b908761280f565b60039093019190915550925080611561816128a3565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298b565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612874565b602002602001015182611673919061280f565b91508061167f816128a3565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612351565b5081516116ea90600f9060208501906123db565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128db565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b21576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b92604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d41576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dad57600080fd5b505af1158015611dc1573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e39919061280f565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8857506000818152600460205260409020600201544211155b15611fbf576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcc82600161280f565b60028190556000818152600460205260409020818155426001820181905591925090611ffb906220f58061280f565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121ba576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612371565b506123d7929150612416565b5090565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb5782518255916020019190600101906123fb565b5b808211156123d75760008155600101612417565b803573ffffffffffffffffffffffffffffffffffffffff8116811461244f57600080fd5b919050565b60006020828403121561246657600080fd5b611e398261242b565b6000806040838503121561248257600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125108285018215159052565b505092915050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a7576125a7612531565b604052919050565b600067ffffffffffffffff8211156125c9576125c9612531565b5060051b60200190565b600082601f8301126125e457600080fd5b813560206125f96125f4836125af565b612560565b82815260059290921b8401810191818101908684111561261857600080fd5b8286015b84811015612633578035835291830191830161261c565b509695505050505050565b6000806040838503121561265157600080fd5b823567ffffffffffffffff8082111561266957600080fd5b818501915085601f83011261267d57600080fd5b8135602061268d6125f4836125af565b82815260059290921b840181019181810190898411156126ac57600080fd5b948201945b838610156126d1576126c28661242b565b825294820194908201906126b1565b965050860135925050808211156126e757600080fd5b506126f4858286016125d3565b9150509250929050565b6000806040838503121561271157600080fd5b82359150602083013560ff8116811461272957600080fd5b809150509250929050565b6000806040838503121561274757600080fd5b6127508361242b565b946020939093013593505050565b60008060006060848603121561277357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279d57600080fd5b6127a68361242b565b91506127b46020840161242b565b90509250929050565b600080604083850312156127d057600080fd5b823591506127b46020840161242b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e0565b8082028115828204841417611272576112726127e0565b60008261286f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d4576128d46127e0565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292a57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f8565b5050508381038285015284518082528583019183019060005b8181101561295f57835183529284019291840191600101612943565b5090979650505050505050565b62ffffff818116838216028082169190828114612510576125106127e0565b81810381811115611272576112726127e056fea26469706673582212204d6a5ba6fb009da6db5f8195f76366275f1f32c3826da01dc0f32a69c706f46864736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612454565b610954565b005b61034261033d366004612454565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d61037836600461246f565b610ccf565b61039061038b366004612454565b610d93565b6040516103599190612491565b6103c06103ab366004612518565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612518565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263e565b610ea6565b61032d6104223660046126fe565b611039565b6103f3610435366004612518565b60009081526004602052604090206002015490565b61032d610458366004612518565b61119b565b6103f361046b366004612734565b61123e565b6103f361047e366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c036600461246f565b611278565b6103f36104d3366004612518565b60009081526004602052604090206003015490565b61032d6104f636600461263e565b6113b2565b6002546103f3565b61054d610511366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612518565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263e565b611596565b6105d36105ce366004612518565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612518565b611888565b61032d610666366004612454565b61196f565b6103f3610679366004612734565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be36600461246f565b611a75565b6103f36106d1366004612518565b6000908152600460208190526040909120015490565b6103906106f5366004612734565b611b33565b6103f3610708366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275e565b611c45565b61032d611cd1565b6103f36107fa366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612734565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127bd565b611df5565b61032d6108e036600461246f565b611e40565b61032d6108f3366004612518565b611ef5565b61032d610906366004612454565b612040565b61032d610919366004612454565b61216c565b61032d61092c366004612454565b61229a565b6103f361093f366004612518565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc919061280f565b835160e0840151909850909150610c1582612710612822565b610c1f9190612839565b9550612710868360600151610c349190612822565b610c3e9190612839565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612874565b602002602001015182610f83919061280f565b915080610f8f816128a3565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612351565b508151610ffa90600a9060208501906123db565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128db565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e81600161280f565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296c565b6111499062ffffff164261280f565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d81600161280f565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612874565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612874565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298b565b61154b908761280f565b60039093019190915550925080611561816128a3565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298b565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612874565b602002602001015182611673919061280f565b91508061167f816128a3565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612351565b5081516116ea90600f9060208501906123db565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128db565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611b21576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b92604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d41576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dad57600080fd5b505af1158015611dc1573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e39919061280f565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8857506000818152600460205260409020600201544211155b15611fbf576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcc82600161280f565b60028190556000818152600460205260409020818155426001820181905591925090611ffb906220f58061280f565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121ba576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612371565b506123d7929150612416565b5090565b8280548282559060005260206000209081019282156123cb579160200282015b828111156123cb5782518255916020019190600101906123fb565b5b808211156123d75760008155600101612417565b803573ffffffffffffffffffffffffffffffffffffffff8116811461244f57600080fd5b919050565b60006020828403121561246657600080fd5b611e398261242b565b6000806040838503121561248257600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125108285018215159052565b505092915050565b60006020828403121561252a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a7576125a7612531565b604052919050565b600067ffffffffffffffff8211156125c9576125c9612531565b5060051b60200190565b600082601f8301126125e457600080fd5b813560206125f96125f4836125af565b612560565b82815260059290921b8401810191818101908684111561261857600080fd5b8286015b84811015612633578035835291830191830161261c565b509695505050505050565b6000806040838503121561265157600080fd5b823567ffffffffffffffff8082111561266957600080fd5b818501915085601f83011261267d57600080fd5b8135602061268d6125f4836125af565b82815260059290921b840181019181810190898411156126ac57600080fd5b948201945b838610156126d1576126c28661242b565b825294820194908201906126b1565b965050860135925050808211156126e757600080fd5b506126f4858286016125d3565b9150509250929050565b6000806040838503121561271157600080fd5b82359150602083013560ff8116811461272957600080fd5b809150509250929050565b6000806040838503121561274757600080fd5b6127508361242b565b946020939093013593505050565b60008060006060848603121561277357600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279d57600080fd5b6127a68361242b565b91506127b46020840161242b565b90509250929050565b600080604083850312156127d057600080fd5b823591506127b46020840161242b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e0565b8082028115828204841417611272576112726127e0565b60008261286f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d4576128d46127e0565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292a57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f8565b5050508381038285015284518082528583019183019060005b8181101561295f57835183529284019291840191600101612943565b5090979650505050505050565b62ffffff818116838216028082169190828114612510576125106127e0565b81810381811115611272576112726127e056fea26469706673582212204d6a5ba6fb009da6db5f8195f76366275f1f32c3826da01dc0f32a69c706f46864736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506129d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612455565b610954565b005b61034261033d366004612455565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612470565b610ccf565b61039061038b366004612455565b610d93565b6040516103599190612492565b6103c06103ab366004612519565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612519565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263f565b610ea6565b61032d6104223660046126ff565b611039565b6103f3610435366004612519565b60009081526004602052604090206002015490565b61032d610458366004612519565b61119b565b6103f361046b366004612735565b61123e565b6103f361047e366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612470565b611278565b6103f36104d3366004612519565b60009081526004602052604090206003015490565b61032d6104f636600461263f565b6113b2565b6002546103f3565b61054d610511366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612519565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263f565b611596565b6105d36105ce366004612519565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612519565b611888565b61032d610666366004612455565b61196f565b6103f3610679366004612735565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612470565b611a75565b6103f36106d1366004612519565b6000908152600460208190526040909120015490565b6103906106f5366004612735565b611b34565b6103f3610708366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275f565b611c46565b61032d611cd2565b6103f36107fa366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127be565b611df6565b61032d6108e0366004612470565b611e41565b61032d6108f3366004612519565b611ef6565b61032d610906366004612455565b612041565b61032d610919366004612455565b61216d565b61032d61092c366004612455565b61229b565b6103f361093f366004612519565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc9190612810565b835160e0840151909850909150610c1582612710612823565b610c1f919061283a565b9550612710868360600151610c349190612823565b610c3e919061283a565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612875565b602002602001015182610f839190612810565b915080610f8f816128a4565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612352565b508151610ffa90600a9060208501906123dc565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128dc565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e816001612810565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296d565b6111499062ffffff1642612810565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d816001612810565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612875565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612875565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298c565b61154b9087612810565b60039093019190915550925080611561816128a4565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298c565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612875565b6020026020010151826116739190612810565b91508061167f816128a4565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612352565b5081516116ea90600f9060208501906123dc565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128dc565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b22576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b93604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d42576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e3a9190612810565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8957506000818152600460205260409020600201544211155b15611fc0576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd826001612810565b60028190556000818152600460205260409020818155426001820181905591925090611ffc906220f580612810565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fe576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121bb576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612372565b506123d8929150612417565b5090565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc5782518255916020019190600101906123fc565b5b808211156123d85760008155600101612418565b803573ffffffffffffffffffffffffffffffffffffffff8116811461245057600080fd5b919050565b60006020828403121561246757600080fd5b611e3a8261242c565b6000806040838503121561248357600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125118285018215159052565b505092915050565b60006020828403121561252b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a8576125a8612532565b604052919050565b600067ffffffffffffffff8211156125ca576125ca612532565b5060051b60200190565b600082601f8301126125e557600080fd5b813560206125fa6125f5836125b0565b612561565b82815260059290921b8401810191818101908684111561261957600080fd5b8286015b84811015612634578035835291830191830161261d565b509695505050505050565b6000806040838503121561265257600080fd5b823567ffffffffffffffff8082111561266a57600080fd5b818501915085601f83011261267e57600080fd5b8135602061268e6125f5836125b0565b82815260059290921b840181019181810190898411156126ad57600080fd5b948201945b838610156126d2576126c38661242c565b825294820194908201906126b2565b965050860135925050808211156126e857600080fd5b506126f5858286016125d4565b9150509250929050565b6000806040838503121561271257600080fd5b82359150602083013560ff8116811461272a57600080fd5b809150509250929050565b6000806040838503121561274857600080fd5b6127518361242c565b946020939093013593505050565b60008060006060848603121561277457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279e57600080fd5b6127a78361242c565b91506127b56020840161242c565b90509250929050565b600080604083850312156127d157600080fd5b823591506127b56020840161242c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e1565b8082028115828204841417611272576112726127e1565b600082612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d5576128d56127e1565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f9565b5050508381038285015284518082528583019183019060005b8181101561296057835183529284019291840191600101612944565b5090979650505050505050565b62ffffff818116838216028082169190828114612511576125116127e1565b81810381811115611272576112726127e156fea264697066735822122083d6c76b34c320077770c91a5fcba3a09a6645dc4352f66fad62ef9753448fb864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612455565b610954565b005b61034261033d366004612455565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612470565b610ccf565b61039061038b366004612455565b610d93565b6040516103599190612492565b6103c06103ab366004612519565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612519565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263f565b610ea6565b61032d6104223660046126ff565b611039565b6103f3610435366004612519565b60009081526004602052604090206002015490565b61032d610458366004612519565b61119b565b6103f361046b366004612735565b61123e565b6103f361047e366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612470565b611278565b6103f36104d3366004612519565b60009081526004602052604090206003015490565b61032d6104f636600461263f565b6113b2565b6002546103f3565b61054d610511366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612519565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263f565b611596565b6105d36105ce366004612519565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612519565b611888565b61032d610666366004612455565b61196f565b6103f3610679366004612735565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612470565b611a75565b6103f36106d1366004612519565b6000908152600460208190526040909120015490565b6103906106f5366004612735565b611b34565b6103f3610708366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275f565b611c46565b61032d611cd2565b6103f36107fa366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127be565b611df6565b61032d6108e0366004612470565b611e41565b61032d6108f3366004612519565b611ef6565b61032d610906366004612455565b612041565b61032d610919366004612455565b61216d565b61032d61092c366004612455565b61229b565b6103f361093f366004612519565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc9190612810565b835160e0840151909850909150610c1582612710612823565b610c1f919061283a565b9550612710868360600151610c349190612823565b610c3e919061283a565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612875565b602002602001015182610f839190612810565b915080610f8f816128a4565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612352565b508151610ffa90600a9060208501906123dc565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128dc565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e816001612810565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296d565b6111499062ffffff1642612810565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d816001612810565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612875565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612875565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298c565b61154b9087612810565b60039093019190915550925080611561816128a4565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298c565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612875565b6020026020010151826116739190612810565b91508061167f816128a4565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612352565b5081516116ea90600f9060208501906123dc565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128dc565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b22576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b93604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d42576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e3a9190612810565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8957506000818152600460205260409020600201544211155b15611fc0576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd826001612810565b60028190556000818152600460205260409020818155426001820181905591925090611ffc906220f580612810565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fe576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121bb576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612372565b506123d8929150612417565b5090565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc5782518255916020019190600101906123fc565b5b808211156123d85760008155600101612418565b803573ffffffffffffffffffffffffffffffffffffffff8116811461245057600080fd5b919050565b60006020828403121561246757600080fd5b611e3a8261242c565b6000806040838503121561248357600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125118285018215159052565b505092915050565b60006020828403121561252b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a8576125a8612532565b604052919050565b600067ffffffffffffffff8211156125ca576125ca612532565b5060051b60200190565b600082601f8301126125e557600080fd5b813560206125fa6125f5836125b0565b612561565b82815260059290921b8401810191818101908684111561261957600080fd5b8286015b84811015612634578035835291830191830161261d565b509695505050505050565b6000806040838503121561265257600080fd5b823567ffffffffffffffff8082111561266a57600080fd5b818501915085601f83011261267e57600080fd5b8135602061268e6125f5836125b0565b82815260059290921b840181019181810190898411156126ad57600080fd5b948201945b838610156126d2576126c38661242c565b825294820194908201906126b2565b965050860135925050808211156126e857600080fd5b506126f5858286016125d4565b9150509250929050565b6000806040838503121561271257600080fd5b82359150602083013560ff8116811461272a57600080fd5b809150509250929050565b6000806040838503121561274857600080fd5b6127518361242c565b946020939093013593505050565b60008060006060848603121561277457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279e57600080fd5b6127a78361242c565b91506127b56020840161242c565b90509250929050565b600080604083850312156127d157600080fd5b823591506127b56020840161242c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e1565b8082028115828204841417611272576112726127e1565b600082612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d5576128d56127e1565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f9565b5050508381038285015284518082528583019183019060005b8181101561296057835183529284019291840191600101612944565b5090979650505050505050565b62ffffff818116838216028082169190828114612511576125116127e1565b81810381811115611272576112726127e156fea264697066735822122083d6c76b34c320077770c91a5fcba3a09a6645dc4352f66fad62ef9753448fb864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4285,6 +4285,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x482F8577A4B90f25a769006F8F607E424BEBcacb" + "address": "0xEb97f47ffDa731c68381AE3948Ae42733fbA2181" } } \ No newline at end of file diff --git a/scripts/updateBoostFees.ts b/scripts/updateBoostFees.ts new file mode 100644 index 0000000..75e54a9 --- /dev/null +++ b/scripts/updateBoostFees.ts @@ -0,0 +1,37 @@ +import { ethers, network } from 'hardhat' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { logTx } from '../utils/logTx' +import { parseUnits } from 'ethers' + +async function main() { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const level1Tx = await DiamondManagerFacet.setBoostFee( + 1, + parseUnits('0.1', 6).toString() + ) + await logTx(level1Tx) + const level2Tx = await DiamondManagerFacet.setBoostFee( + 2, + parseUnits('0.15', 6).toString() + ) + await logTx(level2Tx) + const level3Tx = await DiamondManagerFacet.setBoostFee( + 2, + parseUnits('0.2', 6).toString() + ) + await logTx(level3Tx) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/scripts/upgradeFacet.ts b/scripts/upgradeFacet.ts index e04e654..7339130 100644 --- a/scripts/upgradeFacet.ts +++ b/scripts/upgradeFacet.ts @@ -30,6 +30,8 @@ async function main() { await addOrReplaceFacets([facet], diamondAddress) console.log('āœ… Facet upgraded') } + +// i.e yarn hardhat run --network avalanche scripts/upgradeFacet.ts --facetName DiamondManagerFacet main().catch((error) => { console.error(error) process.exitCode = 1 diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 6b283d4..79848f7 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -226,7 +226,7 @@ contract DiamondManagerFacet { } function setBoostFee(uint256 boostLevel, uint256 boostFee) external onlyOwner { - if (boostFee > TOTAL_SHARES) { + if (boostFee > 4 * 1e6) { revert DiamondManagerFacet__Invalid_Input(); } s.boostLevelToFee[boostLevel] = boostFee; From c265358ce58187b63a277e3501c6dc7158bf6ee2 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Wed, 7 Feb 2024 11:55:12 +0100 Subject: [PATCH 21/34] fix: update boost fee price level 3 --- scripts/updateBoostFees.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/updateBoostFees.ts b/scripts/updateBoostFees.ts index 75e54a9..b0b8d3f 100644 --- a/scripts/updateBoostFees.ts +++ b/scripts/updateBoostFees.ts @@ -23,7 +23,7 @@ async function main() { ) await logTx(level2Tx) const level3Tx = await DiamondManagerFacet.setBoostFee( - 2, + 3, parseUnits('0.2', 6).toString() ) await logTx(level3Tx) From 52ea38ce7176cce6bd48190de08b34033fae0432 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Sun, 31 Mar 2024 21:28:26 +0200 Subject: [PATCH 22/34] chore: season 8 claim --- hardhat.config.ts | 1 - tasks/automatedClaim.ts | 184 +++++++++++++----- tasks/data/season-depositors-avalanche-8.json | 1 + 3 files changed, 131 insertions(+), 55 deletions(-) create mode 100644 tasks/data/season-depositors-avalanche-8.json diff --git a/hardhat.config.ts b/hardhat.config.ts index 36e0ab5..ed703b4 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -26,7 +26,6 @@ const config: HardhatUserConfig = { chainId: 43114, url: AVALANCHE_RPC_URL, gasPrice: +parseUnits('28', 'gwei').toString(), - gasMultiplier: 1.5, }, fuji: { accounts: [DEPLOYER_PRIVATE_KEY], diff --git a/tasks/automatedClaim.ts b/tasks/automatedClaim.ts index 192898a..648ecfa 100644 --- a/tasks/automatedClaim.ts +++ b/tasks/automatedClaim.ts @@ -5,15 +5,15 @@ import type { DepositEvent } from '../typechain-types/src/facets/DepositFacet' import Bottleneck from 'bottleneck' import * as path from 'path' -const BLOCK_RANGE = 500 +const BLOCK_RANGE = 1000 const FROM_BLOCK: { [key: string]: number } = { fuji: 23009545, - avalanche: 0, // TODO: Update this once we have a mainnet deployment + avalanche: 32271032, } const limiter = new Bottleneck({ - minTime: 10, // ~30 requests per second + minTime: 20, // ~30 requests per second maxConcurrent: 1, }) @@ -134,63 +134,139 @@ task('automated-claim:all', 'Claim all rewards for a season') seasonId: seasonToClaim, }) - try { - // Slice the array into chunks of 100 - const chunkedDepositors = chunk(depositors, 100) - - // Claim for each chunk - for (const chunk of chunkedDepositors) { - const validatedWallets = await Promise.all( - chunk.map(async (wallet: string) => { - const userData = await DiamondManagerFacet.getUserDataForSeason( - wallet, - seasonToClaim - ) - await new Promise((resolve) => setTimeout(resolve, 100)) - if ( - userData.depositPoints > 0 && - !userData.hasWithdrawnOrRestaked - ) { - return wallet - } - - console.log(`Skipping ${wallet} because they have no deposits`) - return - }) - ) - console.log(`Claiming for ${validatedWallets.length} depositors`) - const filteredWallets = validatedWallets.filter( - (item) => item !== undefined - ) - - if (filteredWallets.length === 0) { - console.log('No wallets to claim for, skipping...') - continue - } + // Wrap the call to getUserDataForSeason in a rate-limited function + const getUserDataForSeasonLimited = limiter.wrap( + async (wallet: string, seasonToClaim: string) => { + return DiamondManagerFacet.getUserDataForSeason(wallet, seasonToClaim) + } + ) - if (!dryRun) { - const tx = await ClaimFacet.automatedClaimBatch( - seasonToClaim, - filteredWallets, - { - gasLimit: 13_000_000, - } + // Use this limited function in your map + const validatedWallets = await Promise.all( + depositors.map(async (wallet: string) => { + try { + const userData = await getUserDataForSeasonLimited( + wallet, + seasonToClaim ) - await tx.wait(5) - console.log(`https://snowtrace.io/tx/${tx.hash}`) - await new Promise((resolve) => setTimeout(resolve, 1000)) - } else { - console.log('Dry run, skipping claim') + console.log( + 'šŸš€ ~ depositors.map ~ userData:', + wallet, + userData.depositAmount.toString(), + userData.depositPoints.toString(), + userData.hasWithdrawnOrRestaked.toString() + ) + if ( + userData.depositPoints > BigInt(0) && + !userData.hasWithdrawnOrRestaked + ) { + return wallet + } + console.log( + `Skipping ${wallet} because they have no deposits`, + userData.depositPoints > 0, + userData.hasWithdrawnOrRestaked + ) + return + } catch (error) { + console.error('āŒ getUserDataForSeason failed for', wallet, error) + throw error } - console.log(`āœ… Claimed for ${chunk.length} depositors`) - } + }) + ) + + const filteredWallets = validatedWallets.filter(Boolean) + + if (dryRun) { + console.log('Dry run, skipping claim') + console.log( + `Would have claimed for ${filteredWallets.length} depositors` + ) + return + } + + const chunkedDepositors = chunk(filteredWallets, 100) - DiamondManagerFacet.setSeasonClaimed() - } catch (error) { - console.error('āŒ AutomatedClaim failed:', error) - throw error + for (const chunk of chunkedDepositors) { + const tx = await ClaimFacet.automatedClaimBatch(seasonToClaim, chunk, { + gasLimit: 13_000_000, + }) + await tx.wait(5) + console.log(`āœ… Claimed for ${chunk.length} depositors`) + console.log(`https://snowtrace.io/tx/${tx.hash}`) } + DiamondManagerFacet.setSeasonClaimed() + + // try { + // // Slice the array into chunks of 100 + // const chunkedDepositors = chunk(depositors, 100) + + // // Claim for each chunk + // for (const chunk of chunkedDepositors) { + // const validatedWallets = await Promise.all( + // chunk.map(async (wallet: string) => { + // try { + // const userData = await DiamondManagerFacet.getUserDataForSeason( + // wallet, + // seasonToClaim + // ) + // if ( + // userData.depositPoints > 0 && + // !userData.hasWithdrawnOrRestaked + // ) { + // return wallet + // } + + // console.log( + // `Skipping ${wallet} because they have no deposits`, + // userData.depositPoints > 0, + // userData.hasWithdrawnOrRestaked + // ) + // return + // } catch (error) { + // console.error( + // 'āŒ getUserDataForSeason failed for', + // wallet, + // error + // ) + // throw error + // } + // }) + // ) + // console.log(`Claiming for ${validatedWallets.length} depositors`) + // const filteredWallets = validatedWallets.filter( + // (item) => item !== undefined + // ) + + // if (filteredWallets.length === 0) { + // console.log('No wallets to claim for, skipping...') + // continue + // } + + // if (!dryRun) { + // const tx = await ClaimFacet.automatedClaimBatch( + // seasonToClaim, + // filteredWallets, + // { + // gasLimit: 13_000_000, + // } + // ) + // await tx.wait(5) + // console.log(`https://snowtrace.io/tx/${tx.hash}`) + // await new Promise((resolve) => setTimeout(resolve, 1000)) + // } else { + // console.log('Dry run, skipping claim') + // } + // console.log(`āœ… Claimed for ${chunk.length} depositors`) + // } + + // DiamondManagerFacet.setSeasonClaimed() + // } catch (error) { + // console.error('āŒ AutomatedClaim failed:', error) + // throw error + // } + console.log('āœ… Done') } ) diff --git a/tasks/data/season-depositors-avalanche-8.json b/tasks/data/season-depositors-avalanche-8.json new file mode 100644 index 0000000..1511e70 --- /dev/null +++ b/tasks/data/season-depositors-avalanche-8.json @@ -0,0 +1 @@ +["0x57cc4e0a556d8f3c9941af22d891b52685a14bab","0xdf0c403bf50801b0437671114e6c05ea6e310499","0x6ec2b09ac7b8ddd266e901061496011010ab2678","0xa3fb39949dfe8040f42378cf66dc7f90719150d9","0x68d27176a5a747b91854cb7e32313f958a814a4d","0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0x957a200dc62e4378ffddc93ae6cfea39601e5831","0x837ed35b22909cc4aa8232b93b0c1f584b322063","0x74bfbe9f271fa65cb992dbdb9bac372fad7f0483","0x0f698d5cdfdbdaac6b38edc504e698f74ba43023","0x37120f70b89b552ebaf47526ebb6645f5c911463","0x68f44e96e0cbc222bbf83c193b48f4ffd6cf7fc1","0xd038ac934fed1e41230720de53813814744e409f","0xeef633815b921620cd674a1a6cae1ea453c0a29b","0x24242d84e8e6a58612c73c462d92144d3f59f627","0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","0x4ec106b066287fd0acce6a77ec15792354048ae7","0x75d7725bac94e6bf594ab15d4a6a4ea0ff240b86","0x474118147a047f8dd2679d14e5947490a21cb74f","0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0xde461c8b374207491e54c3ac2f0ca8dd3d7912cc","0x64950ad846e0b9e61a6f606a90c29c9016dc909d","0x300f00437198cbe0f841c7db55a1fe970b6a5319","0x4233b033fc4348d14e9e81cd3d8f95ac51b0fcef","0x94c740f171592fcc0b152d90a177bec88e541974","0xd5f66fa9a84fe9b68cd123bd3efc77c0e174c0af","0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","0x45b09f568a5333283ccabda649bd9a0ee53050a4","0x7e7f251204111b5c950ef973b3b5b095f1198a85","0xa00158d8abf6ae4ac7262548abf80e6e745e8748","0x8aee171e0963528603f6668a9faaf039272e0e05","0x62fa1525fa43621c0a72f39bded0759063f297a1","0xd5c69e00b28034068bceba48a64213e52ef7b1e0","0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","0xd62d21d619b082b47bcb875603f06f121f00c941","0x484464bf49f57b1a0d45621a631c8d2ee17035eb","0x067019f6c5afbcb6d82a014fd58f5b15ba8ea32e","0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0x2326ecb01f9f9d02937e06a187f3f7b5a1f01b42","0xa0ded27e11cbf3c675fc0f2ef397f81f326999f0","0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0x776819a6a003b208093ca944b34221ae59237d57","0xf4a0a75851001dff6f652b3b0523d846cbc4394d","0xae8dfd00422afcc86ede389770bf7b23e6e2c4de","0x3ee9affff7c2a93bb285be67a1f58512324d6b03","0x1708111862a55f59deadd4b2b5dc7efcb45ddd23","0x652d9c00616a62298ecc5b73fc507bb6d1d088d6","0x5d4d46c7ed6309914172a1ac4f5c3d00864ed888","0x6661fd14316d0f325ec7af5fefccf25d098e10ba","0x0e7c914d74fea026451f1cf2b356f5fcf27f8631","0x1bda87b46b384e83e453b95b21f96bc1894fe5e9","0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","0x163f6e3592fde1798c386692a918d87181ec0f7a","0x7ee6f42490e573072dc93a7172a91925ceeff1d0","0xebe20643409e687a4f774c5b1976262014c78106","0xd81512fbd05a239e10920f63a46e590318496c34","0x0a2d5c4514e1438911b2ebac263b4c9f14bf2db1","0x82da13bae97de6749e8b85d5b0592d74b40c02b8","0x57f50af8110af03ae21d8c483c39baf06235126e","0x227c2411f03630303483a88b6d4c49eb32a92f84","0x2f13b0c54f2bcf0874a2a02037ca744b0ab6133f","0xc678090d264ef66fc354bb66875ffb40e9bab97c","0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0xed5f92f2c2d562f981a13521d421f5a1ff927f59","0xa3ea412bdc733b7264afcb0f6d4eb6f673e80d61","0x5feeabe666ef28e055ac4fa72d17b541599fe61d","0xea3802178afe086aeace9e4452b76ba5e27a612d","0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","0xa916113d238bdd2b62716eb251388e0b5746901d","0x74b29bed05623cbe43feaf22f3b862c800640c77","0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0x73bbdd988d9efa1043747b799e5119f0f79679e0","0xabdb06ac1bbd963097df3630b042a9a067feb976","0xec49ebeed63af5049d729d9840f5b49854a47156","0xa67a78bf7a23c0504441138fa9c64f816f9e1414","0x556e1e264994b18e166d2d8c4912d9189eb168b5","0x28656ee0640c0f54a9cb892ddecce5f021c993f8","0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","0xcbd2179e73ee00ecb328fc1792746405ee7fa83e","0xee34a35d3af8f873c9bea9ad7095d5bf056833d7","0xddc79d0362a100e30158a02759f8175d2809f6bc","0x7db75fc4d9f62c52f9a3bb80a64a060da577409c","0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","0x984becaf762a006552706f5cf0f58cce09675b70","0x1222fd8fedc64606b34ef135740db5706031c8e4","0x6df97b46a45770ae29ab2167701db3f1fb3f3ea4","0x85d80d35b783690983d0ebeb5421170c67c64fd6","0x5ba944e3db959d2eb14b15f782ee5542097c727e","0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","0xa59193fb01e9b0661ecf8270f2c98272530cad01","0x99c16079c89f47feecf45546053a859dcaaac997","0x45de9a46375408d9acfe241e29c59ca2b1d19a22","0xb6fa8541662864d877f2dbc73ee0fdceed2195a7","0xe4fcf25c165c91ac6abc892a2031f12098157ce2","0x71d9e327c111fa5b19dc3e659df89a6514d368ee","0x1e050ca02787ab13d2006c9f06801789546a9eda","0xbb1f823554d8f62804686edda026022db7454195","0xe12e2d1703b2f5ca79b2e3cf2ecd93ea27b121a8","0x6ff99ba6bf6cbe76e2b7e47c229fc5603b948def","0x07737aba415bd610700663b633c4babb827f38aa","0x9b0a9561b561dad891f7624c7d0352de889cfe16","0x03440ab5e03b56d4679e82b12b29e7007bef7abf","0x76c6025e1b2d4427f5353b38b3364fc71f4733af","0x06b984603facf3d16d20ecd936b8ac20f37e5231","0x980bd0360937776b469921255f9f1d59a2db0dbf","0x68111f294f964c051ebb38209d3d00b1767870ae","0x061cf116faa818ca47037090412bb83298c8d152","0xb1e60835ac782815ad3db6db29c2898cbef6323c","0x34d6562861cee3d99f72a693b11a6c6c3459916f","0x97bb19836e60e7df1262b9d131074c64a1299eac","0x549d7b6fea00fcbc4aa70abeb73fc1c88d591bd9","0x24ff50d3c156a2d98fca3ca0bdab4c2d2a693119","0x8b24d772ac533c34cb288db6976e8f5b72363b4a","0x4aad9cdb896db9f9cab630a4f002701cf8052c3f","0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","0x56054523262f089b0ec202adfe63fee5a9bac5b8","0x48f8dc61316a7569bdce0d14a94884a27cd803e4","0x85b6694f227c4602d2e8cea95e986272e09221e8","0x2ecfefe673706b361dc5817d23484f997db79984","0xa15704171245d148206a8f1240eb51cf3dadc368","0x3b38afb89abb742bf3ebb54183bf4d68fa3ce0fd","0xf429fa2abc61bf609719e695f0e4d80d24a1ada7","0x5c263db138be88737ad66c01428ff847861ad8f1","0x8f68fef7f366177c5bd6bebf51b7d1fe3597c564","0xea5dc276aa321978961f887105081d7da5b940fd","0xfa003fcb52d3a91082437ddd69297a3adf94893f","0xe46979cc590de345bfadda90b6cd4707a7c1c826","0xb1055c1d312fe2e7cd96f3b554e6c9f09bcb08b1","0x2972bf9b54ac5100d747150dfd684899c0abec5e","0x4f2e133d554e0429efdae9db7a118593c419b2fb","0x5c04876c6850f40c4a5a4fd9b30d5a8dffa0a5dc","0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","0x936fcb1af6bd850d74cd45de3e1069dd83aa8ad7","0x554b27999600fcc0a6fd508a4c028c8a027d5bd7","0x4205cf51a09f8e4e8f4dd632abe89b3415cba6d3","0x520292efec8711bb4d0768efd4c2bcf0d6371642","0x6815d26995ae88d912a4be4237196bd7f1dc868e","0xf329ac63b05fc50e720b1c91fcb775ef468ce9e0","0x7ee1c9a129ae1ba66fe0f2d52e717e4f202ff416","0x2647050446e6437558c6df9313c412ee97ba7d19","0xd46561c54f2ff0146bee75decff4b2c51b55daac","0x980ece433b54caa56251d050cb90e706871cec8d","0x52ff38f0546972047b4be3e19ea7bfd8bd79e205","0xa95b7239594929b61f2e0a8987838ac9ca350aaa","0x97adf680aaaf803018c0204cf1be1da258cb14ae","0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0xc45558b3b0c57de26332d7c4f7b68b843fcd76db","0x6b7b7fcdf16d44d22d12d20dc74aa526b3229d15","0xdab3c6f208ee2822f1dda1274c4c5560208a679d","0x3deeb843aee5fe46f9b2c5ccc055b176e2b37b30","0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0xd6a1ef5a37d640eb946fa01a627e02c5edd00a83","0x399c15fa13477a4234ab8745d6d943cd4ef498e6","0x1851f9a87ad916b703545a2b1471a15f6747516b","0xce833bb28d15455af31af5a30c4626bf2939e389","0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0x6b1787f9e479a994f40809cceb74710e7991b571","0x3c2f9ff2880561d0bf0292a291c0530752d55144","0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","0x3b2f4ca70d2c0360e5e5a79a5218a5f0b86ad8bc","0xc993f0a0c117203a3b1ba9d8f9be9496487c1802","0x4eb9448dc71c19585fdd99571b6873fef74ab5d9","0xffcf93dc89977641c0d3506cdb06c3d02d1214db","0xfaa65b4fa9071b171f1f5bcbed55da9a318401bd","0x77b41acbc72d4c64d88fce50428100a13a84c186","0x15062c79c764317bd069a7e236550516fa5d0c80","0x4c8982110511fc48d605024fd2d7cbce6d3392bc","0x5c3493f6f7e736d54464cecee94d3116194b1c10","0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","0x2a4b4d3ee28eec116dc523f1996e94c6cdbd6fea","0x61559a000912997cc40ae3127eb3757a16e0cac6","0xfe2cc1b99c0997a416ccad803c5f205b8f1b49fa","0x1b49847a0bd53a8d3b2d26d4a8d99c75827b1689","0x11f95decd242cd23f0253a716a5f644e7a70f11d","0x02aeb91289504e7ebba064471eb64cd4757d7aa6","0xdf80843ec68e11bc6b2ab7bd7dc2d215fc17ee2a","0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0x2a922fed52c4e039e67533b2c0785f1255960d85","0xe832d1f23bcc355cfadc5950c3edcc210d91fa45","0x82ac5e19b9237c8e8f1abdc1e786f61e6e430dc0","0x041eed0172d0d193176913a4415ac66ce8185319","0xab94b450f6605b6f1939400f2458391b40bf2b50","0xf618cce8eb5f6e58184a9f9da20228bee8a31717","0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","0x83771c019a51462a3407c54345a02dc8c6a85108","0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0x0d1972fd5de4178b73571cd56c480ed4b7890020","0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0xb841ddb964e7c9309941732d6c3270f60986893e","0x6e25437c46d2d54450ff52611def89059b00a8b3","0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","0x429c712d9aa50a93a07377e3aef081e9ef343312","0x76da553883cd6f24fb6b3cda16d273b93a65ada8","0xe1eaf4834316cc6d6c90cea7dfae52224664690c","0x69a6a43f1fa3c0b0364e7bea122fbfb1ab41f3ab","0xccf81389129f506d2a278e1ace0b6fa942a6b4a4","0xd964d7e9e3bdfd1d9928877347dbbe29cf39348c","0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","0x9ec3a46add4b77cb3202114bf6c59fe94e6504bf","0xf259e9d9b81d888bcac636e1af244b49f3591c0e","0xccabb60dc71cb454a325e242281e288da7126349","0x0e5389c754836ef23d30530dc2182418e7002c37","0x491100db75c94dffaa0c55c84c19a639b1748532","0x64456ad298f0972daf26aa1d23af93a2962eba0e","0xb8423034aa5f0f4359228776275ba9e384c18a0c","0x5002ba9fff1caf235728021048923efc01b045fa","0x8228bbc9436d4092179cec4ddf79f9cf8b914614","0x763713c67c2ffc6c2dafa7142ad65eb87c6ee1e0","0x7942fe304321342371c1d9b7da3ede4f292ca658","0xd3dff402b74563b559c620a5c56ad2f048587c1c","0xc53f7c06e95e010a7e2a4f2e692c8587e8de75b2","0xdd2788abbea245a8a926579ba3a1f119aeb6a9fb","0x126dbf19b085cc71dd4ca9282013aefd6301599b","0xd2c6d29d5538226a93d6e4e6db1435d742a8fdcf","0x4538973a876fc5fa7d4ae242a2a9acab70f002e5","0x844cc93aac048f5e82f431e46d2906f39e8ecb43","0xfdf0b022741ad2ff9076c8017d0194bee28ee1f1","0x437db95f97d726ce2d9c76129b55200b9ee3b12b","0xf09154455fb83411a2c2ada0eff7a4b28ea510ca","0x045da8d1d9586ddaa9c1a85e7b5f290f143854bb","0x715c6f7ed0ccef7d9af6dae0436b2a1995b5599d","0xb72ad48aa021c977c9b6473002d2e07701629e66","0x4d43fe46bad13ab2c729eec8afa4488edf7a6190","0x573cd2ed0e42ab76c11f39db3c749cd9dd37745b","0x64c2444f6086a728ea426debdce1f16014648c79","0x6eece86610f73c5a9e1f8c72f61d4c0b2637e651","0xbf41adfddaddf8a8798052c9b72374953192f432","0x209329b630ee09a04b37b168970eb66f422a2025","0xa86c7a1a5fe31e98fdc359bda94beadc49cf4902","0xcef2bf79c1a37b34b7ef2bc4325ef8d156ba50ac","0xb8a8b1035b130339559b6d8c7c73458a645d5f1c","0x2cbccca4d6ec53515aaa57d8111a80251f51a708","0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0x743fe0b59467e55224220ab61b69da821d09bd6e","0x6407886b1bae3e1b535c6d47d7dcd56195b3c11d","0x8a024c016751a083f65484bc7acc1eba64e88b56","0x63d119a61403aa2c8ae5fb0cfcfe1f2c4dab5106","0x4b8e9bb71324b958c111b32ec13825df9cdcba0a","0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","0x5f33bb9707eb984c1044eb84b04c4a024e8d7677","0x19e54e9e57cc0c5a0af142f345f6022903262667","0x692310aac59e1c9939038a759d20814c8e675207","0xdce4b61978e3b2f6d135142122e6c78682c59836","0x982fa6e21054217c3b154070af7616935b1a0576","0x53f0d58c69b07aaaf4e65a25c50341888cd2bff4","0xdb7d12eef73a7926cf9586750a10d3464b059a9f","0x9df85695cb25508e04c05f43c586eeeabcb41735","0x5e215fdaf8607cd67c6fca298817e57b97f2c78d","0xaebe7d6bedf16f7eeb377cbaef85a2788373dc15","0x0a5dbaf976c91b12e448071316d89b215e318d70","0x6dc9044c4b848a81ec467f37e0c253d4fecf7de8","0xc97b6eeb9813e50cca714cfad479cd8647701b46","0xbd7c1c8073bdbc784239ba5822dedc12dd70e5af","0xd00ca4dea8adac3925e7695efd7015aafea898c8","0x1e741f9bb96b9a990051936d841fd136d605e531","0x354038af41905bf84f33171687b1d18db040b652","0xc27258e8dc226488e9e3c5f7dcb3ad8a41739982","0xe90d5ba82ef7a7d15997f8e12482e0bca6d1e979","0xf9c2f322398e58dad8532716d751a7447ab7e299","0x445715d1f5a737d71de630d73e3ae3fc303712bf","0xb30182b504bb0913fef1a7561d92eac49bb0df39","0x1937a381a052f3487852d7f4477ddb96ce1087f1","0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","0x65c719f7a146aea96046409ef9e3f84d6bb43b6d","0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","0xe2d947ea06028bef59c8e718a3b961a73839b8c3","0xb7c67550c36c46b7bf7d42fd2fd311fc1ee2abb5","0x5599746948950205b229ba683824652cfb504e5d","0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0xe3e863c282e3f1593796587301f14298e839466a","0x8065bed17ac2686ef9c5b706bf39188e4ed19719","0xede1b3fa24cd09be8263d8c6ab145234457b0982","0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","0x48148d8f9934937e6c0a9d8d069e5dd832cd4c76","0xb57980f93881da0950fd01d215c11bd3b411ea8f","0x0353af851a3997b307ba28c57525add18080916a","0x90921efeb37a66ee59621fc196087cbf2c27618f","0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","0xbfd4e4729939d6166cce85f7bfd21f8229e7a40b","0xb847f453ec067377214f90a20826afddf0319eb2","0x8c39df93724f9057f083434e8b954370c7a830ed","0x87a79f881e80bdde905497cbd0593b63e2bac58e","0xf4ae6ecd25343f3bb280a0e372504c946e1ed2b9","0xca54fa35a5b545c1564f9373255e29d30192f6e7","0x60bf62067dd3155f3acfeed177b872fe30214c58","0xb84180c2d8ef3d07d2bf8e0a20960bd12a879c88","0x632a8281c898ae05c33305fd5c1deccc21e2e10b","0x97f46368175b980b7124e38f0af4daac008a058f","0xb7faca3585241e899f3c96668bee199617b39332","0x5bd9d833e92ca0dcbb1c99123336ccf09bc25d73","0x25d872fbb73c37fc676c3784445e395bb9cf9d63","0xd40908f2b93fcaef80067c6c541249aabd5531ed","0xb7d8ddecee44a9f0d5136830c50ed7397fb41614","0x818cdfedc8578fef02dc0d0aeec1448a450ea467","0xb7f563b9660e4b0aa3729ba1e87d3cff0382816d","0x8316d8837b456ea3b60536b14c62357652b7e416","0xab27b52d1bb9806344296b707d459f6e13b61be2","0x294b3782aef0848f8bb233172cc46eff8b1d3c49","0x958d983fe50176d844bcecf137edb95fd1afc540","0x26014c73e070a30e5468225f19d1d799397a2df6","0x8006fe267dad399fa5d465a3cf08b27d31096c0d","0x64b876db97b3338334f8cbe1f8b662c9c4b03fd8","0x3280244b0d394bae5d324ffcfaab4f8d71967100","0x72d0779298e3297c63063e4d351252209129c7b1","0xfe2ee766eb3ae899b42cc5aa80e6f04f5b109615","0x208f8b3259e258245795982df05ce11905559fa0","0xd8c0d5523824994d43743f94dab72f16b306b248","0xac56fc694e06e536a384d273bfc318650cb135f6","0x827dbbe748a492b242a9a189ac578ef8876ee635","0x1ec72e7d0d437e5fd74d4c858b1fdfac142cda1b","0x9d68bf6376fb7afe2bcc01b494070df71069aba8","0x49c0ea2d6e623fb495010ccce23b78a52e2ad1ae","0x1d91d13d6c314645dc0ca07574a5c63994cebf62","0x75d8d350835ad1a04156b35c18c84fefb55bf501","0x6307bc75d2e50c5179eda3c8c0b03db0c67216e6","0x2f381172e2224f922bcc4886c98c147be34fd59d","0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","0x19dead03929743c097016fb3d2c24924d842e6ed","0x3920faaa62c641a0900270a71acecfcac8c158de","0xabaf7ae21fab058edfd665c118adea740390159b","0xc54772b82ee323a4e52b1918dfec580136e22507","0x1183e56b72adfb09d6f42a0662095ebd97d98ed1","0xde343eea2df10bd777ec8e959908c4d31a8285b8","0x46dd680b2f8499d61aa5f06db3231f76f2d44a61","0xdb797d5fd97d1bfb841f9af75f3921d0a13a657e","0xadc87383e6a0b31be130c0eb177e2d975053c2cf","0x290a0a0f782f759abcd5461a30ca4069d5aa22d4","0x28b5a020fa4758958f467c8afe04d189a2987d03","0xb8d6d535be38c042b9332ceb7856e6044d656eae","0x74638c20edc22b6d6d82d8faa742c7aeb32f7abb","0xae835463953aec4bfa8ebe3b5615eede67ef12d4","0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0x77847c5da38dc3d385b1753392c0b7ce64536930","0xea80928510d054dbcf04baa75317704e9628d26f","0xf21e66ae4c4b93b18cc8535ec0a7e5264a2dde90","0x67d6f5ad8e142f9b4907b19f680b8503c6893303","0x5e9eae65d330e32fc400909a97e8c83428149e7b","0xab1d7b51d17aa78684bdb3d99654176165e35f1d","0x361665f2c47a2b94081e1f0688ad9383446267e0","0x5ad4f60eead27b5036aaebfa17016aef4e79d920","0x07c8ea999f891492b9c9b472ef327c36db6e1e91","0x2f115bc243e85311003749137c3ffb13344870cf","0x3980b3bd0351eb05eeb54ff9fc84ec66ff0c0c36","0x313c76240e7464fd9759555fab9836649861b2ca","0x482d3329eb3ab650c151e41b9ecb1d9f222909ea","0x3d7a8d624d20419c2166823f0aa4c85bd575b0a4","0xa333e486608821200004b98212355a7df32491dc","0xf4a03b832e328299c7a114cf9f5a6f3e6fe8e404","0x21efc3dd7d7c85fbe2bab255d5b405f5706a277d","0x1f94a12e745ce696c9338a1db393e0125f218740","0x22d7541aef344172f5fef2e62ec6df9d0af88e54","0x2b1a493f6aef26afea23cdc2b0bc8c770f585b10","0xd42f93a50d199f05f49f0bdd7927cb9b275fc3d5","0xf9cf263e79eaec3743f89684112e3a3315622eb4","0x1d3d60b8ea7fc12ceb502cab418e187a421db70b","0x043ed3a18e640e5cc6ec571db07fa7a440234d74","0x82bb8d9fb9ec3a7da2dc3a7dcc48418dac6bbd4a","0xf437946f812dee52f615ec9963251b8527bdbf0f","0xc7e2dc3d5d57dcefec275de63f43b6c41a2e5501","0xb8b64e20c93f8094fdb6ed3c64fe73da529cd3cf","0x30311092566d230442f524b8ddec3999e4cc2693","0x0386a62b9ff2e99146dfd2fb96a6d328c68e0f2e","0x7643df115bcd333a0b4c651d114f25a617c735a4","0x4bc3f08916db3e6554bcac313000d3fc636d1bb1","0x3bd75973b3a6bd6eb69632898182b0677216b064","0xcfa14a6ed76b8881ee565bf22323e64ab87cf938","0x3bcb29cb62cc847c297a5c3fda379a10faba86b1","0x25d977a8d3e9f8742d53a35dfcc7138d6b92ec9b","0xbab587f5079c3e4beb5bd69d0edbfdac25f1f7d7","0x879ba6320c909ef3487ba6f5de7361299be78c9f","0x2df4eeefa9d926025d1cdebb7f60979432453889","0x8b4a106521ae96a41b2ec405d3fcb05eaf4a7c4f","0xff93970b68850f77813afd5926b65f0b2a99dc73","0x510388680d11d4473b4fca975dbc8b1922912e72","0x7e89daf03d3e81d81ba6a242fd05646faef524b8","0xc4f41654aca0b55782e6477c1f4b34af653313fd","0xde6916679c8264b2c4770a452cd7a41d58b8eba8","0xd673b10da7c3684187ea12a0e1bd4fbea99a165e","0xfe782c7a020fe0556d327ba16577a499dedcdb8b","0x2b3740e7553fa04b2328d0a8aa3ad92755f3698a","0xb56e0bc0ba4735887ebd29933589216cd619fa19","0x9e0d6e275ac85ea588c88b988dfb66e2535a13ce","0x22f28056feb3e345a5e4af21db63d2a6a06bede0","0xce12cceefb17071e12c4ccd0b99e13657164b351","0x2ff2e07f09a99dcd761ea0eddfd1beea3bef942d","0xf2bd7d459720b98c2f299ba13943af0f90b76c38","0x1f3340a3b39db5dbc6c5d46d5669e2e66f04e97e","0xbc0bc8ad42a45b14b22c4007dcc6caed916d5ec4","0x7bdbf887f3c4e2974b3b57163f34d9da0216e014","0x325df1f7a1c773c1bd5b2b69d1be9801cc752e07","0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","0x3beabf3e6bcf363fcb3752158b1e1911a05540de","0x4f35000a394adabe34561e0f5942bd24da6fcfe7","0x0c93929360ff8b46a46c2de1c8edea9541b78eb3","0xd35820e82dbe7f37f8594dfaa9b6f346d3319ce4","0x1d4d06d4ba090c559ce498f4feb0110286b2ed72","0x13248fbd26f8763b2eb6588a59fe2fa1bedeb8ce","0x8f6a052fe9229a4cf3a4b327f4c05675d2e9cd5d","0x7e71cc0c8f636f33ef4d7522bf4fc71e0bced0f6","0xb2423e90eab0a24934a68a799b896616031f4c1e","0xc0805e89313fe3251072016bb8d1c02a38aa5632","0x0efc56448f39d84fd85e631dcc40fedac152c2d3","0x402d3d216af90a41c2b00a989827a734cf9484b7","0x32e6557a77724385732df7112eb7693115171d3e","0x2bd6ec1bfdeaf13d3f3bb47a735bf92ff42e41d6","0x00ac0048b4ac2d2ae8635a88283523f135c63551","0x228300c99eb4328662fa7423073d992e2e8bdf9e","0x378653930892a0a40e1529ac6db1b9ff5b001010","0x862d6722e7ecfc43893d257e40b8a6a794b2daaf","0xc911faaa3e4755a5aa451f394295062e0ae623d1","0x1fde76e16ca451579ef2a5014c3ed250465c552a","0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0x579a995a6e4fd1138e879e85ce45455ea1b0547d","0x7f8bc6071a575427615829f314072e95f55482e2","0x6248d23207c36ee03788060a136d781baec52a0d","0xfdd498c312cb5aac919e830d6315290d2be190c7","0x365c46cfea1855c82f5544d76b5e5fbe2d628985","0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0x0a386a16a851d476d1f6336d429f850f943a77c3","0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0xf661459c9dc544a674104b3322957fb198907e0d","0xf78dad600e80716805bab5db735d9ff3ca966733","0x58da399155cb7b41da4a2df9315c776790fee951","0x9418d21ce57ea6f2afb8429e640ce79830a04948","0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0x80f7e693fc2920998b10571b420d8b9845b0afe4","0x943f67cd01e6db21bfe4e0ade7fefa316a4aa4c2","0xde639c2f28378ab59702354608d51b11a5019c3f","0xd936fab4078de9623c9fb90e0b1b31a02722491e","0x4470d7c072cb2455086ee957fa9fa9f574df4978","0x4631ebc1a91cbd16ac3d8ac1d3559e060ff57be8","0x1635ce4325eb96817610255fed3b39273deea95e","0xc8a4df2960fe0ac1d6b296b7dbb95be63addaf97","0xaa67598b485d713ffdc7a7f78e2337f7cb254dfe","0xf53a569b8c3e8466b7ca671cacd7be66d9b171a0","0x92851633192abe05b58fb27f1199d26d208e1dcb","0x99f6c75ef4b589f7a010b915f05077aa3849b4f8","0xa718f325b66c4904fefb0a4d07d148a524d05c9f","0x5aa0db49a1dc5ebc4537f19e816157a9942d039c","0x12fa6b007e1f8813353cd95ad47c1bcaf5709940","0x386344dece8caddaa272dc29a866fc7729f4ad8e","0x7aa2518824e6e7f12810ec0915fe918608fe29f0","0x632668e883aca908133b8fb03c7bc3601dfb5b17","0x07beedcc2d7b0ad58ecabc0a167664ba148b8abd","0x04b49ff522641350151a4de4e5dfe9d2468efce7","0xced5ff3a0d6403a0045c35fbe069d3d7a56f462d","0x9fb5d1608d1b0c16047242e75d9197789793f443","0x67bb61cc05833e839a99432615a3403243db0cae","0xe2d3f2a9bf70af50c4d574f1b670ad54442c9acc","0x626b1aeadb9fc0b465b40ade4f4bbf0c01c9db40","0xb39f1bb9044774bd7881c66e9f6563a4cf007273","0xae289db4162db4a9ce107caeb7b32c08c29b9032","0x04b5fdd6b783dfc763b9c778f3c75e18776ac159","0xaa97c6927642cbff371765672d5ee822474bb72e","0xdfceb6d502812116cc0b965284a08e6b9a526a49","0x882b8317e30a4a3a90902962e69e2889e4dd55e2","0xf80da5e94836e36fa3000405cfe3089ec7537ff3","0x7461731009e947f9a0f930bfd97e589b51b41c72","0x6fc263ff819609e5f4c3d5b8d742fa94b8a3fead","0x6b975e699cfd9944c386502c21fad64bd1bace7d","0xd5a5a5601c4d15d5dfc3fc50fa0df37839a91244","0x3972c0ac366b274186b469485c32c400fbd1640f","0xea11381ada3590103d756f01e1c492ffe94d9f2f","0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0x9de1925269f2c68a2a570647ecb170fc245db448","0x041c60e0962f8d8791aa683cd450aec42d5ffca0","0xaeb12fe49e546e3b6bc4b1e7188ddf9d6558375f","0x14a7d27af8cda51ce0b9b74329fb38e45b8217a3","0x19d2d592ef251b1a79cf7b2bfda14e8dc62f2aea","0xe717d7b3974d2c2703a4bf779a39d59f853044a3","0x4d261de6de5543173a39c7b24cd963cc014adcdf","0x3a0df50e161dc213b353dd8c75de8b709662821e","0x3ddd8d5e8fa50cfdcd4648199b644c50a4a35b71","0x61b6b12b7c08930586377aa1ca79cb279ab2f2f5","0x27a90a6825132eb88e8feaafe035658663c8944f","0x5e9def163ece7711d23d4e7319013b10596dc14e","0xa947c9b690e8c02338b69a6a0703b89bb12ec7b3","0x6084a590b70b23a4775d1fa317c041ddae6715a8","0x05a7acce2d7bffabbc937b489a4345a6ff042e62","0x0e99ca7f0ee2472f236062ac3fae3852d4f9f945","0x42e750af4a823dd807784ac7f100f56f104d5962","0x828690b1de5f3880fa6f3a2848df18fec376abae","0x34d3e737cc228aaebea03ec8e98426ee3748b30a","0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","0xa7c858615b615cae98966cd06433c5e8734fb875","0x98a9a6220807d7c3db504b9e019bf1d79ceed76f","0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0x92d9f5c2fb80e0be363082fab54f1178e8baa2f5","0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0x3e729f009592f1f6283e06a6166e9ed065874b6c","0x084bf5dced9a9d4144791a7d4a69fed7bf284892","0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","0xa187712d483127ed9c0f223119dcc49213123143","0x80b2f1d254309aa86d21c854532fd150c34f20a2","0x93fe43db40c997ae784143f060032db16293d93f","0xd9d9d13eeeb2242a105329630d16fbf6567be719","0x994a1d434d74a2803c9e00d64797d2ea096308c1","0x186cf8f2aa5cb18bfc5920ed86054bc1e22741a9","0xc9d91c39ab7edaeb5243ef7df21367a65b00739b","0xd4721bc5d4a48301ec77b1901ba797852efbb884","0x77b3a67ccedcfebe4f6099a319bdef2dda99b69d","0x4d2d54d54d1c45a2d9bbc7f0fc4a3accd901bdb2","0x97c56559fc13dc4c31d80eee2ee2225d6d88d4f2","0x53375501b0c7dbc62626c0c3aaa337bd51f36c24","0xe614f620e1ad131d9ef45343548c064faeff25af","0xa2e20d2b48067170cc0bea7c613482ec1ebde026","0xe8b6b90e3f4214e5c25fe3b2e33d1268b2de88ac","0x9408ccf651522aaa89a1cda8cf5fd274331222cb","0xc2a0ff8b42413996eaad7bf8e72e206b6c02bb43","0x3fa4ded4779b7ef0f9b9ad14cbd70fdb4d262674","0xe990f34d8303e038f435455a8b85c481b41a8b0c","0xa37911603bbf26706ef132a2969d99da44457a6a","0x65f4923c646c62d5803940e94ac03da955c3c814","0x2464c45cb3040821a49773717ae4d375dee3915b","0x8c4acbbfa7363db0eefcb8cec84124a38aedee61","0x2cab0f778ca7592950cf7a5f168448669a7c1b3c","0x9ad3a5e6b77aa5dc13e0bcce358a8fb7cbe73966","0xf8fe4f54f5b99218512867daae51497b721d1bf5","0xf43241a5c01261a9c6fa6b86e386a35d03a33919","0x50c9936a23f146965889d36084a3cc2ef915df23","0x8186b3cbd88c94e9fa7e20cb79ce33b0732173e3","0xaa2045d4f6c76211fc5e5c9c64fcb4224c2c3430","0xf1cf32a6b27edc45d1d4273737e3820e88fcb78f","0x1e754a08bcee0c9284ca4c518a4af7897b8d3a66","0x154e51835f7dca0b02f5a0513811c654ed4cf924","0x32342d2545e279d2d5170b0c450d3ad72ba48775","0x1658d2ded0f366699dac1f776e75c619bba041fe","0xfee740fb924b7e680581593db068ac0dc9ce9250","0xad1be47f4f502b165af5c88cec7c5f52953aa005","0xec2d9c94fce58b2d65f3e2eb02b0332e3cd619b3","0x144fe10482fc1384cde291b6e01ca868b9355eca","0xae49cb1b2fe6cfc29e6ef7c3c2484d4ecec99fe5","0xf9ac202a6f75ca67cece7937ab36711c4e25b749","0xea65a365a14973a165620dae52b58c0a418fdbc1","0x084c058bad49a6382090cc5fdab4ab6f64c97349","0x1e98e5e67ad1d5e53970c0b634ff9ec6ca2b3fa9","0x894d44046f35608e1ecfeca49f798b7b8cb027d8","0x00a379b06f2269f46a6b99c1ea39c97e66525740","0x5984a688e23d415a58dc4be3d612d609815e0f5e","0x27bcfb25219788bf8d15fb0dcabf266c7259518c","0x51ec01b534bb475eb75f43b42cc6f91d3a66738e","0x37ce6c6624f810cde5f8a5a6806513c3f429b465","0x3adf86f139cd90afc208152f80f56059c07bec6b","0xf4ee5136ac509588cea5b4dd393321d6ca849646","0xceb843304885c30042c5b52ec286952bb7cdb58b","0x283f5f6ac0a7f54edb7ede66c54b86936126a307","0xe60993ac8bb768ec437503811068b8ceece4ab39","0x06f7dc8d1b9462cef6feb13368a7e3974b097f9f","0x0fca0d2c1b574a5d1fd3a32fb7db2dd27559ef53","0xd153bb8c1245545728551ebf87a6a7fe6e5a5793","0x8e9a2cea15733ddc69e1021f78c74b9aba534674","0xbfa4f33bc90151641dad7b839b78d73e30e429d0","0xc9b77a0683e2f281c633181cee937f920d47be9b","0x96b7a41718771ba6c17bb46001b7ae2fc2f5a7af","0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0x4095266532479952aaf9f31b247a44e6ed65ac26","0xba4573701a054acd9220f0c268759a597bf579d2","0xfb7ccfa8e828a2167c77ff9e2d5202eb8f631e96","0x3c2762a66ab9fa72eb163dcdb5d40556cc4e70cc","0x5ddb8e92911fe1685521106fd7bf15479059f412","0xeca49c3d214f577cfa4b64097e238526e3a4c00c","0x515574ce0e25d65496647999231fe2145ff62408","0x3fdd66b0c37e4823ec9cde47f68e2cb342b03653","0xf964e936ca0f86c3b6e8adc1dd146e03f5fcd311","0x0e103b00932903126034e9fbe28c9aad78c9ef24","0x5d5c88952be741a1dcdf9b155a6ba5d7f63343c1","0x7fc5502c94b36de68dde3980415679c72ceb113a","0x80b2f3b9132a18f1285cc11a6f1614a12ed7b9fa","0x5fbc2d71646936dcc2e9af3cd7e2ae20bf8e9f99","0xce5600f9ac619677ca3e0853d1fddd067919b3fd","0x44c915216d224bc6e98101f39be4322d2eba637d","0x8742d030d9f3dc15eccc99c50c8a6c783f96e211","0x989c4ab6b59d4086b5eea91ccc7c78c2b8ff629a","0xac3d6efc9e9b8c90b1b1d2ff35b1d4a84c9ce80c","0x01d985ea44d2eee7a786bb27f307b96ab3d7199a","0xfce8d389f0f88d73dccda73618c5eccb64c8cbfb","0x66f4dd75fe5d36794592a74f816f7e6b8cf479f3","0xb2b635318c54b7ac8e213eb2c6720f840f3513bc","0xdd36419d5fdc74f99900c6ffbdfda7b0a6029cff","0x68e3937876369d26a11dcc3b3581f7585a3a5bf4","0x5d2595924d34148b842d7a4a9b3582cf73a38cda","0x67a8f62058a366655e208c83977f4328b5ed5d3b","0x4d275214be7487ba210158c29d27c216829489bf","0x7ccbc67f48a5663d1986331f2fafb3dfa032030d","0xcf1990e6f590db3330d2ec4f4ab40556f21aad99","0xb1e6f76ab3e9855c26b11d002776d20edcd59e6a","0x8f0576170143731420237deeb8eb8764ac64534e","0xc334833b443ac842f4d85ed187c85a7e63d1598c","0x03dae2b6ec973a97db36486c51914ddc8efe9048","0xbfaf2aa7443557f1e477c910b8113a8959923ef5","0x09779fe3423adf9b3e89626d95e7541fc8d7ba8f","0xb8f8e5b6b5c37b9f5b2ca2c882aeb65f37d63331","0xc9c09cc7bda071978348984b5504bfd9989788d0","0x0f4cb12d1a1724e39fc5af9b23ef3e9104e2f948","0xa7a0579fe6d6f258106c8d5d3830c3ec913b3296","0xe00b841251b8d8f0f78ab5ccd541f3773b8389db","0xbe39644d88a461fa0b659b4aa8028ac7e0c25e9c","0xc775a8a8f6d5f689134623b48a5fcc8721bc81e3","0x608ab57a77cbd960ec007c10db2870bbc367b48b","0x4180a0da3c4d833452150634a1e0141c20d34196","0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","0xfcc46b36098f6d2490097b0c6f0ac5c97b212d5e","0x5e57624bf4f9041445911e8f5497b4eabad02a24","0x91c0762fe463fc72b0464e0b859ef639e801991a","0x3dccf8acae9cbc7ff6113aea13940f8b7aabc5a4","0x5131f2f5538ea23b95f5d2f1feec9f7229fe61d2","0x1a85375a5c1c8890c8d136a8cb6bcce860209f0b","0x85f64a42068b0ddb7288078c008090ee944d451f","0x94728ab6101c9efd9861347e2c734ab1a0214a97","0x8e262a1d1dc7a24274126daf10e06ccf46798b8d","0x4a77b90f2af54e302a853a9b92e90826fa0742a7","0xd3de425cb710003550dcb3c8e7b98ff4ec8efe41","0x0c2f4caa07b6f6436106be1156b377d5362352ed","0x9950efbc3635a66a3907b6d47980f38ff47291c1","0x33897a1cc7c1bd41b7edafbba8accd93941af34d","0x0c0f26efc6fc6b79045724dc32a613096a4c14cf","0x8de85f121d62f12653350e1f555ff55095100513","0x466790d81f8d4ff5723f08f28690ea7b24301522","0x80519fc1bd56d6bb3d131d4d40edcd0b2d963021","0xeb8cf0c18fa81820a34cb4913bb107fc77fef9e7","0x8c92ef1bf132f9f66b5a74d9e1aa0cd3161480e0","0x1d8bb764f5c13c8f733a5e723127a2ad040eac5f","0x6a4d23bd37319bbc1a778a014a7540c07cd0489f","0xf180c14dcd820f4622dc9a653f8688844968e47d","0xf8f3e3f52a74c9b6d453c70bc05e5d70a58057ff","0xea39336fad1dda9cf3cd1eed7462c9d871c8af4c","0x138e37be2f095f16b1cba03c8e653d0d309ff18e","0x4cdc68367012a81ebcb9a60aa3e170b0bc7b3cf8","0xc28e635715b808494187941bbb26248e1ce8e1b2","0x237deb0192880732869926af2ec85a6a64c88e8f","0x253902b38f19ccc22e589b4c12beb21293a89353","0x524fb57fdebe36acd8927144fcde603dd30e7a3a","0x6f146a70f596fb4efb51e2cf52cbe13ad33e5be3","0x64284e30d519df74104341231728eeff17be2144","0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0xd8cb840fb68154297ea267b110acf2b8327ef953","0xf98293d565209f849b6b675d06f24f5d4ae3fbda","0xca98ef2381fbd75ba80cacfcac6c9dd5710bc9ff","0x8d8c9708ab32b560ea2aaae4fd90429ff72bf990","0x32ce34a267e617410f25c4879af780b602a599ba","0xf09de6992d90ad1d6987b9a8aa85019de93a7d9f","0x1efffdf7dabb185d39371a35b8f3738d9d8f38db","0x05b61848f77d9f11251c95cd96416bcc20ea3b77","0xcc6fd802fda6ef3b5ca1fc543182829dfad691d8","0x756c1ac65c0b2269f918d8418d43c6c298c90b21","0xa855aab6a24e627870b7accd6134a6f030d48900","0x75691b11ff81f7f88510cc81fd910614dfee92cd","0x5fb116257d670316b3eff0a7c510756bb26e5fbd","0xbbe2b49d637629280543d9550bceb80bf802287e","0xc8a574b641b0bdb43e07285945a58a4a6785e006","0x39a5724ddd263a28c9a7938ce2cee1d549b0b705","0xb555009df0dd3ba8e5c9ae74018dc16f3a14ecf3","0xb50e3bb80b40a42b5327c995ef4180fb9aecabb8","0x9ac125e587f30e10f30de58f1f1cd193b726462c","0xdf12e11e7bd79dc524d7e257097c1d8b2f2fce13","0x57c379bc8272ad4c025b4bb5e22fde510ff0d283","0xbb8153590646f39c25ef2285d9d56805733f47cd","0x587fbe613c3cc991455f0ea531ff6006c0b8fd51","0xc0561558b7d18f971a8ab25753eea597215c893b","0x84dedc347d0975c965df7b8cd81c4fd26e45d279","0xf0b8ecf5e5ef1cf80e91f9a6ebd24d6416d2cf6c","0xfbe624883e445208cf927abc444f9a36a0eb155e","0x2848afd62180dfcb20951275fbf8179ad67d81aa","0x96283f5971f6f7330c260c600252a9b222bb65bf","0xfc6600d3d71b0628272b71ee892b73cba28671b5","0x84009c8280d2248bdc82e9c9b636cbd958f4d169","0x7973502200b08ed0f493d8e3ffa10750f2897d05","0xb932047206f891b7a8a8c867969e2908da869892","0x8d207cc1182aec1510221444e137488356f791b0","0x4f174261fb3959b49a0b434f486dcc0529ee97d7","0x0e10816ac60b5ed3776864b259b31abd22b66955","0x4874193cf77b10bf21a16deb28fee1757b5754f7","0x77f62b2dd47520f0e29663c8f208a40682202936","0xf9c3896814aade6c9f3b309c7aaca4e261bfb2a3","0x16d6f5302fe380b9406d454183a3ed61923aacfe","0x5cbd8dc77de46b3ab9d999b927300538d6539a6d","0x7d272d0e78f9566b42fb6823d4c9e6094b36b4f3","0x66fb0873754d061660fe0b614bf2f81c624167d9","0x1c84469ee010a5c1fa0771aaf450bde11e34fbcf","0x9bb72715c2a9edc1c453c076316fef90c9d462fd","0x28de2583be2889cb8e44d69ef8c7a1d61f839d5e","0x8812a4cc6a69919ac9573d9d93fa24f7363b6043","0x7abd27336a3b3ffbe7dde19383b0a18a4761cd9e","0xaa3c5ab4627d5114e1565d4b483a93c9b8925628","0x7c1f434b31acb3d4b808e852b7228ff5d38b3032","0xb1a1d839fdcbdf54818c08fd19c4303cd5bc5aa2","0x75f4ce1b4182a9b8627c547221dbcea68804e1fd","0x3a50759e226d96f01d11e866e783553367f7ae66","0x37736b358123da02e55252935341fa33a52117c4","0x9467135a90023c731803289676302fa18e75f5fe","0xb93de26e145eb31df90bcf31b1ea67c7605dd59b","0xc99a0cc97e42ba76b2b8c6d19f976f5e8b2a577c","0xebe926d1574a024c04c5b3bb6e553c5c2682961a","0x41845e0384535423b6a3d64c79cf5721bdb87a1f","0x41213b42c4be8d54f00a5919bed0ca98a61e2412","0xf12008f7a04b81dcfc58924157c95def01977b05","0x6644299eba9d497e18c8010b2a412106f1d40a7d","0x697652ad036a251bee98821e0dba68e196029f0f","0xf7da27d41c96fc150a45d4feed630f55464faea0","0x614df8331abf765e6c68542c29e0aa9be2355e27","0x52bf9280603dc997754f1371e239dd2092a9b025","0x151b684182558dc36be6f7ab581784f4f4f8bdb5","0xd14689dca1b1529d4d2b57cf1c6804c82dcb96e0","0x7f6efb4f1a8ea8da4941764ac7e245b87c34dd7e","0x4590411f3aff7df6767ee92a57767682c0b6528a","0xa52596ab19b2ecc92126e37141295d438fb9b00d","0xbf91b7db4e6dbc0992c9e3a16a062a4229909de8","0x5efa579f08775d1a702e9e31ea570995e8a7c302","0xf3213f7ca9984b4f911ac17735873871a83f1cd2","0x591de72fed568f3b6c2c96ba5aaa58ffec5cd108","0xc384ea49d7933bb841d88380e9f02da6397abbfe","0x30603dc7e128482c5395045801188bb628be96c9","0xe5cdb1057b0b267ec96b348aefd172a52ec16a4e","0x1cd88b1e733ca0e968da41d68fdbcac7c7000acd","0x27db1035c47312c03749f5ac3120f879f9945786","0x72ba68515ead7f108247cdbe3dc011cbcd374410","0x5bac6e6b920333a95c82dec160a2c2c0560541f8","0xada19b10f5f6ce3e568116c02334d74645ba000e","0x0dfa9fe3279f2c97c49acaf2b53a13a793e17e00","0x3960e96ed17b7a45d098dc44a99f80b41ed1151f","0x1218f76ea1ae239edaf57aabad32dbd340fc8599","0x4ff7b6f3fd2995694b3c03d45cb6d777b1d54dc8","0x21e5441db69c447407d44edc386ae891f950ab91","0x22adc81de50eb7f27d11653bb925507eee90c59a","0x26cdc5670cf54bd32c538f16798c8f3fa2c3f0d9","0xcffb1b7df762239cf3fd7fc123d62868ccc94206","0xcb443a5f156b94dbc83ffbb25cba8099bf183cab","0xcd328a00e03b90f747b3bc40740074eef3a8051a","0xfe00c99ad672f36a1c6f52a78c34f4a78848b273","0xeceb3bc3d347dd3a41a0c90223e9fe3952674d28","0x4a53eaf19dda2f251d526d49cf4772bd373fcb06","0xae8ab67bd43326e424b649050d33b704288af1b5","0x1ea303ec230402a330af10ec861c98811be3cb43","0x280c09bea82601a946c4be9761908851a8748872","0x0c9718718f7b1298472cedc4c61ebd560f34c798","0xa501d840c6d9186a6c9470282d99aa7c367abf03","0x8ae401d56e5ea091e1084914a2fc75c39d83a13c","0xf4c3add01e5206d30849515a5bd154f5ddacdd88","0x4b23257971a54c3fd1dae28a330f8e2c7d4e6952","0x3cd298e08f1a18497197e1ed01c583206bcf145f","0x5e95128f86908f9308dc79c7f5a27ed4e77ab137","0x8963e2d4982a89824c08741270244af0acac5c2e","0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","0x46973d7f1d38938211c296ff818070ff8c1b57a6","0xffc2dfef556ce6321b2759413e31a0f28caa47f9","0x2fe8283062fc30cb0bed18408ace49d8adccdfa7","0xdbac430fc897b8e7c512ab99f4cfaed625005f51","0x637c199ad7e2e3f87237a46a69dcf8d3a962cf8f","0x2cbebd3002394fa8dfa0f44fe198c3cfe761a8bc","0x4e8fcce4629c1239d5ac2f766cf0f6f0cf421741","0x901e267453cfa589954074affef982eaf8069f5e","0x14fabf70c23e97d6e44cd377ae86963cd6907573","0xe02bfb4ff47cb177cef881583451b4cb8f5ff6ef","0x7cf80e9484f5b620824902cf75bc229bad99c361","0x105156087fc2f383f5002465f0fdeb94da6c8a80","0x6182df3418e4bd1b1793e17175e9b41080c89171","0xa93e153f26fb07fc4288a53dbed13fee018bea7f","0x55319af545ef08d4a1c6d6971c6b25f5d4ad1d63","0x6173eaff6386576e352a5f788ad3bde41c75e9da","0xafc9511da747012eeeb0b6949a028f55fcfbdedd","0x8966d8acbb4b0d5830fca4b0dd3b134e41049b19","0xd254c95669752b9e9ed86cfc359d73e38c52c082","0x9c5a0842e6d90138220d7071fbf3940b86f1a8a1","0xa24e2a8e4840564821f109d5b3a908194143e636","0xac8e2f1a945eeacd93dfc5b485dcaa2330971426","0xa511d04add0dbd5aeaf4f5cfde0a70c637a32b4c","0xeb2de0c5869e9b3391402c80b347dd12f82a39e8","0x3f82b0f943fa1c1f9cd21f22e8fa845654d3e167","0x8523341eb079f6a85cab91f3b6f6265223952eb2","0xd00842cef433d456564eb602dbc6e4726119f358","0xeedeecd1d331298dd945da27fda21778a5d170af","0x5f02dcbe20f2bec3e1d1b86265948bb4dd341b01","0xe6f86eb6448837ef2e2a0efa62f12a6d62c87085","0xff88ad51af24a99d2966b819fea4a64e75613730","0x3399841565a0040d4374ce5c7e21ea6580b7bea0","0x7f36502b14cb1358b680f38046aea6bd7078975e","0xb1e75810a515ac20b7a47c7ae4a2be474db9b24f","0xc009ea4232461a7e913909306aa7f70e6b909395","0x5842adc8a15bf1aa419e38ea67242036b3984210","0xf8cff7ab09690678602d2e1244a567f5ce64ad9e","0xd960445ba0e856723b8b0d72801d1fe36015743b","0x7d107f00c93f86d504d3deffa53ea3ba62577514","0xa7473f10be830996c064185b9e37a49cd4cc5712","0xb762fc6fb322bc7eff978a4cf1257a28b84f2785","0x220ac4181502bec00c952007265a36c1f0af25cf","0x24cd0db23a635f115300091449ffce559dda1b76","0x80bc5c37b2838e16db0cadae04ebcfb5b0e7cad6","0x08da821717d3a2436fbb56e1de9c421c001a9648","0x8ad2fe2b533c9bdae9f67dbeafe21aa8aeee9a36","0xd23cec774de5cde5ec05ceecfd93ff9801ef0700","0x5e3439d866cc6a6ed8dc3f631192a5f9766de523","0x42f9378864a97d6010d12b5f052ba23a5b1cbf74","0xb0c288853dc94d13d4dc0849e509c581740bcc09","0x01559c13f360474210824b356d811d0d0c0cb56a","0xd50dabaf4a232ad09319c7342880d0f2726a6b34","0x4f99990fe829fe41e062863a5839622ac0cd90ff","0x572cb1c1af23d551821c0b976061b95bcbc7d545","0xd555cb940974f6eeeb3c8fabc1ac3dc57ed0ed55","0x523044de194911829e303470e5ccb284e1d4c96d","0xe13a8a33b7919bd0b7eed1293a7c3d02716b1b6c","0x5029ab855962c554c5712d89d78d9c7fac8f5712","0xff4e6d4c310ae881f5f622247aac56efe49927d2","0xa1875c746636634e8f55a8edeb0feddaed2488d0","0x68d68109c301c10c6ad2c2519842f311b868cc4c","0x56a1c8047c4f7bf8fd4043d3bcd8d0c022a435b7","0x8734382c5e988c1ee1c750b16d5d1fefd3423b09","0x75dfba2f6025d3021f97b32dcf120eb11a6425ea","0x3dfadcf87494364735076cd50be4a62864e65ded","0x6b7cec1b804387210cfba64d9385fd0a81f7c16f","0x4d3e7a5c691e8d85817e1cfe7c0fcf7fc3d9d12d","0xe505ca94809baf9340fe0af280ec7143d37b9ae4","0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0xf4f68c7ffaebd4788fcd456476eab8146c55b8eb","0xa41c7ec049ab760451e1e01372d69cef682808d5","0x1b1e4349d2af614904ee0ffafe19f95a45cdeb35","0x4cbba90cf8969204d101751ce08998c474d176ec","0x0f9a0ad7d90e74437c7a2b6dc3b2d4b2a73052c3","0x268ac6ade045b1294538e9d5b3abc8dd658b4b0e","0xe0b37eb3b7999642dead977cad65a8b7c7e62073","0x42c90ff2b9654eddc6644a5334d4f1709eb94039","0x3276d704c05399d5b317ec2723d70039150f34be","0x3ece050f5b0deb05d3516bead31ad511cec6ebb0","0x20a26c1bfa57572cf716b2b4b3e10661d5e062e8","0xb0bf62e1ee6e27a2bd321a52cf031960265e216a","0xd10ad4617be50f1b1771f9650b5b9db1502ed471","0x31fc47d0ddbc4546ed1c8a9d0253808c367065a0","0xf33075291298e2ffe53a6359071198e4697be976","0xdaad6241ca10057f5f9001498aef5fce533cd58c","0xf96c8b3f4b854d00db17d9561aaa7145d79f35fa","0xe38c4225d2f15e677f3c19248719bf313b745529","0x722dcceda4491e5992017ad8b244dcc4d51215bb","0xa5455ae3d99bf54e46a7493f5d0718a83a4ac957"] \ No newline at end of file From 39c0e3da9c9a7dca93d304f45b0dd29d448f443e Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Mon, 1 Apr 2024 13:03:26 +0200 Subject: [PATCH 23/34] feat: add automation --- abi/fullDiamond.json | 2407 +++++++-- abis/AuthorizationFacet.json | 52 + abis/BoostFacet.json | 78 + abis/BoostFacet.sol/BoostFacet.json | 4618 ----------------- abis/ClaimFacet.json | 89 + abis/ClaimFacet.sol/ClaimFacet.json | 3506 ------------- abis/DepositFacet.json | 65 + abis/DepositFacet.sol/DepositFacet.json | 4090 --------------- abis/DiamondLoupeFacet.json | 97 + abis/DiamondManagerFacet.json | 1397 +++++ abis/FeeCollectorFacet.json | 21 + abis/MiningPassFacet.json | 114 + abis/MiningPassFacet.sol/MiningPassFacet.json | 2494 --------- abis/OwnershipFacet.json | 52 + abis/PausationFacet.json | 44 + abis/UnlockFacet.json | 79 + abis/UnlockFacet.sol/UnlockFacet.json | 4231 --------------- abis/WithdrawFacet.json | 44 + abis/WithdrawFacet.sol/WithdrawFacet.json | 1527 ------ deployments/DiamondManagerFacet.json | 6 +- hardhat.config.ts | 2 + package.json | 3 +- src/GelatoResolver.sol | 85 - src/facets/DiamondManagerFacet.sol | 11 +- tasks/admin.ts | 16 + tasks/season.ts | 19 + utils/generateFullAbi.ts | 21 +- utils/getFacets.ts | 2 +- 28 files changed, 4198 insertions(+), 20972 deletions(-) create mode 100644 abis/AuthorizationFacet.json create mode 100644 abis/BoostFacet.json delete mode 100644 abis/BoostFacet.sol/BoostFacet.json create mode 100644 abis/ClaimFacet.json delete mode 100644 abis/ClaimFacet.sol/ClaimFacet.json create mode 100644 abis/DepositFacet.json delete mode 100644 abis/DepositFacet.sol/DepositFacet.json create mode 100644 abis/DiamondLoupeFacet.json create mode 100644 abis/DiamondManagerFacet.json create mode 100644 abis/FeeCollectorFacet.json create mode 100644 abis/MiningPassFacet.json delete mode 100644 abis/MiningPassFacet.sol/MiningPassFacet.json create mode 100644 abis/OwnershipFacet.json create mode 100644 abis/PausationFacet.json create mode 100644 abis/UnlockFacet.json delete mode 100644 abis/UnlockFacet.sol/UnlockFacet.json create mode 100644 abis/WithdrawFacet.json delete mode 100644 abis/WithdrawFacet.sol/WithdrawFacet.json delete mode 100644 src/GelatoResolver.sol create mode 100644 tasks/admin.ts diff --git a/abi/fullDiamond.json b/abi/fullDiamond.json index 1c14661..18e86a7 100644 --- a/abi/fullDiamond.json +++ b/abi/fullDiamond.json @@ -1,402 +1,2015 @@ [ - { - "inputs": [], - "name": "BoostFacet__BoostAlreadyClaimed", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__InvalidBoostLevel", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__InvalidFeeReceivers", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__UserNotParticipated", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_boostPoints", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "boostFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - } + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "unAuthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "BoostFacet__BoostAlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__InvalidBoostLevel", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__UserNotParticipated", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "boostLevel", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_boostPoints", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "boostFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "ClaimBoost", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_boostLevel", + "type": "uint256" + } + ], + "name": "claimBoost", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "ClaimFacet__AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimFacet__InProgressSeason", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimFacet__NotEnoughPoints", + "type": "error" + }, + { + "inputs": [], + "name": "LAuthorizable__OnlyAuthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardsAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "automatedClaim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "_users", + "type": "address[]" + } + ], + "name": "automatedClaimBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "DepositFacet__InvalidMiningPass", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__Less_Than_One_Day", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__NotEnoughTokenBalance", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__ReentrancyGuard__ReentrantCall", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__SeasonEnded", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "DiamondManagerFacet_InvalidArgs_ChangeBoostPoints", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Invalid_Address", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Invalid_Input", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__NotAuthorized", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Not_Owner", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Season_Not_Finished", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "BoostFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BoostFeeWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "ClaimFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "DepositFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "DepositFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "DepositTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "emissionManager", + "type": "address" + } + ], + "name": "EmissionsManagerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "RestakeFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "rewardsControllerAddress", + "type": "address" + } + ], + "name": "RewardsControllerAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "season", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + } + ], + "name": "SeasonEndTimestampSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardTokenDistributed", + "type": "uint256" + } + ], + "name": "SeasonEnded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "SeasonIdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardTokenToDistribute", + "type": "uint256" + } + ], + "name": "SeasonStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "stratosphereAddress", + "type": "address" + } + ], + "name": "StratosphereAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "UnlockFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "UnlockFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "discountPoints", + "type": "uint256" + } + ], + "name": "UnlockTimestampDiscountForStratosphereMemberSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "VapeClaimedForSeason", + "type": "event" + }, + { + "inputs": [], + "name": "TOTAL_SHARES", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "newBoostPoints", + "type": "uint256[]" + } + ], + "name": "changeBoostPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claimTokensForSeason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentSeasonData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokensToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPoints", + "type": "uint256" + } ], - "name": "ClaimBoost", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256" - } + "internalType": "struct Season", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentSeasonId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "getCurrentSeasonUserDetails", + "outputs": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolShareBips", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "estimatedRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getDepositAmountOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getDepositPointsOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeReceiver", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getPendingWithdrawals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokenBalancePool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokenToDistribute", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokensToDistribute", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokensToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPoints", + "type": "uint256" + } ], - "name": "claimBoost", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "ClaimFacet__InProgressSeason", - "type": "error" - }, - { - "inputs": [], - "name": "LAuthorizable__OnlyAuthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "rewardsAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "depositAmount", - "type": "uint256" - } + "internalType": "struct Season", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonEndTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonIsClaimed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonTotalClaimedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonTotalPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStratosphereAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getTotalDepositAmountOfSeason", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getTotalPointsOfSeason", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUnlockAmountOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUnlockTimestampOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserClaimedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserDataForCurrentSeason", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "depositPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "miningPassTier", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "hasWithdrawnOrRestaked", + "type": "bool" + } ], - "name": "Claim", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_seasonId", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "_users", - "type": "address[]" - } + "internalType": "struct UserData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserDataForSeason", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "depositPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "miningPassTier", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "hasWithdrawnOrRestaked", + "type": "bool" + } ], - "name": "automatedClaim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "DepositFacet__FundsInPrevSeason", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__InvalidMiningPass", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__NotEnoughTokenBalance", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__ReentrancyGuard__ReentrantCall", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__SeasonEnded", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "MiningPassFacet__InsufficientBalance", - "type": "error" - }, - { - "inputs": [], - "name": "MiningPassFacet__InvalidTier", - "type": "error" - }, - { - "inputs": [], - "name": "MiningPassFacet__SeasonEnded", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "MiningPassPurchase", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "miningPassOf", - "outputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_depositLimit", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - } - ], - "name": "purchase", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "UnlockFacet__AlreadyUnlocked", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidAmount", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidFeeReceivers", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidUnlock", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "unlockFee", - "type": "uint256" - } - ], - "name": "Unlocked", - "type": "event" - }, - { - "inputs": [], - "name": "COOLDOWN_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "unlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "WithdrawFacet__InsufficientBalance", - "type": "error" - }, - { - "inputs": [], - "name": "WithdrawFacet__UnlockNotMatured", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "WithdrawUnlockedVPND", - "type": "event" - }, - { - "inputs": [], - "name": "withdrawUnlocked", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file + "internalType": "struct UserData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserDepositAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserLastBoostClaimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserTotalPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getWithdrawRestakeStatus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "boostLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostFee", + "type": "uint256" + } + ], + "name": "setBoostFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "setBoostFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setBoostPercentTierLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "setCurrentSeasonId", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setDepositToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_emissionManager", + "type": "address" + } + ], + "name": "setEmissionsManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "setGelatoExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setRewardToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "setSeasonClaimed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "setSeasonEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "stratosphereAddress", + "type": "address" + } + ], + "name": "setStratosphereAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setUnlockFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "setUnlockFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "discountBasisPoints", + "type": "uint256" + } + ], + "name": "setUnlockTimestampDiscountForStratosphereMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + } + ], + "name": "startNewSeason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_durationDays", + "type": "uint8" + } + ], + "name": "startNewSeasonWithDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_endTimestamp", + "type": "uint256" + } + ], + "name": "startNewSeasonWithEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "FeeCollectorFacet__Only_Owner", + "type": "error" + }, + { + "inputs": [], + "name": "collectBoostFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectUnlockFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "MiningPassFacet__InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__InvalidTier", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__SeasonEnded", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "MiningPassPurchase", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "getMiningPassFee", + "outputs": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "miningPassOf", + "outputs": [ + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_depositLimit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "purchase", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "inputs": [], + "name": "LPausable__AlreadyPaused", + "type": "error" + }, + { + "inputs": [], + "name": "LPausable__AlreadyUnpaused", + "type": "error" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "UnlockFacet__AlreadyUnlocked", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidUnlock", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unlockFee", + "type": "uint256" + } + ], + "name": "Unlocked", + "type": "event" + }, + { + "inputs": [], + "name": "COOLDOWN_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "unlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "WithdrawFacet__InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "WithdrawFacet__UnlockNotMatured", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawUnlockedVPND", + "type": "event" + }, + { + "inputs": [], + "name": "withdrawUnlocked", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/abis/AuthorizationFacet.json b/abis/AuthorizationFacet.json new file mode 100644 index 0000000..b619449 --- /dev/null +++ b/abis/AuthorizationFacet.json @@ -0,0 +1,52 @@ +[ + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "authorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "authorized", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_address", + "type": "address" + } + ], + "name": "unAuthorize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/BoostFacet.json b/abis/BoostFacet.json new file mode 100644 index 0000000..80e905a --- /dev/null +++ b/abis/BoostFacet.json @@ -0,0 +1,78 @@ +[ + { + "inputs": [], + "name": "BoostFacet__BoostAlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__InvalidBoostLevel", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "BoostFacet__UserNotParticipated", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "boostLevel", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_boostPoints", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "boostFee", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "ClaimBoost", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_boostLevel", + "type": "uint256" + } + ], + "name": "claimBoost", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/BoostFacet.sol/BoostFacet.json b/abis/BoostFacet.sol/BoostFacet.json deleted file mode 100644 index f139af4..0000000 --- a/abis/BoostFacet.sol/BoostFacet.json +++ /dev/null @@ -1,4618 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "BoostFacet__BoostAlreadyClaimed", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__InvalidBoostLevel", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__InvalidFeeReceivers", - "type": "error" - }, - { - "inputs": [], - "name": "BoostFacet__UserNotParticipated", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_boostPoints", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "boostFee", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - } - ], - "name": "ClaimBoost", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256" - } - ], - "name": "claimBoost", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b5061075c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e3660046105d9565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be9190610621565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806101066000336102d4565b60ff16915091508115801561011b5750600086115b15610152576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561016a576000868152600f602052604090205492505b426004850155600082156101985750600081815260106020908152604080832089845290915290205461019d565b50600e545b60006101aa868389610419565b9050808660030160008282546101c09190610634565b909155505060058601819055841561027e576101db856104bc565b601b546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027c9190610647565b505b604080518981526020810183905290810186905260608101849052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610669565b90508015610410576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040d9190610682565b92505b50509250929050565b60008260000361042b575060006104b5565b600082815260046020526040812060028101549091906201518090610451904290610621565b61045b91906106a5565b905080600003610470576000925050506104b5565b85546000906104809083906106e0565b876002015461048f9190610621565b9050806000036104a557600093505050506104b5565b6104af81876105b7565b93505050505b9392505050565b601180546012805490919081146104ff576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b057600061053286858481548110610522576105226106f7565b90600052602060002001546105b7565b9050806000601601600087858154811061054e5761054e6106f7565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601b54909416825292909252812080549091906105a2908490610634565b909155505050600101610502565b5050505050565b60006127106105c683856106e0565b6105d091906106a5565b90505b92915050565b6000602082840312156105eb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105d3576105d36105f2565b808201808211156105d3576105d36105f2565b60006020828403121561065957600080fd5b815180151581146104b557600080fd5b60006020828403121561067b57600080fd5b5051919050565b60006020828403121561069457600080fd5b815160ff811681146104b557600080fd5b6000826106db577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105d3576105d36105f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209e56a8d048c395d96add876936c58af7510afaba0ae1963be0d236da8ba0feec64736f6c63430008110033", - "sourceMap": "589:3628:29:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e3660046105d9565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be9190610621565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806101066000336102d4565b60ff16915091508115801561011b5750600086115b15610152576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561016a576000868152600f602052604090205492505b426004850155600082156101985750600081815260106020908152604080832089845290915290205461019d565b50600e545b60006101aa868389610419565b9050808660030160008282546101c09190610634565b909155505060058601819055841561027e576101db856104bc565b601b546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027c9190610647565b505b604080518981526020810183905290810186905260608101849052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610669565b90508015610410576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040d9190610682565b92505b50509250929050565b60008260000361042b575060006104b5565b600082815260046020526040812060028101549091906201518090610451904290610621565b61045b91906106a5565b905080600003610470576000925050506104b5565b85546000906104809083906106e0565b876002015461048f9190610621565b9050806000036104a557600093505050506104b5565b6104af81876105b7565b93505050505b9392505050565b601180546012805490919081146104ff576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b057600061053286858481548110610522576105226106f7565b90600052602060002001546105b7565b9050806000601601600087858154811061054e5761054e6106f7565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601b54909416825292909252812080549091906105a2908490610634565b909155505050600101610502565b5050505050565b60006127106105c683856106e0565b6105d091906106a5565b90505b92915050565b6000602082840312156105eb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105d3576105d36105f2565b808201808211156105d3576105d36105f2565b60006020828403121561065957600080fd5b815180151581146104b557600080fd5b60006020828403121561067b57600080fd5b5051919050565b60006020828403121561069457600080fd5b815160ff811681146104b557600080fd5b6000826106db577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105d3576105d36105f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212209e56a8d048c395d96add876936c58af7510afaba0ae1963be0d236da8ba0feec64736f6c63430008110033", - "sourceMap": "589:3628:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;960:1559;;;;;;:::i;:::-;;:::i;:::-;;;1039:17;;1019;1095:22;;;:11;:22;;;;;;;;1118:10;1095:34;;;;;;;1143:23;;1095:34;;1143:28;1139:99;;1194:33;;;;;;;;;;;;;;1139:99;1251:33;;;;:38;;;;:102;;;1347:6;1311:9;:33;;;1293:15;:51;;;;:::i;:::-;:60;1251:102;1247:173;;;1376:33;;;;;;;;;;;;;;1247:173;1429:17;1461:25;1488:12;1504:39;1529:1;1532:10;1504:24;:39::i;:::-;1460:83;;;;;;1558:20;1557:21;:39;;;;;1595:1;1582:10;:14;1557:39;1553:108;;;1619:31;;;;;;;;;;;;;;1553:108;1674:20;1670:92;;;1722:1;:29;;;:17;:29;;;;;;;-1:-1:-1;1670:92:29;1807:15;1771:33;;;:51;1832:21;1863:186;;;;-1:-1:-1;1919:1:29;:35;;;:29;:35;;;;;;;;:47;;;;;;;;;1863:186;;;-1:-1:-1;2013:25:29;;1863:186;2058:26;2087:53;2104:9;2115:13;2130:9;2087:16;:53::i;:::-;2058:82;;2175:18;2150:9;:21;;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;2203:30:29;;;:51;;;2268:13;;2264:152;;2297:25;2312:9;2297:14;:25::i;:::-;2343:10;;2336:69;;;;;2368:10;2336:69;;;914:34:59;2388:4:29;964:18:59;;;957:43;1016:18;;;1009:34;;;2343:10:29;;;;;2336:31;;826:18:59;;2336:69:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2264:152;2430:82;;;1567:25:59;;;1623:2;1608:18;;1601:34;;;1651:18;;;1644:34;;;1709:2;1694:18;;1687:34;;;2452:10:29;;2441:9;;2430:82;;1554:3:59;1539:19;2430:82:29;;;;;;;1009:1510;;;;;;;960:1559;:::o;505:419:47:-;703:21;;;;754:33;;;;;703:21;1896:55:59;;;754:33:47;;;1878:74:59;610:25:47;;;;703:21;;;610:25;;703:21;;754:23;;1851:18:59;;754:33:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;735:52;-1:-1:-1;801:12:47;;797:121;;877:30;;;;;;;;2298:25:59;;;852:4:47;;-1:-1:-1;877:20:47;;;;;;2271:18:59;;877:30:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;870:37;;797:121;649:275;;505:419;;;;;:::o;2842:723:29:-;2991:7;3014:13;3031:1;3014:18;3010:57;;-1:-1:-1;3055:1:29;3048:8;;3010:57;3077:22;3102:20;;;:9;:20;;;;;3163;;;;3102;;3077:22;3205:6;;3163:38;;3186:15;;3163:38;:::i;:::-;3162:49;;;;:::i;:::-;3132:79;;3226:19;3249:1;3226:24;3222:63;;3273:1;3266:8;;;;;;3222:63;3357:23;;3295:30;;3357:45;;3383:19;;3357:45;:::i;:::-;3329:9;:23;;;3328:75;;;;:::i;:::-;3295:108;;3418:22;3444:1;3418:27;3414:66;;3468:1;3461:8;;;;;;;3414:66;3496:62;3520:22;3544:13;3496:23;:62::i;:::-;3489:69;;;;;2842:723;;;;;;:::o;3634:581::-;3722:19;3832:17;;3779:25;3875:14;;3779:25;;3832:17;3864:25;;3860:96;;3912:33;;;;;;;;;;;;;;3860:96;3970:9;3965:244;3985:7;3981:1;:11;3965:244;;;4010:14;4027:41;4051:4;4057:7;4065:1;4057:10;;;;;;;;:::i;:::-;;;;;;;;;4027:23;:41::i;:::-;4010:58;;4133:6;4082:1;:20;;:35;4103:10;4114:1;4103:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4082:35;;;;;;;;;;;;;;;4118:10;;;;;4082:47;;;;;;;;:57;;:47;;4103:13;4082:57;;;;;:::i;:::-;;;;-1:-1:-1;;;4181:3:29;;3965:244;;;;3681:534;;;3634:581;:::o;307:146:46:-;388:7;440:6;415:21;425:11;415:7;:21;:::i;:::-;414:32;;;;:::i;:::-;407:39;;307:146;;;;;:::o;14:180:59:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:59;;14:180;-1:-1:-1;14:180:59:o;199:184::-;251:77;248:1;241:88;348:4;345:1;338:15;372:4;369:1;362:15;388:128;455:9;;;476:11;;;473:37;;;490:18;;:::i;521:125::-;586:9;;;607:10;;;604:36;;;620:18;;:::i;1054:277::-;1121:6;1174:2;1162:9;1153:7;1149:23;1145:32;1142:52;;;1190:1;1187;1180:12;1142:52;1222:9;1216:16;1275:5;1268:13;1261:21;1254:5;1251:32;1241:60;;1297:1;1294;1287:12;1963:184;2033:6;2086:2;2074:9;2065:7;2061:23;2057:32;2054:52;;;2102:1;2099;2092:12;2054:52;-1:-1:-1;2125:16:59;;1963:184;-1:-1:-1;1963:184:59:o;2334:273::-;2402:6;2455:2;2443:9;2434:7;2430:23;2426:32;2423:52;;;2471:1;2468;2461:12;2423:52;2503:9;2497:16;2553:4;2546:5;2542:16;2535:5;2532:27;2522:55;;2573:1;2570;2563:12;2612:274;2652:1;2678;2668:189;;2713:77;2710:1;2703:88;2814:4;2811:1;2804:15;2842:4;2839:1;2832:15;2668:189;-1:-1:-1;2871:9:59;;2612:274::o;2891:168::-;2964:9;;;2995;;3012:15;;;3006:22;;2992:37;2982:71;;3033:18;;:::i;3064:184::-;3116:77;3113:1;3106:88;3213:4;3210:1;3203:15;3237:4;3234:1;3227:15", - "linkReferences": {} - }, - "methodIdentifiers": { - "claimBoost(uint256)": "502d2967" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BoostFacet__BoostAlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BoostFacet__InvalidBoostLevel\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BoostFacet__InvalidFeeReceivers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BoostFacet__UserNotParticipated\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"boostLevel\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_boostPoints\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"boostFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"}],\"name\":\"ClaimBoost\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"boostLevel\",\"type\":\"uint256\"}],\"name\":\"claimBoost\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utilizes 'LDiamond', 'AppStorage'\",\"kind\":\"dev\",\"methods\":{},\"title\":\"BoostFacet\",\"version\":1},\"userdoc\":{\"events\":{\"ClaimBoost(uint256,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{\"claimBoost(uint256)\":{\"notice\":\"Claim daily boost points\"}},\"notice\":\"Facet in charge of point's boosts\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/BoostFacet.sol\":\"BoostFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/clouds/src/diamond/LDiamond.sol\":{\"keccak256\":\"0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779\",\"dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML\"]},\"lib/clouds/src/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7\",\"dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/BoostFacet.sol\":{\"keccak256\":\"0xc41622b73714f29b95d84bc9101b511d7e92f5843454f39c230687ca46931fd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3698239e0cab43341e10532cf84ae05f2bdf8f3a45bf2182f1f02232ec38947c\",\"dweb:/ipfs/QmXhWnQX8Co8K45MGkZrpGQjz3o7WgWDCUiBf6xbVmdWXN\"]},\"src/interfaces/IStratosphere.sol\":{\"keccak256\":\"0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab\",\"dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]},\"src/libraries/LPercentages.sol\":{\"keccak256\":\"0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f\",\"dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N\"]},\"src/libraries/LStratosphere.sol\":{\"keccak256\":\"0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3\",\"dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "BoostFacet__BoostAlreadyClaimed" - }, - { - "inputs": [], - "type": "error", - "name": "BoostFacet__InvalidBoostLevel" - }, - { - "inputs": [], - "type": "error", - "name": "BoostFacet__InvalidFeeReceivers" - }, - { - "inputs": [], - "type": "error", - "name": "BoostFacet__UserNotParticipated" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "_boostPoints", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "boostFee", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "tier", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "ClaimBoost", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "boostLevel", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "claimBoost" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "claimBoost(uint256)": { - "notice": "Claim daily boost points" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/BoostFacet.sol": "BoostFacet" - }, - "libraries": {} - }, - "sources": { - "lib/clouds/src/diamond/LDiamond.sol": { - "keccak256": "0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32", - "urls": [ - "bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779", - "dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML" - ], - "license": "MIT" - }, - "lib/clouds/src/interfaces/IDiamondCut.sol": { - "keccak256": "0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1", - "urls": [ - "bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7", - "dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/BoostFacet.sol": { - "keccak256": "0xc41622b73714f29b95d84bc9101b511d7e92f5843454f39c230687ca46931fd5", - "urls": [ - "bzz-raw://3698239e0cab43341e10532cf84ae05f2bdf8f3a45bf2182f1f02232ec38947c", - "dweb:/ipfs/QmXhWnQX8Co8K45MGkZrpGQjz3o7WgWDCUiBf6xbVmdWXN" - ], - "license": "MIT" - }, - "src/interfaces/IStratosphere.sol": { - "keccak256": "0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648", - "urls": [ - "bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab", - "dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - }, - "src/libraries/LPercentages.sol": { - "keccak256": "0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772", - "urls": [ - "bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f", - "dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N" - ], - "license": "MIT" - }, - "src/libraries/LStratosphere.sol": { - "keccak256": "0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1", - "urls": [ - "bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3", - "dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/BoostFacet.sol", - "id": 30720, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "BoostFacet": [ - 30719 - ], - "BoostFacet__BoostAlreadyClaimed": [ - 30385 - ], - "BoostFacet__InvalidBoostLevel": [ - 30383 - ], - "BoostFacet__InvalidFeeReceivers": [ - 30389 - ], - "BoostFacet__UserNotParticipated": [ - 30387 - ], - "IDiamondCut": [ - 892 - ], - "IERC20": [ - 30146 - ], - "IStratosphere": [ - 33656 - ], - "LDiamond": [ - 852 - ], - "LDiamond__AddressMustBeZero": [ - 4 - ], - "LDiamond__FunctionAlreadyExists": [ - 6 - ], - "LDiamond__ImmutableFunction": [ - 8 - ], - "LDiamond__IncorrectAction": [ - 10 - ], - "LDiamond__InexistentFacetCode": [ - 12 - ], - "LDiamond__InexistentFunction": [ - 14 - ], - "LDiamond__InitializationFailed": [ - 20 - ], - "LDiamond__InvalidAddressZero": [ - 22 - ], - "LDiamond__InvalidReplacementWithSameFunction": [ - 24 - ], - "LDiamond__NoSelectors": [ - 26 - ], - "LDiamond__OnlyOwner": [ - 28 - ], - "LPercentages": [ - 33886 - ], - "LStratosphere": [ - 33937 - ], - "Season": [ - 33675 - ], - "UserData": [ - 33698 - ] - }, - "nodeType": "SourceUnit", - "src": "32:4186:29", - "nodes": [ - { - "id": 30375, - "nodeType": "PragmaDirective", - "src": "32:24:29", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 30376, - "nodeType": "ImportDirective", - "src": "58:37:29", - "nodes": [], - "absolutePath": "lib/clouds/src/diamond/LDiamond.sol", - "file": "clouds/diamond/LDiamond.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 853, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30377, - "nodeType": "ImportDirective", - "src": "96:55:29", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30378, - "nodeType": "ImportDirective", - "src": "153:37:29", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30379, - "nodeType": "ImportDirective", - "src": "191:39:29", - "nodes": [], - "absolutePath": "src/libraries/LPercentages.sol", - "file": "../libraries/LPercentages.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 33887, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30380, - "nodeType": "ImportDirective", - "src": "231:41:29", - "nodes": [], - "absolutePath": "src/interfaces/IStratosphere.sol", - "file": "../interfaces/IStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 33657, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30381, - "nodeType": "ImportDirective", - "src": "273:40:29", - "nodes": [], - "absolutePath": "src/libraries/LStratosphere.sol", - "file": "../libraries/LStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 30720, - "sourceUnit": 33938, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30383, - "nodeType": "ErrorDefinition", - "src": "315:38:29", - "nodes": [], - "errorSelector": "3055f2cf", - "name": "BoostFacet__InvalidBoostLevel", - "nameLocation": "321:29:29", - "parameters": { - "id": 30382, - "nodeType": "ParameterList", - "parameters": [], - "src": "350:2:29" - } - }, - { - "id": 30385, - "nodeType": "ErrorDefinition", - "src": "354:40:29", - "nodes": [], - "errorSelector": "269eb72b", - "name": "BoostFacet__BoostAlreadyClaimed", - "nameLocation": "360:31:29", - "parameters": { - "id": 30384, - "nodeType": "ParameterList", - "parameters": [], - "src": "391:2:29" - } - }, - { - "id": 30387, - "nodeType": "ErrorDefinition", - "src": "395:40:29", - "nodes": [], - "errorSelector": "3a0d8846", - "name": "BoostFacet__UserNotParticipated", - "nameLocation": "401:31:29", - "parameters": { - "id": 30386, - "nodeType": "ParameterList", - "parameters": [], - "src": "432:2:29" - } - }, - { - "id": 30389, - "nodeType": "ErrorDefinition", - "src": "436:40:29", - "nodes": [], - "errorSelector": "44e29d88", - "name": "BoostFacet__InvalidFeeReceivers", - "nameLocation": "442:31:29", - "parameters": { - "id": 30388, - "nodeType": "ParameterList", - "parameters": [], - "src": "473:2:29" - } - }, - { - "id": 30719, - "nodeType": "ContractDefinition", - "src": "589:3628:29", - "nodes": [ - { - "id": 30405, - "nodeType": "EventDefinition", - "src": "701:193:29", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 30391, - "nodeType": "StructuredDocumentation", - "src": "616:80:29", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "d3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef", - "name": "ClaimBoost", - "nameLocation": "707:10:29", - "parameters": { - "id": 30404, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30393, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "743:8:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "727:24:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30392, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "727:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30395, - "indexed": true, - "mutability": "mutable", - "name": "user", - "nameLocation": "777:4:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "761:20:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 30394, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "761:7:29", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30397, - "indexed": false, - "mutability": "mutable", - "name": "boostLevel", - "nameLocation": "799:10:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "791:18:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30396, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "791:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30399, - "indexed": false, - "mutability": "mutable", - "name": "_boostPoints", - "nameLocation": "827:12:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "819:20:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30398, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "819:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30401, - "indexed": false, - "mutability": "mutable", - "name": "boostFee", - "nameLocation": "857:8:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "849:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30400, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "849:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30403, - "indexed": false, - "mutability": "mutable", - "name": "tier", - "nameLocation": "883:4:29", - "nodeType": "VariableDeclaration", - "scope": 30405, - "src": "875:12:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30402, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "875:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "717:176:29" - } - }, - { - "id": 30408, - "nodeType": "VariableDeclaration", - "src": "900:12:29", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "911:1:29", - "scope": 30719, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 30407, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30406, - "name": "AppStorage", - "nameLocations": [ - "900:10:29" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "900:10:29" - }, - "referencedDeclaration": 33814, - "src": "900:10:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 30574, - "nodeType": "FunctionDefinition", - "src": "960:1559:29", - "nodes": [], - "body": { - "id": 30573, - "nodeType": "Block", - "src": "1009:1510:29", - "nodes": [], - "statements": [ - { - "assignments": [ - 30415 - ], - "declarations": [ - { - "constant": false, - "id": 30415, - "mutability": "mutable", - "name": "_seasonId", - "nameLocation": "1027:9:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1019:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30414, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1019:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30418, - "initialValue": { - "expression": { - "id": 30416, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "1039:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30417, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1041:15:29", - "memberName": "currentSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33709, - "src": "1039:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1019:37:29" - }, - { - "assignments": [ - 30421 - ], - "declarations": [ - { - "constant": false, - "id": 30421, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "1083:9:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1066:26:29", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 30420, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30419, - "name": "UserData", - "nameLocations": [ - "1066:8:29" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1066:8:29" - }, - "referencedDeclaration": 33698, - "src": "1066:8:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 30429, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 30422, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "1095:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30423, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1097:9:29", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1095:11:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 30425, - "indexExpression": { - "id": 30424, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30415, - "src": "1107:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1095:22:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 30428, - "indexExpression": { - "expression": { - "id": 30426, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1118:3:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 30427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1122:6:29", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1118:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1095:34:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1066:63:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30430, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "1143:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30431, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1153:13:29", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "1143:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 30432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1170:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1143:28:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30438, - "nodeType": "IfStatement", - "src": "1139:99:29", - "trueBody": { - "id": 30437, - "nodeType": "Block", - "src": "1173:65:29", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 30434, - "name": "BoostFacet__UserNotParticipated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30387, - "src": "1194:31:29", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 30435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1194:33:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30436, - "nodeType": "RevertStatement", - "src": "1187:40:29" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 30450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30439, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "1251:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30440, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1261:23:29", - "memberName": "lastBoostClaimTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33685, - "src": "1251:33:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 30441, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1288:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1251:38:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30447, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30443, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1293:5:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 30444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1299:9:29", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1293:15:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 30445, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "1311:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30446, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1321:23:29", - "memberName": "lastBoostClaimTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33685, - "src": "1311:33:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1293:51:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "31", - "id": 30448, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1347:6:29", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "1293:60:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1251:102:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30455, - "nodeType": "IfStatement", - "src": "1247:173:29", - "trueBody": { - "id": 30454, - "nodeType": "Block", - "src": "1355:65:29", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 30451, - "name": "BoostFacet__BoostAlreadyClaimed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30385, - "src": "1376:31:29", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 30452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1376:33:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30453, - "nodeType": "RevertStatement", - "src": "1369:40:29" - } - ] - } - }, - { - "assignments": [ - 30457 - ], - "declarations": [ - { - "constant": false, - "id": 30457, - "mutability": "mutable", - "name": "_boostFee", - "nameLocation": "1437:9:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1429:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30456, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1429:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30459, - "initialValue": { - "hexValue": "30", - "id": 30458, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1449:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1429:21:29" - }, - { - "assignments": [ - 30461, - 30463 - ], - "declarations": [ - { - "constant": false, - "id": 30461, - "mutability": "mutable", - "name": "isStratosphereMember", - "nameLocation": "1466:20:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1461:25:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 30460, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1461:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30463, - "mutability": "mutable", - "name": "tier", - "nameLocation": "1496:4:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1488:12:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30462, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1488:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30470, - "initialValue": { - "arguments": [ - { - "id": 30466, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "1529:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - { - "expression": { - "id": 30467, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1532:3:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 30468, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1536:6:29", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1532:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 30464, - "name": "LStratosphere", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33937, - "src": "1504:13:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LStratosphere_$33937_$", - "typeString": "type(library LStratosphere)" - } - }, - "id": 30465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1518:10:29", - "memberName": "getDetails", - "nodeType": "MemberAccess", - "referencedDeclaration": 33936, - "src": "1504:24:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_AppStorage_$33814_storage_ptr_$_t_address_$returns$_t_bool_$_t_uint8_$", - "typeString": "function (struct AppStorage storage pointer,address) view returns (bool,uint8)" - } - }, - "id": 30469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1504:39:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint8_$", - "typeString": "tuple(bool,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1460:83:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 30476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1557:21:29", - "subExpression": { - "id": 30471, - "name": "isStratosphereMember", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30461, - "src": "1558:20:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30473, - "name": "boostLevel", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30411, - "src": "1582:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 30474, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1595:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1582:14:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1557:39:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30481, - "nodeType": "IfStatement", - "src": "1553:108:29", - "trueBody": { - "id": 30480, - "nodeType": "Block", - "src": "1598:63:29", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 30477, - "name": "BoostFacet__InvalidBoostLevel", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30383, - "src": "1619:29:29", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 30478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1619:31:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30479, - "nodeType": "RevertStatement", - "src": "1612:38:29" - } - ] - } - }, - { - "condition": { - "id": 30482, - "name": "isStratosphereMember", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30461, - "src": "1674:20:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30491, - "nodeType": "IfStatement", - "src": "1670:92:29", - "trueBody": { - "id": 30490, - "nodeType": "Block", - "src": "1696:66:29", - "statements": [ - { - "expression": { - "id": 30488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 30483, - "name": "_boostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30457, - "src": "1710:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "expression": { - "id": 30484, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "1722:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30485, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1724:15:29", - "memberName": "boostLevelToFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 33759, - "src": "1722:17:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 30487, - "indexExpression": { - "id": 30486, - "name": "boostLevel", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30411, - "src": "1740:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1722:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1710:41:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30489, - "nodeType": "ExpressionStatement", - "src": "1710:41:29" - } - ] - } - }, - { - "expression": { - "id": 30497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30492, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "1771:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30494, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1781:23:29", - "memberName": "lastBoostClaimTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33685, - "src": "1771:33:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 30495, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1807:5:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 30496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1813:9:29", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1807:15:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1771:51:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30498, - "nodeType": "ExpressionStatement", - "src": "1771:51:29" - }, - { - "assignments": [ - 30500 - ], - "declarations": [ - { - "constant": false, - "id": 30500, - "mutability": "mutable", - "name": "_boostPercent", - "nameLocation": "1840:13:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "1832:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1832:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30501, - "nodeType": "VariableDeclarationStatement", - "src": "1832:21:29" - }, - { - "condition": { - "id": 30502, - "name": "isStratosphereMember", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30461, - "src": "1867:20:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 30518, - "nodeType": "Block", - "src": "1983:66:29", - "statements": [ - { - "expression": { - "id": 30516, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 30513, - "name": "_boostPercent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30500, - "src": "1997:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 30514, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "2013:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30515, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2015:23:29", - "memberName": "boostForNonStratMembers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33755, - "src": "2013:25:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1997:41:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30517, - "nodeType": "ExpressionStatement", - "src": "1997:41:29" - } - ] - }, - "id": 30519, - "nodeType": "IfStatement", - "src": "1863:186:29", - "trueBody": { - "id": 30512, - "nodeType": "Block", - "src": "1889:88:29", - "statements": [ - { - "expression": { - "id": 30510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 30503, - "name": "_boostPercent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30500, - "src": "1903:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 30504, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "1919:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30505, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1921:27:29", - "memberName": "boostPercentFromTierToLevel", - "nodeType": "MemberAccess", - "referencedDeclaration": 33765, - "src": "1919:29:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$", - "typeString": "mapping(uint256 => mapping(uint256 => uint256))" - } - }, - "id": 30507, - "indexExpression": { - "id": 30506, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30463, - "src": "1949:4:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1919:35:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 30509, - "indexExpression": { - "id": 30508, - "name": "boostLevel", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30411, - "src": "1955:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1919:47:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1903:63:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30511, - "nodeType": "ExpressionStatement", - "src": "1903:63:29" - } - ] - } - }, - { - "assignments": [ - 30521 - ], - "declarations": [ - { - "constant": false, - "id": 30521, - "mutability": "mutable", - "name": "_boostPointsAmount", - "nameLocation": "2066:18:29", - "nodeType": "VariableDeclaration", - "scope": 30573, - "src": "2058:26:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30520, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2058:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30527, - "initialValue": { - "arguments": [ - { - "id": 30523, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "2104:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - { - "id": 30524, - "name": "_boostPercent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30500, - "src": "2115:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30525, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30415, - "src": "2130:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 30522, - "name": "_calculatePoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30646, - "src": "2087:16:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_UserData_$33698_storage_ptr_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (struct UserData storage pointer,uint256,uint256) view returns (uint256)" - } - }, - "id": 30526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2087:53:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2058:82:29" - }, - { - "expression": { - "id": 30532, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30528, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "2150:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30530, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2160:11:29", - "memberName": "boostPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33683, - "src": "2150:21:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 30531, - "name": "_boostPointsAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30521, - "src": "2175:18:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2150:43:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30533, - "nodeType": "ExpressionStatement", - "src": "2150:43:29" - }, - { - "expression": { - "id": 30538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30534, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30421, - "src": "2203:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30536, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2213:20:29", - "memberName": "lastBoostClaimAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33687, - "src": "2203:30:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 30537, - "name": "_boostPointsAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30521, - "src": "2236:18:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2203:51:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30539, - "nodeType": "ExpressionStatement", - "src": "2203:51:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30540, - "name": "_boostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30457, - "src": "2268:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 30541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2280:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2268:13:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30562, - "nodeType": "IfStatement", - "src": "2264:152:29", - "trueBody": { - "id": 30561, - "nodeType": "Block", - "src": "2283:133:29", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 30544, - "name": "_boostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30457, - "src": "2312:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 30543, - "name": "_applyBoostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30718, - "src": "2297:14:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 30545, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2297:25:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30546, - "nodeType": "ExpressionStatement", - "src": "2297:25:29" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 30552, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2368:3:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 30553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2372:6:29", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2368:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 30556, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2388:4:29", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BoostFacet_$30719", - "typeString": "contract BoostFacet" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_BoostFacet_$30719", - "typeString": "contract BoostFacet" - } - ], - "id": 30555, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2380:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 30554, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2380:7:29", - "typeDescriptions": {} - } - }, - "id": 30557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2380:13:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 30558, - "name": "_boostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30457, - "src": "2395:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 30548, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "2343:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30549, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2345:8:29", - "memberName": "feeToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33807, - "src": "2343:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 30547, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "2336:6:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 30550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2336:18:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 30551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2355:12:29", - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 30145, - "src": "2336:31:29", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } - }, - "id": 30559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2336:69:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30560, - "nodeType": "ExpressionStatement", - "src": "2336:69:29" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "id": 30564, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30415, - "src": "2441:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 30565, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2452:3:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 30566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2456:6:29", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2452:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 30567, - "name": "boostLevel", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30411, - "src": "2464:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30568, - "name": "_boostPointsAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30521, - "src": "2476:18:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30569, - "name": "_boostFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30457, - "src": "2496:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30570, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30463, - "src": "2507:4:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 30563, - "name": "ClaimBoost", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30405, - "src": "2430:10:29", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256,uint256,uint256,uint256)" - } - }, - "id": 30571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2430:82:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30572, - "nodeType": "EmitStatement", - "src": "2425:87:29" - } - ] - }, - "documentation": { - "id": 30409, - "nodeType": "StructuredDocumentation", - "src": "919:36:29", - "text": "@notice Claim daily boost points" - }, - "functionSelector": "502d2967", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "claimBoost", - "nameLocation": "969:10:29", - "parameters": { - "id": 30412, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30411, - "mutability": "mutable", - "name": "boostLevel", - "nameLocation": "988:10:29", - "nodeType": "VariableDeclaration", - "scope": 30574, - "src": "980:18:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30410, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "980:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "979:20:29" - }, - "returnParameters": { - "id": 30413, - "nodeType": "ParameterList", - "parameters": [], - "src": "1009:0:29" - }, - "scope": 30719, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 30646, - "nodeType": "FunctionDefinition", - "src": "2842:723:29", - "nodes": [], - "body": { - "id": 30645, - "nodeType": "Block", - "src": "3000:565:29", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30587, - "name": "_boostPercent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30580, - "src": "3014:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 30588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3031:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3014:18:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30593, - "nodeType": "IfStatement", - "src": "3010:57:29", - "trueBody": { - "id": 30592, - "nodeType": "Block", - "src": "3034:33:29", - "statements": [ - { - "expression": { - "hexValue": "30", - "id": 30590, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3055:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 30586, - "id": 30591, - "nodeType": "Return", - "src": "3048:8:29" - } - ] - } - }, - { - "assignments": [ - 30596 - ], - "declarations": [ - { - "constant": false, - "id": 30596, - "mutability": "mutable", - "name": "_season", - "nameLocation": "3092:7:29", - "nodeType": "VariableDeclaration", - "scope": 30645, - "src": "3077:22:29", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 30595, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30594, - "name": "Season", - "nameLocations": [ - "3077:6:29" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "3077:6:29" - }, - "referencedDeclaration": 33675, - "src": "3077:6:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "id": 30601, - "initialValue": { - "baseExpression": { - "expression": { - "id": 30597, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "3102:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30598, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3104:7:29", - "memberName": "seasons", - "nodeType": "MemberAccess", - "referencedDeclaration": 33716, - "src": "3102:9:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Season_$33675_storage_$", - "typeString": "mapping(uint256 => struct Season storage ref)" - } - }, - "id": 30600, - "indexExpression": { - "id": 30599, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30582, - "src": "3112:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3102:20:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage", - "typeString": "struct Season storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3077:45:29" - }, - { - "assignments": [ - 30603 - ], - "declarations": [ - { - "constant": false, - "id": 30603, - "mutability": "mutable", - "name": "_daysUntilSeasonEnd", - "nameLocation": "3140:19:29", - "nodeType": "VariableDeclaration", - "scope": 30645, - "src": "3132:27:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30602, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3132:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30612, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30604, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30596, - "src": "3163:7:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30605, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3171:12:29", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "3163:20:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 30606, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3186:5:29", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 30607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3192:9:29", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "3186:15:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3163:38:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 30609, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3162:40:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "31", - "id": 30610, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3205:6:29", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "3162:49:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3132:79:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30613, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30603, - "src": "3226:19:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 30614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3249:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3226:24:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30619, - "nodeType": "IfStatement", - "src": "3222:63:29", - "trueBody": { - "id": 30618, - "nodeType": "Block", - "src": "3252:33:29", - "statements": [ - { - "expression": { - "hexValue": "30", - "id": 30616, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3273:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 30586, - "id": 30617, - "nodeType": "Return", - "src": "3266:8:29" - } - ] - } - }, - { - "assignments": [ - 30621 - ], - "declarations": [ - { - "constant": false, - "id": 30621, - "mutability": "mutable", - "name": "_pointsObtainedTillNow", - "nameLocation": "3303:22:29", - "nodeType": "VariableDeclaration", - "scope": 30645, - "src": "3295:30:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3295:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30631, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "expression": { - "id": 30622, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30578, - "src": "3329:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30623, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3339:13:29", - "memberName": "depositPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33681, - "src": "3329:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 30624, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3328:25:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30625, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30578, - "src": "3357:9:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30626, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3367:13:29", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "3357:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 30627, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30603, - "src": "3383:19:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3357:45:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 30629, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3356:47:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3328:75:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3295:108:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30632, - "name": "_pointsObtainedTillNow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30621, - "src": "3418:22:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 30633, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3444:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3418:27:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30638, - "nodeType": "IfStatement", - "src": "3414:66:29", - "trueBody": { - "id": 30637, - "nodeType": "Block", - "src": "3447:33:29", - "statements": [ - { - "expression": { - "hexValue": "30", - "id": 30635, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3468:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 30586, - "id": 30636, - "nodeType": "Return", - "src": "3461:8:29" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 30641, - "name": "_pointsObtainedTillNow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30621, - "src": "3520:22:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30642, - "name": "_boostPercent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30580, - "src": "3544:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 30639, - "name": "LPercentages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33886, - "src": "3496:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LPercentages_$33886_$", - "typeString": "type(library LPercentages)" - } - }, - "id": 30640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3509:10:29", - "memberName": "percentage", - "nodeType": "MemberAccess", - "referencedDeclaration": 33885, - "src": "3496:23:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 30643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3496:62:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 30586, - "id": 30644, - "nodeType": "Return", - "src": "3489:69:29" - } - ] - }, - "documentation": { - "id": 30575, - "nodeType": "StructuredDocumentation", - "src": "2525:312:29", - "text": "@notice Calculate boost points\n @param _userData User data\n @param _boostPercent % to boost points\n @param _seasonId current seasonId\n @return Boost points\n @dev Utilizes 'LPercentages'.\n @dev _daysSinceSeasonStart starts from 0 equal to the first day of the season." - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_calculatePoints", - "nameLocation": "2851:16:29", - "parameters": { - "id": 30583, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30578, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "2894:9:29", - "nodeType": "VariableDeclaration", - "scope": 30646, - "src": "2877:26:29", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 30577, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30576, - "name": "UserData", - "nameLocations": [ - "2877:8:29" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "2877:8:29" - }, - "referencedDeclaration": 33698, - "src": "2877:8:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30580, - "mutability": "mutable", - "name": "_boostPercent", - "nameLocation": "2921:13:29", - "nodeType": "VariableDeclaration", - "scope": 30646, - "src": "2913:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30579, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2913:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30582, - "mutability": "mutable", - "name": "_seasonId", - "nameLocation": "2952:9:29", - "nodeType": "VariableDeclaration", - "scope": 30646, - "src": "2944:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30581, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2944:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2867:100:29" - }, - "returnParameters": { - "id": 30586, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30585, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 30646, - "src": "2991:7:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30584, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2991:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2990:9:29" - }, - "scope": 30719, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 30718, - "nodeType": "FunctionDefinition", - "src": "3634:581:29", - "nodes": [], - "body": { - "id": 30717, - "nodeType": "Block", - "src": "3681:534:29", - "nodes": [], - "statements": [ - { - "assignments": [ - 30656 - ], - "declarations": [ - { - "constant": false, - "id": 30656, - "mutability": "mutable", - "name": "_receivers", - "nameLocation": "3709:10:29", - "nodeType": "VariableDeclaration", - "scope": 30717, - "src": "3691:28:29", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 30654, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3691:7:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 30655, - "nodeType": "ArrayTypeName", - "src": "3691:9:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - } - ], - "id": 30659, - "initialValue": { - "expression": { - "id": 30657, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "3722:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30658, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3724:17:29", - "memberName": "boostFeeReceivers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33768, - "src": "3722:19:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3691:50:29" - }, - { - "assignments": [ - 30664 - ], - "declarations": [ - { - "constant": false, - "id": 30664, - "mutability": "mutable", - "name": "_shares", - "nameLocation": "3769:7:29", - "nodeType": "VariableDeclaration", - "scope": 30717, - "src": "3751:25:29", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 30662, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3751:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30663, - "nodeType": "ArrayTypeName", - "src": "3751:9:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "visibility": "internal" - } - ], - "id": 30667, - "initialValue": { - "expression": { - "id": 30665, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "3779:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30666, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3781:23:29", - "memberName": "boostFeeReceiversShares", - "nodeType": "MemberAccess", - "referencedDeclaration": 33771, - "src": "3779:25:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage", - "typeString": "uint256[] storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3751:53:29" - }, - { - "assignments": [ - 30669 - ], - "declarations": [ - { - "constant": false, - "id": 30669, - "mutability": "mutable", - "name": "_length", - "nameLocation": "3822:7:29", - "nodeType": "VariableDeclaration", - "scope": 30717, - "src": "3814:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30668, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3814:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30672, - "initialValue": { - "expression": { - "id": 30670, - "name": "_receivers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30656, - "src": "3832:10:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "id": 30671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3843:6:29", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3832:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3814:35:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30673, - "name": "_length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30669, - "src": "3864:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 30674, - "name": "_shares", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30664, - "src": "3875:7:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "id": 30675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3883:6:29", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3875:14:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3864:25:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30681, - "nodeType": "IfStatement", - "src": "3860:96:29", - "trueBody": { - "id": 30680, - "nodeType": "Block", - "src": "3891:65:29", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 30677, - "name": "BoostFacet__InvalidFeeReceivers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30389, - "src": "3912:31:29", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 30678, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3912:33:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30679, - "nodeType": "RevertStatement", - "src": "3905:40:29" - } - ] - } - }, - { - "body": { - "id": 30715, - "nodeType": "Block", - "src": "3996:213:29", - "statements": [ - { - "assignments": [ - 30689 - ], - "declarations": [ - { - "constant": false, - "id": 30689, - "mutability": "mutable", - "name": "_share", - "nameLocation": "4018:6:29", - "nodeType": "VariableDeclaration", - "scope": 30715, - "src": "4010:14:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30688, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4010:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30697, - "initialValue": { - "arguments": [ - { - "id": 30692, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30649, - "src": "4051:4:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "id": 30693, - "name": "_shares", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30664, - "src": "4057:7:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "id": 30695, - "indexExpression": { - "id": 30694, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30683, - "src": "4065:1:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4057:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 30690, - "name": "LPercentages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33886, - "src": "4027:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LPercentages_$33886_$", - "typeString": "type(library LPercentages)" - } - }, - "id": 30691, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4040:10:29", - "memberName": "percentage", - "nodeType": "MemberAccess", - "referencedDeclaration": 33885, - "src": "4027:23:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 30696, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "4027:41:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4010:58:29" - }, - { - "expression": { - "id": 30709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 30698, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "4082:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30705, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4084:18:29", - "memberName": "pendingWithdrawals", - "nodeType": "MemberAccess", - "referencedDeclaration": 33791, - "src": "4082:20:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 30706, - "indexExpression": { - "baseExpression": { - "id": 30700, - "name": "_receivers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30656, - "src": "4103:10:29", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "id": 30702, - "indexExpression": { - "id": 30701, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30683, - "src": "4114:1:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4103:13:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4082:35:29", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 30707, - "indexExpression": { - "expression": { - "id": 30703, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30408, - "src": "4118:1:29", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30704, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "4120:8:29", - "memberName": "feeToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33807, - "src": "4118:10:29", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4082:47:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 30708, - "name": "_share", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30689, - "src": "4133:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4082:57:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30710, - "nodeType": "ExpressionStatement", - "src": "4082:57:29" - }, - { - "id": 30714, - "nodeType": "UncheckedBlock", - "src": "4153:46:29", - "statements": [ - { - "expression": { - "id": 30712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4181:3:29", - "subExpression": { - "id": 30711, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30683, - "src": "4181:1:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30713, - "nodeType": "ExpressionStatement", - "src": "4181:3:29" - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30687, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30685, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30683, - "src": "3981:1:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 30686, - "name": "_length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30669, - "src": "3985:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3981:11:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30716, - "initializationExpression": { - "assignments": [ - 30683 - ], - "declarations": [ - { - "constant": false, - "id": 30683, - "mutability": "mutable", - "name": "i", - "nameLocation": "3978:1:29", - "nodeType": "VariableDeclaration", - "scope": 30716, - "src": "3970:9:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30682, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3970:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30684, - "nodeType": "VariableDeclarationStatement", - "src": "3970:9:29" - }, - "nodeType": "ForStatement", - "src": "3965:244:29" - } - ] - }, - "documentation": { - "id": 30647, - "nodeType": "StructuredDocumentation", - "src": "3571:58:29", - "text": "@notice Apply boost fee\n @param _fee Fee amount" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_applyBoostFee", - "nameLocation": "3643:14:29", - "parameters": { - "id": 30650, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30649, - "mutability": "mutable", - "name": "_fee", - "nameLocation": "3666:4:29", - "nodeType": "VariableDeclaration", - "scope": 30718, - "src": "3658:12:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30648, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3658:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3657:14:29" - }, - "returnParameters": { - "id": 30651, - "nodeType": "ParameterList", - "parameters": [], - "src": "3681:0:29" - }, - "scope": 30719, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "BoostFacet", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 30390, - "nodeType": "StructuredDocumentation", - "src": "478:111:29", - "text": "@title BoostFacet\n @notice Facet in charge of point's boosts\n @dev Utilizes 'LDiamond', 'AppStorage'" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 30719 - ], - "name": "BoostFacet", - "nameLocation": "598:10:29", - "scope": 30720, - "usedErrors": [ - 30383, - 30385, - 30387, - 30389 - ] - } - ], - "license": "MIT" - }, - "id": 29 -} \ No newline at end of file diff --git a/abis/ClaimFacet.json b/abis/ClaimFacet.json new file mode 100644 index 0000000..630fcd2 --- /dev/null +++ b/abis/ClaimFacet.json @@ -0,0 +1,89 @@ +[ + { + "inputs": [], + "name": "ClaimFacet__AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimFacet__InProgressSeason", + "type": "error" + }, + { + "inputs": [], + "name": "ClaimFacet__NotEnoughPoints", + "type": "error" + }, + { + "inputs": [], + "name": "LAuthorizable__OnlyAuthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardsAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "automatedClaim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "_users", + "type": "address[]" + } + ], + "name": "automatedClaimBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/ClaimFacet.sol/ClaimFacet.json b/abis/ClaimFacet.sol/ClaimFacet.json deleted file mode 100644 index 7afe23c..0000000 --- a/abis/ClaimFacet.sol/ClaimFacet.json +++ /dev/null @@ -1,3506 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "ClaimFacet__InProgressSeason", - "type": "error" - }, - { - "inputs": [], - "name": "LAuthorizable__OnlyAuthorized", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "rewardsAmount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "depositAmount", - "type": "uint256" - } - ], - "name": "Claim", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_seasonId", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "_users", - "type": "address[]" - } - ], - "name": "automatedClaim", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506106c6806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806380b970de14610030575b600080fd5b61004361003e3660046104a9565b610045565b005b610050600033610391565b60008281526004602052604090206002810154421161009b576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561038a5760008482815181106100bc576100bc610598565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361011757505050506100a0565b60088301541561012a57505050506100a0565b600083600301548361013c91906105f6565b9050600061014a828a6103f4565b90506000610158828b610425565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906101b5908490610609565b92505081905550808a60060160008282546101d091906105f6565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610272919061061c565b5085546000906102839086906105f6565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156102fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610322919061061c565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506100a0945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff166103f0576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161041086670de0b6b3a764000061063e565b61041a9190610655565b925050505b92915050565b6000670de0b6b3a7640000838360030154610440919061063e565b61044a9190610655565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146104a457600080fd5b919050565b600080604083850312156104bc57600080fd5b8235915060208084013567ffffffffffffffff808211156104dc57600080fd5b818601915086601f8301126104f057600080fd5b81358181111561050257610502610451565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561054557610545610451565b60405291825284820192508381018501918983111561056357600080fd5b938501935b828510156105885761057985610480565b84529385019392850192610568565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561041f5761041f6105c7565b8181038181111561041f5761041f6105c7565b60006020828403121561062e57600080fd5b8151801515811461044a57600080fd5b808202811582820484141761041f5761041f6105c7565b60008261068b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212204bbf423271eeba639efd7f00bb38c9204b98b6eeab4c09db4a847450da17ec5664736f6c63430008110033", - "sourceMap": "547:3093:30:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806380b970de14610030575b600080fd5b61004361003e3660046104a9565b610045565b005b610050600033610391565b60008281526004602052604090206002810154421161009b576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561038a5760008482815181106100bc576100bc610598565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff8416835290935291822060028101546006820154929450909290919082900361011757505050506100a0565b60088301541561012a57505050506100a0565b600083600301548361013c91906105f6565b9050600061014a828a6103f4565b90506000610158828b610425565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c01805492935083929091906101b5908490610609565b92505081905550808a60060160008282546101d091906105f6565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af115801561024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610272919061061c565b5085546000906102839086906105f6565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156102fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610322919061061c565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a35050600190960195506100a0945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff166103f0576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161041086670de0b6b3a764000061063e565b61041a9190610655565b925050505b92915050565b6000670de0b6b3a7640000838360030154610440919061063e565b61044a9190610655565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146104a457600080fd5b919050565b600080604083850312156104bc57600080fd5b8235915060208084013567ffffffffffffffff808211156104dc57600080fd5b818601915086601f8301126104f057600080fd5b81358181111561050257610502610451565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f8301168101818110858211171561054557610545610451565b60405291825284820192508381018501918983111561056357600080fd5b938501935b828510156105885761057985610480565b84529385019392850192610568565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561041f5761041f6105c7565b8181038181111561041f5761041f6105c7565b60006020828403121561062e57600080fd5b8151801515811461044a57600080fd5b808202811582820484141761041f5761041f6105c7565b60008261068b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212204bbf423271eeba639efd7f00bb38c9204b98b6eeab4c09db4a847450da17ec5664736f6c63430008110033", - "sourceMap": "547:3093:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1109:1836;;;;;;:::i;:::-;;:::i;:::-;;;1196:48;1230:1;1233:10;1196:33;:48::i;:::-;1255:21;1279:20;;;:9;:20;;;;;1361:19;;;;1384:15;-1:-1:-1;1357:106:30;;1422:30;;;;;;;;;;;;;;1357:106;1491:13;;1473:15;1514:1425;1534:7;1530:1;:11;1514:1425;;;1559:12;1574:6;1581:1;1574:9;;;;;;;;:::i;:::-;;;;;;;;;;;;1597:25;1625:22;;;:11;:22;;;;;;:28;;;;;;;;;;;1692:22;;;;1752:21;;;;1574:9;;-1:-1:-1;1625:28:30;;1692:22;;1752:21;1856:19;;;1852:66;;1895:8;;;;1514:1425;;1852:66;1984:22;;;;:26;1980:73;;2030:8;;;;1514:1425;;1980:73;2067:19;2106:8;:20;;;2089:14;:37;;;;:::i;:::-;2067:59;;2140:17;2160:36;2176:11;2189:6;2160:15;:36::i;:::-;2140:56;;2211:24;2238:36;2256:9;2267:6;2238:17;:36::i;:::-;2289:22;;;:41;;;2344:31;;;:38;;;;2378:4;2344:38;;;:31;2396:21;;;:25;;;2435:24;;;:28;;;-1:-1:-1;2477:25:30;;:45;;2211:63;;-1:-1:-1;2211:63:30;;2477:25;;2344:31;2477:45;;2211:63;;2477:45;:::i;:::-;;;;;;;;2563:16;2536:6;:23;;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;2601:13:30;;2594:54;;;;;2601:13;2490:55:59;;;2594:54:30;;;2472:74:59;2562:18;;;2555:34;;;2601:13:30;;;;2594:30;;2445:18:59;;2594:54:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2687:22:30;;2662;;2687:38;;2712:13;;2687:38;:::i;:::-;2746:14;;2739:53;;;;;2746:14;2490:55:59;;;2739:53:30;;;2472:74:59;2562:18;;;2555:34;;;2662:63:30;;-1:-1:-1;2746:14:30;;;2739:31;;2445:18:59;;2739:53:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2812:56:30;;;3056:25:59;;;3112:2;3097:18;;3090:34;;;2812:56:30;;;;2818:9;;2812:56;;3029:18:59;2812:56:30;;;;;;;-1:-1:-1;;2911:3:30;;;;;-1:-1:-1;1514:1425:30;;-1:-1:-1;;;;;1514:1425:30;;;1186:1759;;1109:1836;;:::o;370:167:44:-;468:22;;;:12;:22;;;;;;;;;;;;;463:67;;499:31;;;;;;;;;;;;;;463:67;370:167;;:::o;3112:262:30:-;3252:18;;;;3205:7;;;3252:18;3301:19;:12;3316:4;3301:19;:::i;:::-;3300:41;;;;:::i;:::-;3280:61;-1:-1:-1;;;3112:262:30;;;;;:::o;3459:179::-;3552:7;3627:4;3613:10;3579:6;:31;;;:44;;;;:::i;:::-;3578:53;;;;:::i;:::-;3571:60;3459:179;-1:-1:-1;;;3459:179:30:o;14:184:59:-;66:77;63:1;56:88;163:4;160:1;153:15;187:4;184:1;177:15;203:196;271:20;;331:42;320:54;;310:65;;300:93;;389:1;386;379:12;300:93;203:196;;;:::o;404:1248::-;497:6;505;558:2;546:9;537:7;533:23;529:32;526:52;;;574:1;571;564:12;526:52;610:9;597:23;587:33;;639:2;692;681:9;677:18;664:32;715:18;756:2;748:6;745:14;742:34;;;772:1;769;762:12;742:34;810:6;799:9;795:22;785:32;;855:7;848:4;844:2;840:13;836:27;826:55;;877:1;874;867:12;826:55;913:2;900:16;935:2;931;928:10;925:36;;;941:18;;:::i;:::-;987:2;984:1;980:10;1019:2;1013:9;1078:66;1073:2;1069;1065:11;1061:84;1053:6;1049:97;1196:6;1184:10;1181:22;1176:2;1164:10;1161:18;1158:46;1155:72;;;1207:18;;:::i;:::-;1243:2;1236:22;1293:18;;;1327:15;;;;-1:-1:-1;1369:11:59;;;1365:20;;;1397:19;;;1394:39;;;1429:1;1426;1419:12;1394:39;1453:11;;;;1473:148;1489:6;1484:3;1481:15;1473:148;;;1555:23;1574:3;1555:23;:::i;:::-;1543:36;;1506:12;;;;1599;;;;1473:148;;;1640:6;1630:16;;;;;;;;404:1248;;;;;:::o;1657:184::-;1709:77;1706:1;1699:88;1806:4;1803:1;1796:15;1830:4;1827:1;1820:15;1846:184;1898:77;1895:1;1888:88;1995:4;1992:1;1985:15;2019:4;2016:1;2009:15;2035:125;2100:9;;;2121:10;;;2118:36;;;2134:18;;:::i;2165:128::-;2232:9;;;2253:11;;;2250:37;;;2267:18;;:::i;2600:277::-;2667:6;2720:2;2708:9;2699:7;2695:23;2691:32;2688:52;;;2736:1;2733;2726:12;2688:52;2768:9;2762:16;2821:5;2814:13;2807:21;2800:5;2797:32;2787:60;;2843:1;2840;2833:12;3135:168;3208:9;;;3239;;3256:15;;;3250:22;;3236:37;3226:71;;3277:18;;:::i;3308:274::-;3348:1;3374;3364:189;;3409:77;3406:1;3399:88;3510:4;3507:1;3500:15;3538:4;3535:1;3528:15;3364:189;-1:-1:-1;3567:9:59;;3308:274::o", - "linkReferences": {} - }, - "methodIdentifiers": { - "automatedClaim(uint256,address[])": "80b970de" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ClaimFacet__InProgressSeason\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LAuthorizable__OnlyAuthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewardsAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositAmount\",\"type\":\"uint256\"}],\"name\":\"Claim\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_seasonId\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_users\",\"type\":\"address[]\"}],\"name\":\"automatedClaim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utilizes 'LDiamond' and 'AppStorage'\",\"kind\":\"dev\",\"methods\":{\"automatedClaim(uint256,address[])\":{\"params\":{\"_seasonId\":\"The season ID\",\"_users\":\"The users to claim for\"}}},\"title\":\"ClaimFacet\",\"version\":1},\"userdoc\":{\"events\":{\"Claim(uint256,address,uint256,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{\"automatedClaim(uint256,address[])\":{\"notice\":\"Claim accrued VAPE rewards during the current season and withdraw unlocked VPND\"}},\"notice\":\"Facet in charge of claiming VAPE rewards\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/ClaimFacet.sol\":\"ClaimFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/clouds/src/diamond/LDiamond.sol\":{\"keccak256\":\"0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779\",\"dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML\"]},\"lib/clouds/src/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7\",\"dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/ClaimFacet.sol\":{\"keccak256\":\"0xf3a180c19cbf8cbb588c6ff9c9e3f21f7c0c1fb09b298408a444cb8225b98d05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d8b870169a5dca7271034ff417d82c87a1bf3cba22ff2426deb7428a457e837\",\"dweb:/ipfs/QmQ1UEQSEWd1bGjUy7XKdeM6VPiuD85guW8woYAdr44wRY\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]},\"src/libraries/LAuthorizable.sol\":{\"keccak256\":\"0x3d1424c49022ae7dc023080f115559c5a6076d60eeded20895bf98c3626538b1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d9e3a61f7e3c1c3997b88c355a86c1144262a79df2cafe51dd02cda07d55c55\",\"dweb:/ipfs/QmYfDFbX26gPZQHXPb6dWscUxpWjVGeRT4629nEKBKVCQt\"]},\"src/libraries/LPercentages.sol\":{\"keccak256\":\"0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f\",\"dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "ClaimFacet__InProgressSeason" - }, - { - "inputs": [], - "type": "error", - "name": "LAuthorizable__OnlyAuthorized" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "rewardsAmount", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "depositAmount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Claim", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_seasonId", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "_users", - "type": "address[]" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "automatedClaim" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "automatedClaim(uint256,address[])": { - "params": { - "_seasonId": "The season ID", - "_users": "The users to claim for" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "automatedClaim(uint256,address[])": { - "notice": "Claim accrued VAPE rewards during the current season and withdraw unlocked VPND" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/ClaimFacet.sol": "ClaimFacet" - }, - "libraries": {} - }, - "sources": { - "lib/clouds/src/diamond/LDiamond.sol": { - "keccak256": "0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32", - "urls": [ - "bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779", - "dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML" - ], - "license": "MIT" - }, - "lib/clouds/src/interfaces/IDiamondCut.sol": { - "keccak256": "0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1", - "urls": [ - "bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7", - "dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/ClaimFacet.sol": { - "keccak256": "0xf3a180c19cbf8cbb588c6ff9c9e3f21f7c0c1fb09b298408a444cb8225b98d05", - "urls": [ - "bzz-raw://9d8b870169a5dca7271034ff417d82c87a1bf3cba22ff2426deb7428a457e837", - "dweb:/ipfs/QmQ1UEQSEWd1bGjUy7XKdeM6VPiuD85guW8woYAdr44wRY" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - }, - "src/libraries/LAuthorizable.sol": { - "keccak256": "0x3d1424c49022ae7dc023080f115559c5a6076d60eeded20895bf98c3626538b1", - "urls": [ - "bzz-raw://0d9e3a61f7e3c1c3997b88c355a86c1144262a79df2cafe51dd02cda07d55c55", - "dweb:/ipfs/QmYfDFbX26gPZQHXPb6dWscUxpWjVGeRT4629nEKBKVCQt" - ], - "license": "MIT" - }, - "src/libraries/LPercentages.sol": { - "keccak256": "0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772", - "urls": [ - "bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f", - "dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/ClaimFacet.sol", - "id": 30980, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "ClaimFacet": [ - 30979 - ], - "ClaimFacet__AlreadyClaimed": [ - 30732 - ], - "ClaimFacet__InProgressSeason": [ - 30730 - ], - "ClaimFacet__InvalidFeeReceivers": [ - 30734 - ], - "ClaimFacet__NotEnoughPoints": [ - 30728 - ], - "IDiamondCut": [ - 892 - ], - "IERC20": [ - 30146 - ], - "LAuthorizable": [ - 33840 - ], - "LAuthorizable__OnlyAuthorized": [ - 33819 - ], - "LDiamond": [ - 852 - ], - "LDiamond__AddressMustBeZero": [ - 4 - ], - "LDiamond__FunctionAlreadyExists": [ - 6 - ], - "LDiamond__ImmutableFunction": [ - 8 - ], - "LDiamond__IncorrectAction": [ - 10 - ], - "LDiamond__InexistentFacetCode": [ - 12 - ], - "LDiamond__InexistentFunction": [ - 14 - ], - "LDiamond__InitializationFailed": [ - 20 - ], - "LDiamond__InvalidAddressZero": [ - 22 - ], - "LDiamond__InvalidReplacementWithSameFunction": [ - 24 - ], - "LDiamond__NoSelectors": [ - 26 - ], - "LDiamond__OnlyOwner": [ - 28 - ], - "LPercentages": [ - 33886 - ], - "Season": [ - 33675 - ], - "UserData": [ - 33698 - ] - }, - "nodeType": "SourceUnit", - "src": "32:3609:30", - "nodes": [ - { - "id": 30721, - "nodeType": "PragmaDirective", - "src": "32:24:30", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 30722, - "nodeType": "ImportDirective", - "src": "58:37:30", - "nodes": [], - "absolutePath": "lib/clouds/src/diamond/LDiamond.sol", - "file": "clouds/diamond/LDiamond.sol", - "nameLocation": "-1:-1:-1", - "scope": 30980, - "sourceUnit": 853, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30723, - "nodeType": "ImportDirective", - "src": "96:55:30", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 30980, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30724, - "nodeType": "ImportDirective", - "src": "153:37:30", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 30980, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30725, - "nodeType": "ImportDirective", - "src": "191:39:30", - "nodes": [], - "absolutePath": "src/libraries/LPercentages.sol", - "file": "../libraries/LPercentages.sol", - "nameLocation": "-1:-1:-1", - "scope": 30980, - "sourceUnit": 33887, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30726, - "nodeType": "ImportDirective", - "src": "231:40:30", - "nodes": [], - "absolutePath": "src/libraries/LAuthorizable.sol", - "file": "../libraries/LAuthorizable.sol", - "nameLocation": "-1:-1:-1", - "scope": 30980, - "sourceUnit": 33841, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30728, - "nodeType": "ErrorDefinition", - "src": "273:36:30", - "nodes": [], - "errorSelector": "4f231d22", - "name": "ClaimFacet__NotEnoughPoints", - "nameLocation": "279:27:30", - "parameters": { - "id": 30727, - "nodeType": "ParameterList", - "parameters": [], - "src": "306:2:30" - } - }, - { - "id": 30730, - "nodeType": "ErrorDefinition", - "src": "310:37:30", - "nodes": [], - "errorSelector": "3fa01af9", - "name": "ClaimFacet__InProgressSeason", - "nameLocation": "316:28:30", - "parameters": { - "id": 30729, - "nodeType": "ParameterList", - "parameters": [], - "src": "344:2:30" - } - }, - { - "id": 30732, - "nodeType": "ErrorDefinition", - "src": "348:35:30", - "nodes": [], - "errorSelector": "3f943e4c", - "name": "ClaimFacet__AlreadyClaimed", - "nameLocation": "354:26:30", - "parameters": { - "id": 30731, - "nodeType": "ParameterList", - "parameters": [], - "src": "380:2:30" - } - }, - { - "id": 30734, - "nodeType": "ErrorDefinition", - "src": "384:40:30", - "nodes": [], - "errorSelector": "dedd498b", - "name": "ClaimFacet__InvalidFeeReceivers", - "nameLocation": "390:31:30", - "parameters": { - "id": 30733, - "nodeType": "ParameterList", - "parameters": [], - "src": "421:2:30" - } - }, - { - "id": 30979, - "nodeType": "ContractDefinition", - "src": "547:3093:30", - "nodes": [ - { - "id": 30738, - "nodeType": "VariableDeclaration", - "src": "573:12:30", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "584:1:30", - "scope": 30979, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 30737, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30736, - "name": "AppStorage", - "nameLocations": [ - "573:10:30" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "573:10:30" - }, - "referencedDeclaration": 33814, - "src": "573:10:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 30749, - "nodeType": "EventDefinition", - "src": "735:106:30", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 30739, - "nodeType": "StructuredDocumentation", - "src": "650:80:30", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "d27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808", - "name": "Claim", - "nameLocation": "741:5:30", - "parameters": { - "id": 30748, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30741, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "763:8:30", - "nodeType": "VariableDeclaration", - "scope": 30749, - "src": "747:24:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "747:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30743, - "indexed": true, - "mutability": "mutable", - "name": "user", - "nameLocation": "789:4:30", - "nodeType": "VariableDeclaration", - "scope": 30749, - "src": "773:20:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 30742, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "773:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30745, - "indexed": false, - "mutability": "mutable", - "name": "rewardsAmount", - "nameLocation": "803:13:30", - "nodeType": "VariableDeclaration", - "scope": 30749, - "src": "795:21:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30744, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "795:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30747, - "indexed": false, - "mutability": "mutable", - "name": "depositAmount", - "nameLocation": "826:13:30", - "nodeType": "VariableDeclaration", - "scope": 30749, - "src": "818:21:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30746, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "818:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "746:94:30" - } - }, - { - "id": 30930, - "nodeType": "FunctionDefinition", - "src": "1109:1836:30", - "nodes": [], - "body": { - "id": 30929, - "nodeType": "Block", - "src": "1186:1759:30", - "nodes": [], - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 30761, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30738, - "src": "1230:1:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - { - "expression": { - "id": 30762, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1233:3:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 30763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1237:6:30", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1233:10:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 30758, - "name": "LAuthorizable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33840, - "src": "1196:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LAuthorizable_$33840_$", - "typeString": "type(library LAuthorizable)" - } - }, - "id": 30760, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1210:19:30", - "memberName": "enforceIsAuthorized", - "nodeType": "MemberAccess", - "referencedDeclaration": 33839, - "src": "1196:33:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_AppStorage_$33814_storage_ptr_$_t_address_$returns$__$", - "typeString": "function (struct AppStorage storage pointer,address) view" - } - }, - "id": 30764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1196:48:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30765, - "nodeType": "ExpressionStatement", - "src": "1196:48:30" - }, - { - "assignments": [ - 30768 - ], - "declarations": [ - { - "constant": false, - "id": 30768, - "mutability": "mutable", - "name": "season", - "nameLocation": "1270:6:30", - "nodeType": "VariableDeclaration", - "scope": 30929, - "src": "1255:21:30", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 30767, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30766, - "name": "Season", - "nameLocations": [ - "1255:6:30" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "1255:6:30" - }, - "referencedDeclaration": 33675, - "src": "1255:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "id": 30773, - "initialValue": { - "baseExpression": { - "expression": { - "id": 30769, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30738, - "src": "1279:1:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30770, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1281:7:30", - "memberName": "seasons", - "nodeType": "MemberAccess", - "referencedDeclaration": 33716, - "src": "1279:9:30", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Season_$33675_storage_$", - "typeString": "mapping(uint256 => struct Season storage ref)" - } - }, - "id": 30772, - "indexExpression": { - "id": 30771, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30752, - "src": "1289:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1279:20:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage", - "typeString": "struct Season storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1255:44:30" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30774, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30768, - "src": "1361:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30775, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1368:12:30", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "1361:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "expression": { - "id": 30776, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1384:5:30", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 30777, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1390:9:30", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1384:15:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1361:38:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30783, - "nodeType": "IfStatement", - "src": "1357:106:30", - "trueBody": { - "id": 30782, - "nodeType": "Block", - "src": "1401:62:30", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 30779, - "name": "ClaimFacet__InProgressSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30730, - "src": "1422:28:30", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 30780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1422:30:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30781, - "nodeType": "RevertStatement", - "src": "1415:37:30" - } - ] - } - }, - { - "assignments": [ - 30785 - ], - "declarations": [ - { - "constant": false, - "id": 30785, - "mutability": "mutable", - "name": "_length", - "nameLocation": "1481:7:30", - "nodeType": "VariableDeclaration", - "scope": 30929, - "src": "1473:15:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30784, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1473:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30788, - "initialValue": { - "expression": { - "id": 30786, - "name": "_users", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30755, - "src": "1491:6:30", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 30787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1498:6:30", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "1491:13:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1473:31:30" - }, - { - "body": { - "id": 30927, - "nodeType": "Block", - "src": "1545:1394:30", - "statements": [ - { - "assignments": [ - 30796 - ], - "declarations": [ - { - "constant": false, - "id": 30796, - "mutability": "mutable", - "name": "user", - "nameLocation": "1567:4:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "1559:12:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 30795, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1559:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 30800, - "initialValue": { - "baseExpression": { - "id": 30797, - "name": "_users", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30755, - "src": "1574:6:30", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 30799, - "indexExpression": { - "id": 30798, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30790, - "src": "1581:1:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1574:9:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1559:24:30" - }, - { - "assignments": [ - 30803 - ], - "declarations": [ - { - "constant": false, - "id": 30803, - "mutability": "mutable", - "name": "userData", - "nameLocation": "1614:8:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "1597:25:30", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 30802, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30801, - "name": "UserData", - "nameLocations": [ - "1597:8:30" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1597:8:30" - }, - "referencedDeclaration": 33698, - "src": "1597:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 30810, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 30804, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30738, - "src": "1625:1:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30805, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1627:9:30", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1625:11:30", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 30807, - "indexExpression": { - "id": 30806, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30752, - "src": "1637:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1625:22:30", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 30809, - "indexExpression": { - "id": 30808, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30796, - "src": "1648:4:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1625:28:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1597:56:30" - }, - { - "assignments": [ - 30812 - ], - "declarations": [ - { - "constant": false, - "id": 30812, - "mutability": "mutable", - "name": "_depositPoints", - "nameLocation": "1675:14:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "1667:22:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30811, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1667:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30815, - "initialValue": { - "expression": { - "id": 30813, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "1692:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30814, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1701:13:30", - "memberName": "depositPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33681, - "src": "1692:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1667:47:30" - }, - { - "assignments": [ - 30817 - ], - "declarations": [ - { - "constant": false, - "id": 30817, - "mutability": "mutable", - "name": "_unlockAmount", - "nameLocation": "1736:13:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "1728:21:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30816, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1728:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30820, - "initialValue": { - "expression": { - "id": 30818, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "1752:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30819, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1761:12:30", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "1752:21:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1728:45:30" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30821, - "name": "_depositPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30812, - "src": "1856:14:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 30822, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1874:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1856:19:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30826, - "nodeType": "IfStatement", - "src": "1852:66:30", - "trueBody": { - "id": 30825, - "nodeType": "Block", - "src": "1877:41:30", - "statements": [ - { - "id": 30824, - "nodeType": "Continue", - "src": "1895:8:30" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30827, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "1984:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30828, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1993:13:30", - "memberName": "amountClaimed", - "nodeType": "MemberAccess", - "referencedDeclaration": 33693, - "src": "1984:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 30829, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2009:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1984:26:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30833, - "nodeType": "IfStatement", - "src": "1980:73:30", - "trueBody": { - "id": 30832, - "nodeType": "Block", - "src": "2012:41:30", - "statements": [ - { - "id": 30831, - "nodeType": "Continue", - "src": "2030:8:30" - } - ] - } - }, - { - "assignments": [ - 30835 - ], - "declarations": [ - { - "constant": false, - "id": 30835, - "mutability": "mutable", - "name": "totalPoints", - "nameLocation": "2075:11:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "2067:19:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30834, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2067:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30840, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30836, - "name": "_depositPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30812, - "src": "2089:14:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 30837, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2106:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30838, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2115:11:30", - "memberName": "boostPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33683, - "src": "2106:20:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2089:37:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2067:59:30" - }, - { - "assignments": [ - 30842 - ], - "declarations": [ - { - "constant": false, - "id": 30842, - "mutability": "mutable", - "name": "userShare", - "nameLocation": "2148:9:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "2140:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30841, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2140:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30847, - "initialValue": { - "arguments": [ - { - "id": 30844, - "name": "totalPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30835, - "src": "2176:11:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30845, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30768, - "src": "2189:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - ], - "id": 30843, - "name": "_calculateShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30958, - "src": "2160:15:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_struct$_Season_$33675_storage_ptr_$returns$_t_uint256_$", - "typeString": "function (uint256,struct Season storage pointer) view returns (uint256)" - } - }, - "id": 30846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2160:36:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2140:56:30" - }, - { - "assignments": [ - 30849 - ], - "declarations": [ - { - "constant": false, - "id": 30849, - "mutability": "mutable", - "name": "rewardTokenShare", - "nameLocation": "2219:16:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "2211:24:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30848, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2211:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30854, - "initialValue": { - "arguments": [ - { - "id": 30851, - "name": "userShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30842, - "src": "2256:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30852, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30768, - "src": "2267:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - ], - "id": 30850, - "name": "_vapeToDistribute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30978, - "src": "2238:17:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_struct$_Season_$33675_storage_ptr_$returns$_t_uint256_$", - "typeString": "function (uint256,struct Season storage pointer) view returns (uint256)" - } - }, - "id": 30853, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2238:36:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2211:63:30" - }, - { - "expression": { - "id": 30859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30855, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2289:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30857, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2298:13:30", - "memberName": "amountClaimed", - "nodeType": "MemberAccess", - "referencedDeclaration": 33693, - "src": "2289:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 30858, - "name": "rewardTokenShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30849, - "src": "2314:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2289:41:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30860, - "nodeType": "ExpressionStatement", - "src": "2289:41:30" - }, - { - "expression": { - "id": 30865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30861, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2344:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30863, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2353:22:30", - "memberName": "hasWithdrawnOrRestaked", - "nodeType": "MemberAccess", - "referencedDeclaration": 33697, - "src": "2344:31:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 30864, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2378:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2344:38:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30866, - "nodeType": "ExpressionStatement", - "src": "2344:38:30" - }, - { - "expression": { - "id": 30871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30867, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2396:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30869, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2405:12:30", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "2396:21:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 30870, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2420:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2396:25:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30872, - "nodeType": "ExpressionStatement", - "src": "2396:25:30" - }, - { - "expression": { - "id": 30877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30873, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2435:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30875, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2444:15:30", - "memberName": "unlockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33691, - "src": "2435:24:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 30876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2462:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2435:28:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30878, - "nodeType": "ExpressionStatement", - "src": "2435:28:30" - }, - { - "expression": { - "id": 30883, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30879, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30768, - "src": "2477:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30881, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2484:18:30", - "memberName": "rewardTokenBalance", - "nodeType": "MemberAccess", - "referencedDeclaration": 33668, - "src": "2477:25:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 30882, - "name": "rewardTokenShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30849, - "src": "2506:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2477:45:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30884, - "nodeType": "ExpressionStatement", - "src": "2477:45:30" - }, - { - "expression": { - "id": 30889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 30885, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30768, - "src": "2536:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30887, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2543:16:30", - "memberName": "totalClaimAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33672, - "src": "2536:23:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 30888, - "name": "rewardTokenShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30849, - "src": "2563:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2536:43:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30890, - "nodeType": "ExpressionStatement", - "src": "2536:43:30" - }, - { - "expression": { - "arguments": [ - { - "id": 30896, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30796, - "src": "2625:4:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 30897, - "name": "rewardTokenShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30849, - "src": "2631:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 30892, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30738, - "src": "2601:1:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30893, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2603:11:30", - "memberName": "rewardToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33805, - "src": "2601:13:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 30891, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "2594:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 30894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2594:21:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 30895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2616:8:30", - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 30113, - "src": "2594:30:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 30898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2594:54:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30899, - "nodeType": "ExpressionStatement", - "src": "2594:54:30" - }, - { - "assignments": [ - 30901 - ], - "declarations": [ - { - "constant": false, - "id": 30901, - "mutability": "mutable", - "name": "withdrawAmount", - "nameLocation": "2670:14:30", - "nodeType": "VariableDeclaration", - "scope": 30927, - "src": "2662:22:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30900, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2662:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30906, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30902, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30803, - "src": "2687:8:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 30903, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2696:13:30", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "2687:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 30904, - "name": "_unlockAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30817, - "src": "2712:13:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2687:38:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2662:63:30" - }, - { - "expression": { - "arguments": [ - { - "id": 30912, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30796, - "src": "2771:4:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 30913, - "name": "withdrawAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30901, - "src": "2777:14:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 30908, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30738, - "src": "2746:1:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 30909, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2748:12:30", - "memberName": "depositToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33803, - "src": "2746:14:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 30907, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "2739:6:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 30910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2739:22:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 30911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2762:8:30", - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 30113, - "src": "2739:31:30", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 30914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2739:53:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30915, - "nodeType": "ExpressionStatement", - "src": "2739:53:30" - }, - { - "eventCall": { - "arguments": [ - { - "id": 30917, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30752, - "src": "2818:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30918, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30796, - "src": "2829:4:30", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 30919, - "name": "rewardTokenShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30849, - "src": "2835:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 30920, - "name": "withdrawAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30901, - "src": "2853:14:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 30916, - "name": "Claim", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30749, - "src": "2812:5:30", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256,uint256)" - } - }, - "id": 30921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2812:56:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 30922, - "nodeType": "EmitStatement", - "src": "2807:61:30" - }, - { - "id": 30926, - "nodeType": "UncheckedBlock", - "src": "2883:46:30", - "statements": [ - { - "expression": { - "id": 30924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2911:3:30", - "subExpression": { - "id": 30923, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30790, - "src": "2911:1:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 30925, - "nodeType": "ExpressionStatement", - "src": "2911:3:30" - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30792, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30790, - "src": "1530:1:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 30793, - "name": "_length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30785, - "src": "1534:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1530:11:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 30928, - "initializationExpression": { - "assignments": [ - 30790 - ], - "declarations": [ - { - "constant": false, - "id": 30790, - "mutability": "mutable", - "name": "i", - "nameLocation": "1527:1:30", - "nodeType": "VariableDeclaration", - "scope": 30928, - "src": "1519:9:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30789, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1519:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30791, - "nodeType": "VariableDeclarationStatement", - "src": "1519:9:30" - }, - "nodeType": "ForStatement", - "src": "1514:1425:30" - } - ] - }, - "documentation": { - "id": 30750, - "nodeType": "StructuredDocumentation", - "src": "929:175:30", - "text": "@notice Claim accrued VAPE rewards during the current season and withdraw unlocked VPND\n @param _seasonId The season ID\n @param _users The users to claim for" - }, - "functionSelector": "80b970de", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "automatedClaim", - "nameLocation": "1118:14:30", - "parameters": { - "id": 30756, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30752, - "mutability": "mutable", - "name": "_seasonId", - "nameLocation": "1141:9:30", - "nodeType": "VariableDeclaration", - "scope": 30930, - "src": "1133:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30751, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1133:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30755, - "mutability": "mutable", - "name": "_users", - "nameLocation": "1169:6:30", - "nodeType": "VariableDeclaration", - "scope": 30930, - "src": "1152:23:30", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 30753, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1152:7:30", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 30754, - "nodeType": "ArrayTypeName", - "src": "1152:9:30", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "visibility": "internal" - } - ], - "src": "1132:44:30" - }, - "returnParameters": { - "id": 30757, - "nodeType": "ParameterList", - "parameters": [], - "src": "1186:0:30" - }, - "scope": 30979, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 30958, - "nodeType": "FunctionDefinition", - "src": "3112:262:30", - "nodes": [], - "body": { - "id": 30957, - "nodeType": "Block", - "src": "3214:160:30", - "nodes": [], - "statements": [ - { - "assignments": [ - 30942 - ], - "declarations": [ - { - "constant": false, - "id": 30942, - "mutability": "mutable", - "name": "seasonTotalPoints", - "nameLocation": "3232:17:30", - "nodeType": "VariableDeclaration", - "scope": 30957, - "src": "3224:25:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30941, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3224:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30945, - "initialValue": { - "expression": { - "id": 30943, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30936, - "src": "3252:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30944, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3259:11:30", - "memberName": "totalPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33674, - "src": "3252:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3224:46:30" - }, - { - "assignments": [ - 30947 - ], - "declarations": [ - { - "constant": false, - "id": 30947, - "mutability": "mutable", - "name": "userShare", - "nameLocation": "3288:9:30", - "nodeType": "VariableDeclaration", - "scope": 30957, - "src": "3280:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30946, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3280:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 30954, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30953, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 30948, - "name": "_totalPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30933, - "src": "3301:12:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "31653138", - "id": 30949, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3316:4:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "3301:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 30951, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3300:21:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 30952, - "name": "seasonTotalPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30942, - "src": "3324:17:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3300:41:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3280:61:30" - }, - { - "expression": { - "id": 30955, - "name": "userShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30947, - "src": "3358:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 30940, - "id": 30956, - "nodeType": "Return", - "src": "3351:16:30" - } - ] - }, - "documentation": { - "id": 30931, - "nodeType": "StructuredDocumentation", - "src": "3033:74:30", - "text": "@notice Calculate the share of the User based on totalPoints of season" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_calculateShare", - "nameLocation": "3121:15:30", - "parameters": { - "id": 30937, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30933, - "mutability": "mutable", - "name": "_totalPoints", - "nameLocation": "3145:12:30", - "nodeType": "VariableDeclaration", - "scope": 30958, - "src": "3137:20:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30932, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3137:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30936, - "mutability": "mutable", - "name": "season", - "nameLocation": "3174:6:30", - "nodeType": "VariableDeclaration", - "scope": 30958, - "src": "3159:21:30", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 30935, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30934, - "name": "Season", - "nameLocations": [ - "3159:6:30" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "3159:6:30" - }, - "referencedDeclaration": 33675, - "src": "3159:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "src": "3136:45:30" - }, - "returnParameters": { - "id": 30940, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30939, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 30958, - "src": "3205:7:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30938, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3205:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3204:9:30" - }, - "scope": 30979, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "id": 30978, - "nodeType": "FunctionDefinition", - "src": "3459:179:30", - "nodes": [], - "body": { - "id": 30977, - "nodeType": "Block", - "src": "3561:77:30", - "nodes": [], - "statements": [ - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 30972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 30969, - "name": "season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30964, - "src": "3579:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 30970, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3586:24:30", - "memberName": "rewardTokensToDistribute", - "nodeType": "MemberAccess", - "referencedDeclaration": 33666, - "src": "3579:31:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 30971, - "name": "_userShare", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30961, - "src": "3613:10:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3579:44:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 30973, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3578:46:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "31653138", - "id": 30974, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3627:4:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - "src": "3578:53:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 30968, - "id": 30976, - "nodeType": "Return", - "src": "3571:60:30" - } - ] - }, - "documentation": { - "id": 30959, - "nodeType": "StructuredDocumentation", - "src": "3380:74:30", - "text": "@notice Calculate VAPE earned by User through share of the totalPoints" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_vapeToDistribute", - "nameLocation": "3468:17:30", - "parameters": { - "id": 30965, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30961, - "mutability": "mutable", - "name": "_userShare", - "nameLocation": "3494:10:30", - "nodeType": "VariableDeclaration", - "scope": 30978, - "src": "3486:18:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30960, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3486:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 30964, - "mutability": "mutable", - "name": "season", - "nameLocation": "3521:6:30", - "nodeType": "VariableDeclaration", - "scope": 30978, - "src": "3506:21:30", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 30963, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 30962, - "name": "Season", - "nameLocations": [ - "3506:6:30" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "3506:6:30" - }, - "referencedDeclaration": 33675, - "src": "3506:6:30", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "src": "3485:43:30" - }, - "returnParameters": { - "id": 30968, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 30967, - "mutability": "mutable", - "name": "", - "nameLocation": "-1:-1:-1", - "nodeType": "VariableDeclaration", - "scope": 30978, - "src": "3552:7:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 30966, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3552:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3551:9:30" - }, - "scope": 30979, - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "ClaimFacet", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 30735, - "nodeType": "StructuredDocumentation", - "src": "426:121:30", - "text": "@title ClaimFacet\n @notice Facet in charge of claiming VAPE rewards\n @dev Utilizes 'LDiamond' and 'AppStorage'" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 30979 - ], - "name": "ClaimFacet", - "nameLocation": "556:10:30", - "scope": 30980, - "usedErrors": [ - 30730, - 33819 - ] - } - ], - "license": "MIT" - }, - "id": 30 -} \ No newline at end of file diff --git a/abis/DepositFacet.json b/abis/DepositFacet.json new file mode 100644 index 0000000..c2ab760 --- /dev/null +++ b/abis/DepositFacet.json @@ -0,0 +1,65 @@ +[ + { + "inputs": [], + "name": "DepositFacet__InvalidMiningPass", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__Less_Than_One_Day", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__NotEnoughTokenBalance", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__ReentrancyGuard__ReentrantCall", + "type": "error" + }, + { + "inputs": [], + "name": "DepositFacet__SeasonEnded", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/DepositFacet.sol/DepositFacet.json b/abis/DepositFacet.sol/DepositFacet.json deleted file mode 100644 index 0f14f76..0000000 --- a/abis/DepositFacet.sol/DepositFacet.json +++ /dev/null @@ -1,4090 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "DepositFacet__FundsInPrevSeason", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__InvalidMiningPass", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__NotEnoughTokenBalance", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__ReentrancyGuard__ReentrantCall", - "type": "error" - }, - { - "inputs": [], - "name": "DepositFacet__SeasonEnded", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Deposit", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "deposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b5061072c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046105cb565b610045565b005b601d54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601d81905560195490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e91906105e4565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260056020818152604080842033808652908352818520600b8085528387205480885295855283872092875291845291852092529290911580159061019f57508254155b905060008180156101c357506000836006015411806101c35750600a83015460ff16155b60098501546000908152601860205260409020548554919250906101e890899061062c565b1115610220576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610258576040517f755a09de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115610265574260048501555b336000818152600b602052604081208790559081908190610287908290610397565b60ff169150915081156102a65760008181526009602052604090205492505b6102b18a89896104dc565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018b905273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd906064016020604051808303816000875af115801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e9190610645565b506040518a8152339089907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601d555050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043591906105e4565b905080156104d3576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156104ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d0919061066e565b92505b50509250929050565b60008281526004602052604090206002810154421115610528576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006201518042836002015461053e9190610691565b61054891906106a4565b90508483600001600082825461055e919061062c565b9091555061056e905081866106df565b836002016000828254610581919061062c565b925050819055508482600501600082825461059c919061062c565b909155506105ac905081866106df565b8260070160008282546105bf919061062c565b90915550505050505050565b6000602082840312156105dd57600080fd5b5035919050565b6000602082840312156105f657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561063f5761063f6105fd565b92915050565b60006020828403121561065757600080fd5b8151801515811461066757600080fd5b9392505050565b60006020828403121561068057600080fd5b815160ff8116811461066757600080fd5b8181038181111561063f5761063f6105fd565b6000826106da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761063f5761063f6105fd56fea26469706673582212200b874ee4d12332b25770119033d24c591a0d650150de3764dd092b4670e1528964736f6c63430008110033", - "sourceMap": "672:3187:31:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046105cb565b610045565b005b601d54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601d81905560195490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e91906105e4565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260056020818152604080842033808652908352818520600b8085528387205480885295855283872092875291845291852092529290911580159061019f57508254155b905060008180156101c357506000836006015411806101c35750600a83015460ff16155b60098501546000908152601860205260409020548554919250906101e890899061062c565b1115610220576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610258576040517f755a09de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8115610265574260048501555b336000818152600b602052604081208790559081908190610287908290610397565b60ff169150915081156102a65760008181526009602052604090205492505b6102b18a89896104dc565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018b905273ffffffffffffffffffffffffffffffffffffffff8a16906323b872dd906064016020604051808303816000875af115801561032a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034e9190610645565b506040518a8152339089907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601d555050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa158015610411573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043591906105e4565b905080156104d3576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156104ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d0919061066e565b92505b50509250929050565b60008281526004602052604090206002810154421115610528576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006201518042836002015461053e9190610691565b61054891906106a4565b90508483600001600082825461055e919061062c565b9091555061056e905081866106df565b836002016000828254610581919061062c565b925050819055508482600501600082825461059c919061062c565b909155506105ac905081866106df565b8260070160008282546105bf919061062c565b90915550505050505050565b6000602082840312156105dd57600080fd5b5035919050565b6000602082840312156105f657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561063f5761063f6105fd565b92915050565b60006020828403121561065757600080fd5b8151801515811461066757600080fd5b9392505050565b60006020828403121561068057600080fd5b815160ff8116811461066757600080fd5b8181038181111561063f5761063f6105fd565b6000826106da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761063f5761063f6105fd56fea26469706673582212200b874ee4d12332b25770119033d24c591a0d650150de3764dd092b4670e1528964736f6c63430008110033", - "sourceMap": "672:3187:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1208:1982;;;;;;:::i;:::-;;:::i;:::-;;;931:23;;958:1;931:28;927:87;;968:46;;;;;;;;;;;;;;927:87;1050:1;1024:23;:27;;;1304:14:::1;::::0;1356:17;;1415:35:::1;::::0;;;;1439:10:::1;1415:35;::::0;::::1;345:74:59::0;1304:14:31::1;::::0;;::::1;::::0;;;1415:23:::1;::::0;318:18:59;;1415:35:31::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1405:7;:45;1401:120;;;1473:37;;;;;;;;;;;;;;1401:120;1531:42;1576:29:::0;;;:11:::1;:29;::::0;;;;;;;1606:10:::1;1576:41:::0;;;;;;;;;1693:23:::1;:35:::0;;;;;;;1681:48;;;;;;;;;:82;;;;;;;;;1800:35;;1576:41;1681:82;;1800:40;;::::1;::::0;:100:::1;;-1:-1:-1::0;1856:39:31;;:44;1800:100:::1;1774:126;;1911:24;1938:18;:173;;;;;2023:1;1973:34;:47;;;:51;:137;;;-1:-1:-1::0;2044:57:31::1;::::0;::::1;::::0;::::1;;:66;1973:137;2233:40;::::0;::::1;::::0;2202:1:::1;:72:::0;;;:30:::1;:72;::::0;;;;;2138:39;;1911:200;;-1:-1:-1;2202:72:31;2138:49:::1;::::0;2180:7;;2138:49:::1;:::i;:::-;:136;2121:229;;;2306:33;;;;;;;;;;;;;;2121:229;2364:19;2360:90;;;2406:33;;;;;;;;;;;;;;2360:90;2463:18;2459:165;;;2549:15;2497:49;::::0;::::1;:67:::0;2459:165:::1;2706:10;2651:17;2682:35:::0;;;:23:::1;:35;::::0;;;;:54;;;2651:17;;;;;2791:39:::1;::::0;2651:17;;2791:24:::1;:39::i;:::-;2747:83;;;;;;2844:20;2840:108;;;2892:1;:45:::0;;;:39:::1;:45;::::0;;;;;;-1:-1:-1;2840:108:31::1;2958:66;2971:7;2980:16;2998:25;2958:12;:66::i;:::-;3059:62;::::0;;;;3086:10:::1;3059:62;::::0;::::1;1201:34:59::0;3106:4:31::1;1251:18:59::0;;;1244:43;1303:18;;;1296:34;;;3059:26:31::1;::::0;::::1;::::0;::::1;::::0;1113:18:59;;3059:62:31::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;3137:46:31::1;::::0;1769:25:59;;;3163:10:31::1;::::0;3145:16;;3137:46:::1;::::0;1757:2:59;1742:18;3137:46:31::1;;;;;;;-1:-1:-1::0;;1098:1:31;1072:23;:27;-1:-1:-1;;;;;;;;1208:1982:31:o;505:419:47:-;703:21;;;;754:33;;;;;703:21;363:55:59;;;754:33:47;;;345:74:59;610:25:47;;;;703:21;;;610:25;;703:21;;754:23;;318:18:59;;754:33:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;735:52;-1:-1:-1;801:12:47;;797:121;;877:30;;;;;;;;1769:25:59;;;852:4:47;;-1:-1:-1;877:20:47;;;;;;1742:18:59;;877:30:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;870:37;;797:121;649:275;;505:419;;;;;:::o;3280:577:31:-;3385:22;3410:20;;;:9;:20;;;;;3462;;;;3444:15;:38;3440:103;;;3505:27;;;;;;;;;;;;;;3440:103;3552:27;3625:6;3606:15;3583:7;:20;;;:38;;;;:::i;:::-;3582:49;;;;:::i;:::-;3552:79;;3668:7;3641:9;:23;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;3712:29:31;;-1:-1:-1;3722:19:31;3712:7;:29;:::i;:::-;3685:9;:23;;;:56;;;;;;;:::i;:::-;;;;;;;;3781:7;3751;:26;;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;3821:29:31;;-1:-1:-1;3831:19:31;3821:7;:29;:::i;:::-;3798:7;:19;;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;3280:577:31:o;14:180:59:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:59;;14:180;-1:-1:-1;14:180:59:o;430:184::-;500:6;553:2;541:9;532:7;528:23;524:32;521:52;;;569:1;566;559:12;521:52;-1:-1:-1;592:16:59;;430:184;-1:-1:-1;430:184:59:o;619:::-;671:77;668:1;661:88;768:4;765:1;758:15;792:4;789:1;782:15;808:125;873:9;;;894:10;;;891:36;;;907:18;;:::i;:::-;808:125;;;;:::o;1341:277::-;1408:6;1461:2;1449:9;1440:7;1436:23;1432:32;1429:52;;;1477:1;1474;1467:12;1429:52;1509:9;1503:16;1562:5;1555:13;1548:21;1541:5;1538:32;1528:60;;1584:1;1581;1574:12;1528:60;1607:5;1341:277;-1:-1:-1;;;1341:277:59:o;1805:273::-;1873:6;1926:2;1914:9;1905:7;1901:23;1897:32;1894:52;;;1942:1;1939;1932:12;1894:52;1974:9;1968:16;2024:4;2017:5;2013:16;2006:5;2003:27;1993:55;;2044:1;2041;2034:12;2083:128;2150:9;;;2171:11;;;2168:37;;;2185:18;;:::i;2216:274::-;2256:1;2282;2272:189;;2317:77;2314:1;2307:88;2418:4;2415:1;2408:15;2446:4;2443:1;2436:15;2272:189;-1:-1:-1;2475:9:59;;2216:274::o;2495:168::-;2568:9;;;2599;;2616:15;;;2610:22;;2596:37;2586:71;;2637:18;;:::i", - "linkReferences": {} - }, - "methodIdentifiers": { - "deposit(uint256)": "b6b55f25" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DepositFacet__FundsInPrevSeason\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFacet__InvalidMiningPass\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFacet__NotEnoughTokenBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFacet__ReentrancyGuard__ReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositFacet__SeasonEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utilizes 'LDiamond', 'AppStorage' and 'LPercentages'\",\"kind\":\"dev\",\"methods\":{\"deposit(uint256)\":{\"params\":{\"_amount\":\"Amount of token to deposit\"}}},\"title\":\"DepositFacet\",\"version\":1},\"userdoc\":{\"events\":{\"Deposit(uint256,address,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{\"deposit(uint256)\":{\"notice\":\"Deposit token to the contract\"}},\"notice\":\"Facet in charge of depositing VPND tokens\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/DepositFacet.sol\":\"DepositFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/clouds/src/diamond/LDiamond.sol\":{\"keccak256\":\"0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779\",\"dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML\"]},\"lib/clouds/src/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7\",\"dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/DepositFacet.sol\":{\"keccak256\":\"0xf145d6326cf45e24006440f180feae7334850307830b9287f6ddb953546a23c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9c2292f0fe4dfe11b9e9c0b0b04a9fb161e1a6395e29b5f6e57dd39c2b99fada\",\"dweb:/ipfs/QmSfUtoXYJLSAnbQTUjHsgatWu2JvWqruw7DPMizj5kBoN\"]},\"src/interfaces/IStratosphere.sol\":{\"keccak256\":\"0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab\",\"dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]},\"src/libraries/LPercentages.sol\":{\"keccak256\":\"0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f\",\"dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N\"]},\"src/libraries/LStratosphere.sol\":{\"keccak256\":\"0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3\",\"dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "DepositFacet__FundsInPrevSeason" - }, - { - "inputs": [], - "type": "error", - "name": "DepositFacet__InvalidMiningPass" - }, - { - "inputs": [], - "type": "error", - "name": "DepositFacet__NotEnoughTokenBalance" - }, - { - "inputs": [], - "type": "error", - "name": "DepositFacet__ReentrancyGuard__ReentrantCall" - }, - { - "inputs": [], - "type": "error", - "name": "DepositFacet__SeasonEnded" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Deposit", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "deposit" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "deposit(uint256)": { - "params": { - "_amount": "Amount of token to deposit" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "deposit(uint256)": { - "notice": "Deposit token to the contract" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/DepositFacet.sol": "DepositFacet" - }, - "libraries": {} - }, - "sources": { - "lib/clouds/src/diamond/LDiamond.sol": { - "keccak256": "0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32", - "urls": [ - "bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779", - "dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML" - ], - "license": "MIT" - }, - "lib/clouds/src/interfaces/IDiamondCut.sol": { - "keccak256": "0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1", - "urls": [ - "bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7", - "dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/DepositFacet.sol": { - "keccak256": "0xf145d6326cf45e24006440f180feae7334850307830b9287f6ddb953546a23c6", - "urls": [ - "bzz-raw://9c2292f0fe4dfe11b9e9c0b0b04a9fb161e1a6395e29b5f6e57dd39c2b99fada", - "dweb:/ipfs/QmSfUtoXYJLSAnbQTUjHsgatWu2JvWqruw7DPMizj5kBoN" - ], - "license": "MIT" - }, - "src/interfaces/IStratosphere.sol": { - "keccak256": "0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648", - "urls": [ - "bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab", - "dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - }, - "src/libraries/LPercentages.sol": { - "keccak256": "0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772", - "urls": [ - "bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f", - "dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N" - ], - "license": "MIT" - }, - "src/libraries/LStratosphere.sol": { - "keccak256": "0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1", - "urls": [ - "bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3", - "dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/DepositFacet.sol", - "id": 31285, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "DepositFacet": [ - 31284 - ], - "DepositFacet__FundsInPrevSeason": [ - 30995 - ], - "DepositFacet__InvalidMiningPass": [ - 30997 - ], - "DepositFacet__NotEnoughTokenBalance": [ - 30989 - ], - "DepositFacet__ReentrancyGuard__ReentrantCall": [ - 30991 - ], - "DepositFacet__SeasonEnded": [ - 30993 - ], - "IDiamondCut": [ - 892 - ], - "IERC20": [ - 30146 - ], - "IStratosphere": [ - 33656 - ], - "LDiamond": [ - 852 - ], - "LDiamond__AddressMustBeZero": [ - 4 - ], - "LDiamond__FunctionAlreadyExists": [ - 6 - ], - "LDiamond__ImmutableFunction": [ - 8 - ], - "LDiamond__IncorrectAction": [ - 10 - ], - "LDiamond__InexistentFacetCode": [ - 12 - ], - "LDiamond__InexistentFunction": [ - 14 - ], - "LDiamond__InitializationFailed": [ - 20 - ], - "LDiamond__InvalidAddressZero": [ - 22 - ], - "LDiamond__InvalidReplacementWithSameFunction": [ - 24 - ], - "LDiamond__NoSelectors": [ - 26 - ], - "LDiamond__OnlyOwner": [ - 28 - ], - "LPercentages": [ - 33886 - ], - "LStratosphere": [ - 33937 - ], - "Season": [ - 33675 - ], - "UserData": [ - 33698 - ] - }, - "nodeType": "SourceUnit", - "src": "32:3828:31", - "nodes": [ - { - "id": 30981, - "nodeType": "PragmaDirective", - "src": "32:24:31", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 30982, - "nodeType": "ImportDirective", - "src": "58:37:31", - "nodes": [], - "absolutePath": "lib/clouds/src/diamond/LDiamond.sol", - "file": "clouds/diamond/LDiamond.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 853, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30983, - "nodeType": "ImportDirective", - "src": "96:55:31", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30984, - "nodeType": "ImportDirective", - "src": "153:37:31", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30985, - "nodeType": "ImportDirective", - "src": "191:39:31", - "nodes": [], - "absolutePath": "src/libraries/LPercentages.sol", - "file": "../libraries/LPercentages.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 33887, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30986, - "nodeType": "ImportDirective", - "src": "231:41:31", - "nodes": [], - "absolutePath": "src/interfaces/IStratosphere.sol", - "file": "../interfaces/IStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 33657, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30987, - "nodeType": "ImportDirective", - "src": "273:40:31", - "nodes": [], - "absolutePath": "src/libraries/LStratosphere.sol", - "file": "../libraries/LStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 31285, - "sourceUnit": 33938, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 30989, - "nodeType": "ErrorDefinition", - "src": "315:44:31", - "nodes": [], - "errorSelector": "8dd47476", - "name": "DepositFacet__NotEnoughTokenBalance", - "nameLocation": "321:35:31", - "parameters": { - "id": 30988, - "nodeType": "ParameterList", - "parameters": [], - "src": "356:2:31" - } - }, - { - "id": 30991, - "nodeType": "ErrorDefinition", - "src": "360:53:31", - "nodes": [], - "errorSelector": "50bf8f23", - "name": "DepositFacet__ReentrancyGuard__ReentrantCall", - "nameLocation": "366:44:31", - "parameters": { - "id": 30990, - "nodeType": "ParameterList", - "parameters": [], - "src": "410:2:31" - } - }, - { - "id": 30993, - "nodeType": "ErrorDefinition", - "src": "414:34:31", - "nodes": [], - "errorSelector": "20c02df0", - "name": "DepositFacet__SeasonEnded", - "nameLocation": "420:25:31", - "parameters": { - "id": 30992, - "nodeType": "ParameterList", - "parameters": [], - "src": "445:2:31" - } - }, - { - "id": 30995, - "nodeType": "ErrorDefinition", - "src": "449:40:31", - "nodes": [], - "errorSelector": "755a09de", - "name": "DepositFacet__FundsInPrevSeason", - "nameLocation": "455:31:31", - "parameters": { - "id": 30994, - "nodeType": "ParameterList", - "parameters": [], - "src": "486:2:31" - } - }, - { - "id": 30997, - "nodeType": "ErrorDefinition", - "src": "490:40:31", - "nodes": [], - "errorSelector": "da9e2678", - "name": "DepositFacet__InvalidMiningPass", - "nameLocation": "496:31:31", - "parameters": { - "id": 30996, - "nodeType": "ParameterList", - "parameters": [], - "src": "527:2:31" - } - }, - { - "id": 31284, - "nodeType": "ContractDefinition", - "src": "672:3187:31", - "nodes": [ - { - "id": 31007, - "nodeType": "EventDefinition", - "src": "790:78:31", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 30999, - "nodeType": "StructuredDocumentation", - "src": "705:80:31", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "eaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b9", - "name": "Deposit", - "nameLocation": "796:7:31", - "parameters": { - "id": 31006, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 31001, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "820:8:31", - "nodeType": "VariableDeclaration", - "scope": 31007, - "src": "804:24:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31000, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "804:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31003, - "indexed": true, - "mutability": "mutable", - "name": "user", - "nameLocation": "846:4:31", - "nodeType": "VariableDeclaration", - "scope": 31007, - "src": "830:20:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 31002, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "830:7:31", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31005, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "860:6:31", - "nodeType": "VariableDeclaration", - "scope": 31007, - "src": "852:14:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31004, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "852:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "803:64:31" - } - }, - { - "id": 31010, - "nodeType": "VariableDeclaration", - "src": "874:12:31", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "885:1:31", - "scope": 31284, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 31009, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31008, - "name": "AppStorage", - "nameLocations": [ - "874:10:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "874:10:31" - }, - "referencedDeclaration": 33814, - "src": "874:10:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 31034, - "nodeType": "ModifierDefinition", - "src": "893:213:31", - "nodes": [], - "body": { - "id": 31033, - "nodeType": "Block", - "src": "917:189:31", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31012, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "931:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31013, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "933:21:31", - "memberName": "reentrancyGuardStatus", - "nodeType": "MemberAccess", - "referencedDeclaration": 33811, - "src": "931:23:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "32", - "id": 31014, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "958:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "931:28:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31019, - "nodeType": "IfStatement", - "src": "927:87:31", - "trueBody": { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 31016, - "name": "DepositFacet__ReentrancyGuard__ReentrantCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30991, - "src": "968:44:31", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 31017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "968:46:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31018, - "nodeType": "RevertStatement", - "src": "961:53:31" - } - }, - { - "expression": { - "id": 31024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31020, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1024:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31022, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1026:21:31", - "memberName": "reentrancyGuardStatus", - "nodeType": "MemberAccess", - "referencedDeclaration": 33811, - "src": "1024:23:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "32", - "id": 31023, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1050:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "1024:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31025, - "nodeType": "ExpressionStatement", - "src": "1024:27:31" - }, - { - "id": 31026, - "nodeType": "PlaceholderStatement", - "src": "1061:1:31" - }, - { - "expression": { - "id": 31031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31027, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1072:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31029, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1074:21:31", - "memberName": "reentrancyGuardStatus", - "nodeType": "MemberAccess", - "referencedDeclaration": 33811, - "src": "1072:23:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 31030, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1098:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1072:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31032, - "nodeType": "ExpressionStatement", - "src": "1072:27:31" - } - ] - }, - "name": "nonReentrant", - "nameLocation": "902:12:31", - "parameters": { - "id": 31011, - "nodeType": "ParameterList", - "parameters": [], - "src": "914:2:31" - }, - "virtual": false, - "visibility": "internal" - }, - { - "id": 31214, - "nodeType": "FunctionDefinition", - "src": "1208:1982:31", - "nodes": [], - "body": { - "id": 31213, - "nodeType": "Block", - "src": "1264:1926:31", - "nodes": [], - "statements": [ - { - "assignments": [ - 31044 - ], - "declarations": [ - { - "constant": false, - "id": 31044, - "mutability": "mutable", - "name": "_depositToken", - "nameLocation": "1281:13:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1274:20:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 31043, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31042, - "name": "IERC20", - "nameLocations": [ - "1274:6:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 30146, - "src": "1274:6:31" - }, - "referencedDeclaration": 30146, - "src": "1274:6:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "visibility": "internal" - } - ], - "id": 31049, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 31046, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1304:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31047, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1306:12:31", - "memberName": "depositToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33803, - "src": "1304:14:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 31045, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "1297:6:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 31048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1297:22:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1274:45:31" - }, - { - "assignments": [ - 31051 - ], - "declarations": [ - { - "constant": false, - "id": 31051, - "mutability": "mutable", - "name": "_currentSeasonId", - "nameLocation": "1337:16:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1329:24:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31050, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1329:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 31054, - "initialValue": { - "expression": { - "id": 31052, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1356:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31053, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1358:15:31", - "memberName": "currentSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33709, - "src": "1356:17:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1329:44:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 31055, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31037, - "src": "1405:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "arguments": [ - { - "expression": { - "id": 31058, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1439:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1443:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1439:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 31056, - "name": "_depositToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31044, - "src": "1415:13:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 31057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1429:9:31", - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 30103, - "src": "1415:23:31", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 31060, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1415:35:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1405:45:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31066, - "nodeType": "IfStatement", - "src": "1401:120:31", - "trueBody": { - "id": 31065, - "nodeType": "Block", - "src": "1452:69:31", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 31062, - "name": "DepositFacet__NotEnoughTokenBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30989, - "src": "1473:35:31", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 31063, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1473:37:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31064, - "nodeType": "RevertStatement", - "src": "1466:44:31" - } - ] - } - }, - { - "assignments": [ - 31069 - ], - "declarations": [ - { - "constant": false, - "id": 31069, - "mutability": "mutable", - "name": "_userDataForCurrentSeason", - "nameLocation": "1548:25:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1531:42:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 31068, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31067, - "name": "UserData", - "nameLocations": [ - "1531:8:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1531:8:31" - }, - "referencedDeclaration": 33698, - "src": "1531:8:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 31077, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 31070, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1576:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31071, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1578:9:31", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1576:11:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 31073, - "indexExpression": { - "id": 31072, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31051, - "src": "1588:16:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1576:29:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 31076, - "indexExpression": { - "expression": { - "id": 31074, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1606:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1610:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1606:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1576:41:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1531:86:31" - }, - { - "assignments": [ - 31080 - ], - "declarations": [ - { - "constant": false, - "id": 31080, - "mutability": "mutable", - "name": "_userDataForLastSeasonParticipated", - "nameLocation": "1644:34:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1627:51:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 31079, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31078, - "name": "UserData", - "nameLocations": [ - "1627:8:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1627:8:31" - }, - "referencedDeclaration": 33698, - "src": "1627:8:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 31092, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 31081, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1681:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31082, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1683:9:31", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1681:11:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 31088, - "indexExpression": { - "baseExpression": { - "expression": { - "id": 31083, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1693:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31084, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1695:21:31", - "memberName": "addressToLastSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33746, - "src": "1693:23:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 31087, - "indexExpression": { - "expression": { - "id": 31085, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1717:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31086, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1721:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1717:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1693:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1681:48:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 31091, - "indexExpression": { - "expression": { - "id": 31089, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1743:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31090, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1747:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1743:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1681:82:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1627:136:31" - }, - { - "assignments": [ - 31094 - ], - "declarations": [ - { - "constant": false, - "id": 31094, - "mutability": "mutable", - "name": "isNewSeasonForUser", - "nameLocation": "1779:18:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1774:23:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 31093, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1774:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 31107, - "initialValue": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 31106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "expression": { - "id": 31095, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "1800:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31096, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1802:21:31", - "memberName": "addressToLastSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33746, - "src": "1800:23:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 31099, - "indexExpression": { - "expression": { - "id": 31097, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1824:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31098, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1828:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1824:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1800:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 31100, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1839:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1800:40:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31102, - "name": "_userDataForCurrentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31069, - "src": "1856:25:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31103, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1882:13:31", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "1856:39:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 31104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1899:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1856:44:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1800:100:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1774:126:31" - }, - { - "assignments": [ - 31109 - ], - "declarations": [ - { - "constant": false, - "id": 31109, - "mutability": "mutable", - "name": "isFundsInPrevSeason", - "nameLocation": "1916:19:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "1911:24:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 31108, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1911:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 31122, - "initialValue": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 31121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 31110, - "name": "isNewSeasonForUser", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31094, - "src": "1938:18:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 31119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31111, - "name": "_userDataForLastSeasonParticipated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31080, - "src": "1973:34:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31112, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2008:12:31", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "1973:47:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 31113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2023:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1973:51:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 31118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31115, - "name": "_userDataForLastSeasonParticipated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31080, - "src": "2044:34:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31116, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2079:22:31", - "memberName": "hasWithdrawnOrRestaked", - "nodeType": "MemberAccess", - "referencedDeclaration": 33697, - "src": "2044:57:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "66616c7365", - "id": 31117, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2105:5:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2044:66:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1973:137:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 31120, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1972:139:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1938:173:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1911:200:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31132, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31123, - "name": "_userDataForCurrentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31069, - "src": "2138:25:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31124, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2164:13:31", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "2138:39:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 31125, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31037, - "src": "2180:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2138:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "baseExpression": { - "expression": { - "id": 31127, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "2202:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31128, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2204:28:31", - "memberName": "miningPassTierToDepositLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 33800, - "src": "2202:30:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 31131, - "indexExpression": { - "expression": { - "id": 31129, - "name": "_userDataForCurrentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31069, - "src": "2233:25:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31130, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2259:14:31", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "2233:40:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2202:72:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2138:136:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31137, - "nodeType": "IfStatement", - "src": "2121:229:31", - "trueBody": { - "id": 31136, - "nodeType": "Block", - "src": "2285:65:31", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 31133, - "name": "DepositFacet__InvalidMiningPass", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30997, - "src": "2306:31:31", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 31134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2306:33:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31135, - "nodeType": "RevertStatement", - "src": "2299:40:31" - } - ] - } - }, - { - "condition": { - "id": 31138, - "name": "isFundsInPrevSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31109, - "src": "2364:19:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31143, - "nodeType": "IfStatement", - "src": "2360:90:31", - "trueBody": { - "id": 31142, - "nodeType": "Block", - "src": "2385:65:31", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 31139, - "name": "DepositFacet__FundsInPrevSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30995, - "src": "2406:31:31", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 31140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2406:33:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31141, - "nodeType": "RevertStatement", - "src": "2399:40:31" - } - ] - } - }, - { - "condition": { - "id": 31144, - "name": "isNewSeasonForUser", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31094, - "src": "2463:18:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31153, - "nodeType": "IfStatement", - "src": "2459:165:31", - "trueBody": { - "id": 31152, - "nodeType": "Block", - "src": "2483:141:31", - "statements": [ - { - "expression": { - "id": 31150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31145, - "name": "_userDataForCurrentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31069, - "src": "2497:25:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31147, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2523:23:31", - "memberName": "lastBoostClaimTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33685, - "src": "2497:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 31148, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "2549:5:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 31149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2555:9:31", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2549:15:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2497:67:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31151, - "nodeType": "ExpressionStatement", - "src": "2497:67:31" - } - ] - } - }, - { - "assignments": [ - 31155 - ], - "declarations": [ - { - "constant": false, - "id": 31155, - "mutability": "mutable", - "name": "_discount", - "nameLocation": "2659:9:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "2651:17:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31154, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2651:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 31157, - "initialValue": { - "hexValue": "30", - "id": 31156, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2651:21:31" - }, - { - "expression": { - "id": 31165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "expression": { - "id": 31158, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "2682:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31162, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2684:21:31", - "memberName": "addressToLastSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33746, - "src": "2682:23:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 31163, - "indexExpression": { - "expression": { - "id": 31160, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2706:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2710:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2706:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2682:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 31164, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31051, - "src": "2720:16:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2682:54:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31166, - "nodeType": "ExpressionStatement", - "src": "2682:54:31" - }, - { - "assignments": [ - 31168, - 31170 - ], - "declarations": [ - { - "constant": false, - "id": 31168, - "mutability": "mutable", - "name": "isStratosphereMember", - "nameLocation": "2753:20:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "2748:25:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 31167, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2748:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31170, - "mutability": "mutable", - "name": "tier", - "nameLocation": "2783:4:31", - "nodeType": "VariableDeclaration", - "scope": 31213, - "src": "2775:12:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31169, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2775:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 31177, - "initialValue": { - "arguments": [ - { - "id": 31173, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "2816:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - { - "expression": { - "id": 31174, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2819:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2823:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2819:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 31171, - "name": "LStratosphere", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33937, - "src": "2791:13:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LStratosphere_$33937_$", - "typeString": "type(library LStratosphere)" - } - }, - "id": 31172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2805:10:31", - "memberName": "getDetails", - "nodeType": "MemberAccess", - "referencedDeclaration": 33936, - "src": "2791:24:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_AppStorage_$33814_storage_ptr_$_t_address_$returns$_t_bool_$_t_uint8_$", - "typeString": "function (struct AppStorage storage pointer,address) view returns (bool,uint8)" - } - }, - "id": 31176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2791:39:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint8_$", - "typeString": "tuple(bool,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2747:83:31" - }, - { - "condition": { - "id": 31178, - "name": "isStratosphereMember", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31168, - "src": "2844:20:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31187, - "nodeType": "IfStatement", - "src": "2840:108:31", - "trueBody": { - "id": 31186, - "nodeType": "Block", - "src": "2866:82:31", - "statements": [ - { - "expression": { - "id": 31184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 31179, - "name": "_discount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31155, - "src": "2880:9:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "expression": { - "id": 31180, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "2892:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31181, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2894:37:31", - "memberName": "depositDiscountForStratosphereMembers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33738, - "src": "2892:39:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 31183, - "indexExpression": { - "id": 31182, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31170, - "src": "2932:4:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2892:45:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2880:57:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31185, - "nodeType": "ExpressionStatement", - "src": "2880:57:31" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 31189, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31037, - "src": "2971:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 31190, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31051, - "src": "2980:16:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 31191, - "name": "_userDataForCurrentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31069, - "src": "2998:25:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - ], - "id": 31188, - "name": "_applyPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31283, - "src": "2958:12:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_struct$_UserData_$33698_storage_ptr_$returns$__$", - "typeString": "function (uint256,uint256,struct UserData storage pointer)" - } - }, - "id": 31192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2958:66:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31193, - "nodeType": "ExpressionStatement", - "src": "2958:66:31" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 31197, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3086:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3090:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3086:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 31201, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "3106:4:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DepositFacet_$31284", - "typeString": "contract DepositFacet" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DepositFacet_$31284", - "typeString": "contract DepositFacet" - } - ], - "id": 31200, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3098:7:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 31199, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3098:7:31", - "typeDescriptions": {} - } - }, - "id": 31202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3098:13:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 31203, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31037, - "src": "3113:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 31194, - "name": "_depositToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31044, - "src": "3059:13:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 31196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3073:12:31", - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 30145, - "src": "3059:26:31", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } - }, - "id": 31204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3059:62:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31205, - "nodeType": "ExpressionStatement", - "src": "3059:62:31" - }, - { - "eventCall": { - "arguments": [ - { - "id": 31207, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31051, - "src": "3145:16:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 31208, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "3163:3:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 31209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3167:6:31", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "3163:10:31", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 31210, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31037, - "src": "3175:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 31206, - "name": "Deposit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31007, - "src": "3137:7:31", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256)" - } - }, - "id": 31211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3137:46:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31212, - "nodeType": "EmitStatement", - "src": "3132:51:31" - } - ] - }, - "documentation": { - "id": 31035, - "nodeType": "StructuredDocumentation", - "src": "1112:91:31", - "text": "@notice Deposit token to the contract\n @param _amount Amount of token to deposit" - }, - "functionSelector": "b6b55f25", - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 31040, - "kind": "modifierInvocation", - "modifierName": { - "id": 31039, - "name": "nonReentrant", - "nameLocations": [ - "1251:12:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 31034, - "src": "1251:12:31" - }, - "nodeType": "ModifierInvocation", - "src": "1251:12:31" - } - ], - "name": "deposit", - "nameLocation": "1217:7:31", - "parameters": { - "id": 31038, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 31037, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "1233:7:31", - "nodeType": "VariableDeclaration", - "scope": 31214, - "src": "1225:15:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31036, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1225:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1224:17:31" - }, - "returnParameters": { - "id": 31041, - "nodeType": "ParameterList", - "parameters": [], - "src": "1264:0:31" - }, - "scope": 31284, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 31283, - "nodeType": "FunctionDefinition", - "src": "3280:577:31", - "nodes": [], - "body": { - "id": 31282, - "nodeType": "Block", - "src": "3375:482:31", - "nodes": [], - "statements": [ - { - "assignments": [ - 31227 - ], - "declarations": [ - { - "constant": false, - "id": 31227, - "mutability": "mutable", - "name": "_season", - "nameLocation": "3400:7:31", - "nodeType": "VariableDeclaration", - "scope": 31282, - "src": "3385:22:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 31226, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31225, - "name": "Season", - "nameLocations": [ - "3385:6:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "3385:6:31" - }, - "referencedDeclaration": 33675, - "src": "3385:6:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "id": 31232, - "initialValue": { - "baseExpression": { - "expression": { - "id": 31228, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31010, - "src": "3410:1:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 31229, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3412:7:31", - "memberName": "seasons", - "nodeType": "MemberAccess", - "referencedDeclaration": 33716, - "src": "3410:9:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Season_$33675_storage_$", - "typeString": "mapping(uint256 => struct Season storage ref)" - } - }, - "id": 31231, - "indexExpression": { - "id": 31230, - "name": "_seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31219, - "src": "3420:9:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3410:20:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage", - "typeString": "struct Season storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3385:45:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31233, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3444:5:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 31234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3450:9:31", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "3444:15:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 31235, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31227, - "src": "3462:7:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 31236, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3470:12:31", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "3462:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3444:38:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 31242, - "nodeType": "IfStatement", - "src": "3440:103:31", - "trueBody": { - "id": 31241, - "nodeType": "Block", - "src": "3484:59:31", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 31238, - "name": "DepositFacet__SeasonEnded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30993, - "src": "3505:25:31", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 31239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3505:27:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 31240, - "nodeType": "RevertStatement", - "src": "3498:34:31" - } - ] - } - }, - { - "assignments": [ - 31244 - ], - "declarations": [ - { - "constant": false, - "id": 31244, - "mutability": "mutable", - "name": "_daysUntilSeasonEnd", - "nameLocation": "3560:19:31", - "nodeType": "VariableDeclaration", - "scope": 31282, - "src": "3552:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31243, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3552:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 31253, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 31245, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31227, - "src": "3583:7:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 31246, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3591:12:31", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "3583:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 31247, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "3606:5:31", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 31248, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3612:9:31", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "3606:15:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3583:38:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 31250, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3582:40:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "31", - "id": 31251, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3625:6:31", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "3582:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3552:79:31" - }, - { - "expression": { - "id": 31258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31254, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31222, - "src": "3641:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31256, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3651:13:31", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "3641:23:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 31257, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31217, - "src": "3668:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3641:34:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31259, - "nodeType": "ExpressionStatement", - "src": "3641:34:31" - }, - { - "expression": { - "id": 31266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31260, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31222, - "src": "3685:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 31262, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3695:13:31", - "memberName": "depositPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33681, - "src": "3685:23:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 31263, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31217, - "src": "3712:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 31264, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31244, - "src": "3722:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3712:29:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3685:56:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31267, - "nodeType": "ExpressionStatement", - "src": "3685:56:31" - }, - { - "expression": { - "id": 31272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31268, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31227, - "src": "3751:7:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 31270, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3759:18:31", - "memberName": "totalDepositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33670, - "src": "3751:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 31271, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31217, - "src": "3781:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3751:37:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31273, - "nodeType": "ExpressionStatement", - "src": "3751:37:31" - }, - { - "expression": { - "id": 31280, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 31274, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31227, - "src": "3798:7:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 31276, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "3806:11:31", - "memberName": "totalPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33674, - "src": "3798:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 31279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 31277, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31217, - "src": "3821:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 31278, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 31244, - "src": "3831:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3821:29:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3798:52:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 31281, - "nodeType": "ExpressionStatement", - "src": "3798:52:31" - } - ] - }, - "documentation": { - "id": 31215, - "nodeType": "StructuredDocumentation", - "src": "3196:79:31", - "text": "@notice Apply points\n @param _amount Amount of token to apply points" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_applyPoints", - "nameLocation": "3289:12:31", - "parameters": { - "id": 31223, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 31217, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "3310:7:31", - "nodeType": "VariableDeclaration", - "scope": 31283, - "src": "3302:15:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31216, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3302:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31219, - "mutability": "mutable", - "name": "_seasonId", - "nameLocation": "3327:9:31", - "nodeType": "VariableDeclaration", - "scope": 31283, - "src": "3319:17:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 31218, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3319:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 31222, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "3355:9:31", - "nodeType": "VariableDeclaration", - "scope": 31283, - "src": "3338:26:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 31221, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 31220, - "name": "UserData", - "nameLocations": [ - "3338:8:31" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "3338:8:31" - }, - "referencedDeclaration": 33698, - "src": "3338:8:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "src": "3301:64:31" - }, - "returnParameters": { - "id": 31224, - "nodeType": "ParameterList", - "parameters": [], - "src": "3375:0:31" - }, - "scope": 31284, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "DepositFacet", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 30998, - "nodeType": "StructuredDocumentation", - "src": "532:140:31", - "text": "@title DepositFacet\n @notice Facet in charge of depositing VPND tokens\n @dev Utilizes 'LDiamond', 'AppStorage' and 'LPercentages'" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 31284 - ], - "name": "DepositFacet", - "nameLocation": "681:12:31", - "scope": 31285, - "usedErrors": [ - 30989, - 30991, - 30993, - 30995, - 30997 - ] - } - ], - "license": "MIT" - }, - "id": 31 -} \ No newline at end of file diff --git a/abis/DiamondLoupeFacet.json b/abis/DiamondLoupeFacet.json new file mode 100644 index 0000000..cb9801c --- /dev/null +++ b/abis/DiamondLoupeFacet.json @@ -0,0 +1,97 @@ +[ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_functionSelector", + "type": "bytes4" + } + ], + "name": "facetAddress", + "outputs": [ + { + "internalType": "address", + "name": "facetAddress_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facetAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "facetAddresses_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_facet", + "type": "address" + } + ], + "name": "facetFunctionSelectors", + "outputs": [ + { + "internalType": "bytes4[]", + "name": "facetFunctionSelectors_", + "type": "bytes4[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "facets", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "facetAddress", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "functionSelectors", + "type": "bytes4[]" + } + ], + "internalType": "struct IDiamondLoupe.Facet[]", + "name": "facets_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_id", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/DiamondManagerFacet.json b/abis/DiamondManagerFacet.json new file mode 100644 index 0000000..2ef4e1c --- /dev/null +++ b/abis/DiamondManagerFacet.json @@ -0,0 +1,1397 @@ +[ + { + "inputs": [], + "name": "DiamondManagerFacet_InvalidArgs_ChangeBoostPoints", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Invalid_Address", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Invalid_Input", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__NotAuthorized", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Not_Owner", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__Season_Not_Finished", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "BoostFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "BoostFeeWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "ClaimFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "DepositFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "DepositFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "DepositTokenSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "emissionManager", + "type": "address" + } + ], + "name": "EmissionsManagerSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "RestakeFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "rewardsControllerAddress", + "type": "address" + } + ], + "name": "RewardsControllerAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "season", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + } + ], + "name": "SeasonEndTimestampSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardTokenDistributed", + "type": "uint256" + } + ], + "name": "SeasonEnded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "SeasonIdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardTokenToDistribute", + "type": "uint256" + } + ], + "name": "SeasonStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "stratosphereAddress", + "type": "address" + } + ], + "name": "StratosphereAddressSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "UnlockFeeReceiversSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "UnlockFeeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "discountPoints", + "type": "uint256" + } + ], + "name": "UnlockTimestampDiscountForStratosphereMemberSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "VapeClaimedForSeason", + "type": "event" + }, + { + "inputs": [], + "name": "TOTAL_SHARES", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "newBoostPoints", + "type": "uint256[]" + } + ], + "name": "changeBoostPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "claimTokensForSeason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentSeasonData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokensToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPoints", + "type": "uint256" + } + ], + "internalType": "struct Season", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentSeasonId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "getCurrentSeasonUserDetails", + "outputs": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolShareBips", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "estimatedRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getDepositAmountOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getDepositPointsOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "feeReceiver", + "type": "address" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "getPendingWithdrawals", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokenBalancePool", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokenToDistribute", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getRewardTokensToDistribute", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "endTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokensToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rewardTokenBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalDepositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalPoints", + "type": "uint256" + } + ], + "internalType": "struct Season", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonEndTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonIsClaimed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonTotalClaimedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonTotalPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStratosphereAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getTotalDepositAmountOfSeason", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getTotalPointsOfSeason", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUnlockAmountOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUnlockTimestampOfUser", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserClaimedRewards", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserDataForCurrentSeason", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "depositPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "miningPassTier", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "hasWithdrawnOrRestaked", + "type": "bool" + } + ], + "internalType": "struct UserData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserDataForSeason", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "claimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "depositPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostPoints", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastBoostClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unlockTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "miningPassTier", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "hasWithdrawnOrRestaked", + "type": "bool" + } + ], + "internalType": "struct UserData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserDepositAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserLastBoostClaimedAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getUserPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "getUserTotalPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getWithdrawRestakeStatus", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "boostLevel", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "boostFee", + "type": "uint256" + } + ], + "name": "setBoostFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "setBoostFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "level", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "percent", + "type": "uint256" + } + ], + "name": "setBoostPercentTierLevel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "setCurrentSeasonId", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setDepositToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_emissionManager", + "type": "address" + } + ], + "name": "setEmissionsManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "executor", + "type": "address" + } + ], + "name": "setGelatoExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setRewardToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "setSeasonClaimed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "setSeasonEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "stratosphereAddress", + "type": "address" + } + ], + "name": "setStratosphereAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setUnlockFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "setUnlockFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "discountBasisPoints", + "type": "uint256" + } + ], + "name": "setUnlockTimestampDiscountForStratosphereMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + } + ], + "name": "startNewSeason", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_durationDays", + "type": "uint8" + } + ], + "name": "startNewSeasonWithDuration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_endTimestamp", + "type": "uint256" + } + ], + "name": "startNewSeasonWithEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/FeeCollectorFacet.json b/abis/FeeCollectorFacet.json new file mode 100644 index 0000000..94d2cea --- /dev/null +++ b/abis/FeeCollectorFacet.json @@ -0,0 +1,21 @@ +[ + { + "inputs": [], + "name": "FeeCollectorFacet__Only_Owner", + "type": "error" + }, + { + "inputs": [], + "name": "collectBoostFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "collectUnlockFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/MiningPassFacet.json b/abis/MiningPassFacet.json new file mode 100644 index 0000000..336e60b --- /dev/null +++ b/abis/MiningPassFacet.json @@ -0,0 +1,114 @@ +[ + { + "inputs": [], + "name": "MiningPassFacet__InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__InvalidTier", + "type": "error" + }, + { + "inputs": [], + "name": "MiningPassFacet__SeasonEnded", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "MiningPassPurchase", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "getMiningPassFee", + "outputs": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "miningPassOf", + "outputs": [ + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_depositLimit", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "purchase", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/MiningPassFacet.sol/MiningPassFacet.json b/abis/MiningPassFacet.sol/MiningPassFacet.json deleted file mode 100644 index 9ec2bcf..0000000 --- a/abis/MiningPassFacet.sol/MiningPassFacet.json +++ /dev/null @@ -1,2494 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "MiningPassFacet__InsufficientBalance", - "type": "error" - }, - { - "inputs": [], - "name": "MiningPassFacet__InvalidTier", - "type": "error" - }, - { - "inputs": [], - "name": "MiningPassFacet__SeasonEnded", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" - } - ], - "name": "MiningPassPurchase", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "name": "miningPassOf", - "outputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_depositLimit", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - } - ], - "name": "purchase", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506104f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046103f2565b610139565b005b61012061005e36600461040b565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601890925291909120549091565b6040805192835260208301919091520160405180910390f35b601b546002546000818152600560209081526040808320338452909152902073ffffffffffffffffffffffffffffffffffffffff90921691831580610182575080600901548411155b156101b9576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600981015460009081526017602052604080822054868352908220546101df9190610448565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561024e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102729190610488565b10156102aa576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526004602052604090206002015442106102f4576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018590556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af1158015610374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039891906104a1565b50843373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103e391815260200190565b60405180910390a45050505050565b60006020828403121561040457600080fd5b5035919050565b60006020828403121561041d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044157600080fd5b9392505050565b81810381811115610482577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561049a57600080fd5b5051919050565b6000602082840312156104b357600080fd5b8151801515811461044157600080fdfea26469706673582212206345c81d5f547541349448389522076b58417a6651ba3d26e4acf6a5c2ed636564736f6c63430008110033", - "sourceMap": "535:1846:36:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046103f2565b610139565b005b61012061005e36600461040b565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601890925291909120549091565b6040805192835260208301919091520160405180910390f35b601b546002546000818152600560209081526040808320338452909152902073ffffffffffffffffffffffffffffffffffffffff90921691831580610182575080600901548411155b156101b9576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600981015460009081526017602052604080822054868352908220546101df9190610448565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561024e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102729190610488565b10156102aa576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526004602052604090206002015442106102f4576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018590556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af1158015610374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039891906104a1565b50843373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103e391815260200190565b60405180910390a45050505050565b60006020828403121561040457600080fd5b5035919050565b60006020828403121561041d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044157600080fd5b9392505050565b81810381811115610482577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561049a57600080fd5b5051919050565b6000602082840312156104b357600080fd5b8151801515811461044157600080fdfea26469706673582212206345c81d5f547541349448389522076b58417a6651ba3d26e4acf6a5c2ed636564736f6c63430008110033", - "sourceMap": "535:1846:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;875:1121;;;;;;:::i;:::-;;:::i;:::-;;2098:281;;;;;;:::i;:::-;2246:17;;;2158:13;2234:30;;;:11;:30;;;;;;;;:37;;;;;;;;;;;;2206:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2315:56;;;:30;:56;;;;;;;;2206:65;;2098:281;;;;;687:25:59;;;743:2;728:18;;721:34;;;;660:18;2098:281:36;;;;;;;875:1121;953:10;;1001:17;;927:16;1057:29;;;:11;:29;;;;;;;;1087:10;1057:41;;;;;;;953:10;;;;;1144;;;:47;;;1167:9;:24;;;1158:5;:33;;1144:47;1140:115;;;1214:30;;;;;;;;;;;;;;1140:115;1386:24;;;;1318:12;1364:47;;;:21;:47;;;;;;;1333:28;;;;;;;:78;;1364:47;1333:78;:::i;:::-;1425:31;;;;;1445:10;1425:31;;;1199:74:59;1318:93:36;;-1:-1:-1;1318:93:36;;1425:19;;;;;;1172:18:59;;1425:31:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;1421:114;;;1486:38;;;;;;;;;;;;;;1421:114;1593:1;:27;;;:9;:27;;;;;:40;;;1637:15;-1:-1:-1;1589:127:36;;1675:30;;;;;;;;;;;;;;1589:127;1768:24;;;:32;;;1857:55;;;;;1880:10;1857:55;;;1736:34:59;1900:4:36;1786:18:59;;;1779:43;1838:18;;;1831:34;;;1857:22:36;;;;;;1648:18:59;;1857:55:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1977:5;1965:10;1928:61;;1947:16;1928:61;1984:4;1928:61;;;;2304:25:59;;2292:2;2277:18;;2158:177;1928:61:36;;;;;;;;917:1079;;;;875:1121;:::o;14:180:59:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:59;;14:180;-1:-1:-1;14:180:59:o;199:309::-;258:6;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;416:42;409:5;405:54;398:5;395:65;385:93;;474:1;471;464:12;385:93;497:5;199:309;-1:-1:-1;;;199:309:59:o;766:282::-;833:9;;;854:11;;;851:191;;;898:77;895:1;888:88;999:4;996:1;989:15;1027:4;1024:1;1017:15;851:191;766:282;;;;:::o;1284:184::-;1354:6;1407:2;1395:9;1386:7;1382:23;1378:32;1375:52;;;1423:1;1420;1413:12;1375:52;-1:-1:-1;1446:16:59;;1284:184;-1:-1:-1;1284:184:59:o;1876:277::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;2044:9;2038:16;2097:5;2090:13;2083:21;2076:5;2073:32;2063:60;;2119:1;2116;2109:12", - "linkReferences": {} - }, - "methodIdentifiers": { - "miningPassOf(address)": "fe315a13", - "purchase(uint256)": "efef39a1" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MiningPassFacet__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MiningPassFacet__InvalidTier\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MiningPassFacet__SeasonEnded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"MiningPassPurchase\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"miningPassOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_depositLimit\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"purchase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utilizes 'LDiamond', 'AppStorage'\",\"kind\":\"dev\",\"methods\":{\"miningPassOf(address)\":{\"params\":{\"_user\":\"User address\"}},\"purchase(uint256)\":{\"params\":{\"_tier\":\"Tier of mining pass to purchase\"}}},\"title\":\"MiningPassFacet\",\"version\":1},\"userdoc\":{\"events\":{\"MiningPassPurchase(uint256,address,uint256,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{\"miningPassOf(address)\":{\"notice\":\"Get user's mining pass tier and deposit limit\"},\"purchase(uint256)\":{\"notice\":\"notice Purchase a mining pass\"}},\"notice\":\"Facet in charge of purchasing and upgrading mining passes\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/MiningPassFacet.sol\":\"MiningPassFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/clouds/src/diamond/LDiamond.sol\":{\"keccak256\":\"0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779\",\"dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML\"]},\"lib/clouds/src/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7\",\"dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/MiningPassFacet.sol\":{\"keccak256\":\"0x4960dc38f525f11c9ad9f2c7178eedd6ff4dc186cacc3c76aa5daefd62fe2950\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be7bfbd23781ff4fcb484fdb68638bc2d085a805c7a08453651b4bf20b4a0f13\",\"dweb:/ipfs/QmcDEYYaDWWmoUPM8z3pJfbbY4qw5Dtny4UwapHq4GsJef\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]},\"src/libraries/LPausable.sol\":{\"keccak256\":\"0x4eed667356f095bd1a6e75eaebaa673f792bb412e06695f5501cf149535bba45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://883aafc91a6d73bc457b92db0ff4db683df7aab082aa9f189d699ee736776b38\",\"dweb:/ipfs/QmUPbfxznB4zNph59cCXFD5VTQxPYZinJ6LGLVS5SoApnU\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "MiningPassFacet__InsufficientBalance" - }, - { - "inputs": [], - "type": "error", - "name": "MiningPassFacet__InvalidTier" - }, - { - "inputs": [], - "type": "error", - "name": "MiningPassFacet__SeasonEnded" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "tier", - "type": "uint256", - "indexed": true - }, - { - "internalType": "uint256", - "name": "fee", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "MiningPassPurchase", - "anonymous": false - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_user", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function", - "name": "miningPassOf", - "outputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_depositLimit", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_tier", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "purchase" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "miningPassOf(address)": { - "params": { - "_user": "User address" - } - }, - "purchase(uint256)": { - "params": { - "_tier": "Tier of mining pass to purchase" - } - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "miningPassOf(address)": { - "notice": "Get user's mining pass tier and deposit limit" - }, - "purchase(uint256)": { - "notice": "notice Purchase a mining pass" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/MiningPassFacet.sol": "MiningPassFacet" - }, - "libraries": {} - }, - "sources": { - "lib/clouds/src/diamond/LDiamond.sol": { - "keccak256": "0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32", - "urls": [ - "bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779", - "dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML" - ], - "license": "MIT" - }, - "lib/clouds/src/interfaces/IDiamondCut.sol": { - "keccak256": "0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1", - "urls": [ - "bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7", - "dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/MiningPassFacet.sol": { - "keccak256": "0x4960dc38f525f11c9ad9f2c7178eedd6ff4dc186cacc3c76aa5daefd62fe2950", - "urls": [ - "bzz-raw://be7bfbd23781ff4fcb484fdb68638bc2d085a805c7a08453651b4bf20b4a0f13", - "dweb:/ipfs/QmcDEYYaDWWmoUPM8z3pJfbbY4qw5Dtny4UwapHq4GsJef" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - }, - "src/libraries/LPausable.sol": { - "keccak256": "0x4eed667356f095bd1a6e75eaebaa673f792bb412e06695f5501cf149535bba45", - "urls": [ - "bzz-raw://883aafc91a6d73bc457b92db0ff4db683df7aab082aa9f189d699ee736776b38", - "dweb:/ipfs/QmUPbfxznB4zNph59cCXFD5VTQxPYZinJ6LGLVS5SoApnU" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/MiningPassFacet.sol", - "id": 33111, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "IDiamondCut": [ - 892 - ], - "IERC20": [ - 30146 - ], - "LDiamond": [ - 852 - ], - "LDiamond__AddressMustBeZero": [ - 4 - ], - "LDiamond__FunctionAlreadyExists": [ - 6 - ], - "LDiamond__ImmutableFunction": [ - 8 - ], - "LDiamond__IncorrectAction": [ - 10 - ], - "LDiamond__InexistentFacetCode": [ - 12 - ], - "LDiamond__InexistentFunction": [ - 14 - ], - "LDiamond__InitializationFailed": [ - 20 - ], - "LDiamond__InvalidAddressZero": [ - 22 - ], - "LDiamond__InvalidReplacementWithSameFunction": [ - 24 - ], - "LDiamond__NoSelectors": [ - 26 - ], - "LDiamond__OnlyOwner": [ - 28 - ], - "LPausable": [ - 33865 - ], - "LPausable__AlreadyPaused": [ - 33845 - ], - "LPausable__AlreadyUnpaused": [ - 33847 - ], - "LPausable__PausedFeature": [ - 33849 - ], - "MiningPassFacet": [ - 33110 - ], - "MiningPassFacet__AlreadyPurchased": [ - 32951 - ], - "MiningPassFacet__InsufficientBalance": [ - 32953 - ], - "MiningPassFacet__InvalidTier": [ - 32949 - ], - "MiningPassFacet__SeasonEnded": [ - 32955 - ], - "Season": [ - 33675 - ], - "UserData": [ - 33698 - ] - }, - "nodeType": "SourceUnit", - "src": "32:2350:36", - "nodes": [ - { - "id": 32943, - "nodeType": "PragmaDirective", - "src": "32:24:36", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 32944, - "nodeType": "ImportDirective", - "src": "58:37:36", - "nodes": [], - "absolutePath": "lib/clouds/src/diamond/LDiamond.sol", - "file": "clouds/diamond/LDiamond.sol", - "nameLocation": "-1:-1:-1", - "scope": 33111, - "sourceUnit": 853, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 32945, - "nodeType": "ImportDirective", - "src": "96:55:36", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 33111, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 32946, - "nodeType": "ImportDirective", - "src": "153:37:36", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 33111, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 32947, - "nodeType": "ImportDirective", - "src": "191:36:36", - "nodes": [], - "absolutePath": "src/libraries/LPausable.sol", - "file": "../libraries/LPausable.sol", - "nameLocation": "-1:-1:-1", - "scope": 33111, - "sourceUnit": 33866, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 32949, - "nodeType": "ErrorDefinition", - "src": "229:37:36", - "nodes": [], - "errorSelector": "5e8e11d2", - "name": "MiningPassFacet__InvalidTier", - "nameLocation": "235:28:36", - "parameters": { - "id": 32948, - "nodeType": "ParameterList", - "parameters": [], - "src": "263:2:36" - } - }, - { - "id": 32951, - "nodeType": "ErrorDefinition", - "src": "267:42:36", - "nodes": [], - "errorSelector": "4f0652cf", - "name": "MiningPassFacet__AlreadyPurchased", - "nameLocation": "273:33:36", - "parameters": { - "id": 32950, - "nodeType": "ParameterList", - "parameters": [], - "src": "306:2:36" - } - }, - { - "id": 32953, - "nodeType": "ErrorDefinition", - "src": "310:45:36", - "nodes": [], - "errorSelector": "0289a601", - "name": "MiningPassFacet__InsufficientBalance", - "nameLocation": "316:36:36", - "parameters": { - "id": 32952, - "nodeType": "ParameterList", - "parameters": [], - "src": "352:2:36" - } - }, - { - "id": 32955, - "nodeType": "ErrorDefinition", - "src": "356:37:36", - "nodes": [], - "errorSelector": "bf9dd135", - "name": "MiningPassFacet__SeasonEnded", - "nameLocation": "362:28:36", - "parameters": { - "id": 32954, - "nodeType": "ParameterList", - "parameters": [], - "src": "390:2:36" - } - }, - { - "id": 33110, - "nodeType": "ContractDefinition", - "src": "535:1846:36", - "nodes": [ - { - "id": 32959, - "nodeType": "VariableDeclaration", - "src": "566:12:36", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "577:1:36", - "scope": 33110, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 32958, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 32957, - "name": "AppStorage", - "nameLocations": [ - "566:10:36" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "566:10:36" - }, - "referencedDeclaration": 33814, - "src": "566:10:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 32970, - "nodeType": "EventDefinition", - "src": "670:108:36", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 32960, - "nodeType": "StructuredDocumentation", - "src": "585:80:36", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "ea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404", - "name": "MiningPassPurchase", - "nameLocation": "676:18:36", - "parameters": { - "id": 32969, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 32962, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "711:8:36", - "nodeType": "VariableDeclaration", - "scope": 32970, - "src": "695:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32961, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "695:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 32964, - "indexed": true, - "mutability": "mutable", - "name": "user", - "nameLocation": "737:4:36", - "nodeType": "VariableDeclaration", - "scope": 32970, - "src": "721:20:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 32963, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "721:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 32966, - "indexed": true, - "mutability": "mutable", - "name": "tier", - "nameLocation": "759:4:36", - "nodeType": "VariableDeclaration", - "scope": 32970, - "src": "743:20:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32965, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "743:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 32968, - "indexed": false, - "mutability": "mutable", - "name": "fee", - "nameLocation": "773:3:36", - "nodeType": "VariableDeclaration", - "scope": 32970, - "src": "765:11:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32967, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "765:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "694:83:36" - } - }, - { - "id": 33078, - "nodeType": "FunctionDefinition", - "src": "875:1121:36", - "nodes": [], - "body": { - "id": 33077, - "nodeType": "Block", - "src": "917:1079:36", - "nodes": [], - "statements": [ - { - "assignments": [ - 32978 - ], - "declarations": [ - { - "constant": false, - "id": 32978, - "mutability": "mutable", - "name": "_feeToken", - "nameLocation": "934:9:36", - "nodeType": "VariableDeclaration", - "scope": 33077, - "src": "927:16:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - }, - "typeName": { - "id": 32977, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 32976, - "name": "IERC20", - "nameLocations": [ - "927:6:36" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 30146, - "src": "927:6:36" - }, - "referencedDeclaration": 30146, - "src": "927:6:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "visibility": "internal" - } - ], - "id": 32983, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 32980, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "953:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 32981, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "955:8:36", - "memberName": "feeToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33807, - "src": "953:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 32979, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "946:6:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 32982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "946:18:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "927:37:36" - }, - { - "assignments": [ - 32985 - ], - "declarations": [ - { - "constant": false, - "id": 32985, - "mutability": "mutable", - "name": "_currentSeasonId", - "nameLocation": "982:16:36", - "nodeType": "VariableDeclaration", - "scope": 33077, - "src": "974:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32984, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "974:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 32988, - "initialValue": { - "expression": { - "id": 32986, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "1001:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 32987, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1003:15:36", - "memberName": "currentSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33709, - "src": "1001:17:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "974:44:36" - }, - { - "assignments": [ - 32991 - ], - "declarations": [ - { - "constant": false, - "id": 32991, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "1045:9:36", - "nodeType": "VariableDeclaration", - "scope": 33077, - "src": "1028:26:36", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 32990, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 32989, - "name": "UserData", - "nameLocations": [ - "1028:8:36" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1028:8:36" - }, - "referencedDeclaration": 33698, - "src": "1028:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 32999, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 32992, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "1057:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 32993, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1059:9:36", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1057:11:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 32995, - "indexExpression": { - "id": 32994, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32985, - "src": "1069:16:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1057:29:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 32998, - "indexExpression": { - "expression": { - "id": 32996, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1087:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 32997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1091:6:36", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1087:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1057:41:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1028:70:36" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 33007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33000, - "name": "_tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32973, - "src": "1144:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 33001, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1153:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1144:10:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33003, - "name": "_tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32973, - "src": "1158:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "id": 33004, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32991, - "src": "1167:9:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33005, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1177:14:36", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "1167:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1158:33:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1144:47:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33012, - "nodeType": "IfStatement", - "src": "1140:115:36", - "trueBody": { - "id": 33011, - "nodeType": "Block", - "src": "1193:62:36", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33008, - "name": "MiningPassFacet__InvalidTier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32949, - "src": "1214:28:36", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33009, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1214:30:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33010, - "nodeType": "RevertStatement", - "src": "1207:37:36" - } - ] - } - }, - { - "assignments": [ - 33014 - ], - "declarations": [ - { - "constant": false, - "id": 33014, - "mutability": "mutable", - "name": "_fee", - "nameLocation": "1326:4:36", - "nodeType": "VariableDeclaration", - "scope": 33077, - "src": "1318:12:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33013, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1318:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33025, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "expression": { - "id": 33015, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "1333:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33016, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1335:19:36", - "memberName": "miningPassTierToFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 33796, - "src": "1333:21:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 33018, - "indexExpression": { - "id": 33017, - "name": "_tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32973, - "src": "1355:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1333:28:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "baseExpression": { - "expression": { - "id": 33019, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "1364:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33020, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1366:19:36", - "memberName": "miningPassTierToFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 33796, - "src": "1364:21:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 33023, - "indexExpression": { - "expression": { - "id": 33021, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32991, - "src": "1386:9:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33022, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1396:14:36", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "1386:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1364:47:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1333:78:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1318:93:36" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "expression": { - "id": 33028, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1445:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1449:6:36", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1445:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 33026, - "name": "_feeToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32978, - "src": "1425:9:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 33027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1435:9:36", - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 30103, - "src": "1425:19:36", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) view external returns (uint256)" - } - }, - "id": 33030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1425:31:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 33031, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33014, - "src": "1459:4:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1425:38:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33037, - "nodeType": "IfStatement", - "src": "1421:114:36", - "trueBody": { - "id": 33036, - "nodeType": "Block", - "src": "1465:70:36", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33033, - "name": "MiningPassFacet__InsufficientBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32953, - "src": "1486:36:36", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1486:38:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33035, - "nodeType": "RevertStatement", - "src": "1479:45:36" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "expression": { - "id": 33038, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "1593:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33039, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1595:7:36", - "memberName": "seasons", - "nodeType": "MemberAccess", - "referencedDeclaration": 33716, - "src": "1593:9:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Season_$33675_storage_$", - "typeString": "mapping(uint256 => struct Season storage ref)" - } - }, - "id": 33041, - "indexExpression": { - "id": 33040, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32985, - "src": "1603:16:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1593:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage", - "typeString": "struct Season storage ref" - } - }, - "id": 33042, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1621:12:36", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "1593:40:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "id": 33043, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1637:5:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 33044, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1643:9:36", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1637:15:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1593:59:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33050, - "nodeType": "IfStatement", - "src": "1589:127:36", - "trueBody": { - "id": 33049, - "nodeType": "Block", - "src": "1654:62:36", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33046, - "name": "MiningPassFacet__SeasonEnded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32955, - "src": "1675:28:36", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1675:30:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33048, - "nodeType": "RevertStatement", - "src": "1668:37:36" - } - ] - } - }, - { - "expression": { - "id": 33055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33051, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32991, - "src": "1768:9:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33053, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1778:14:36", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "1768:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 33054, - "name": "_tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32973, - "src": "1795:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1768:32:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33056, - "nodeType": "ExpressionStatement", - "src": "1768:32:36" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 33060, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1880:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1884:6:36", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1880:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 33064, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "1900:4:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MiningPassFacet_$33110", - "typeString": "contract MiningPassFacet" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_MiningPassFacet_$33110", - "typeString": "contract MiningPassFacet" - } - ], - "id": 33063, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1892:7:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 33062, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1892:7:36", - "typeDescriptions": {} - } - }, - "id": 33065, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1892:13:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 33066, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33014, - "src": "1907:4:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 33057, - "name": "_feeToken", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32978, - "src": "1857:9:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 33059, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1867:12:36", - "memberName": "transferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 30145, - "src": "1857:22:36", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,address,uint256) external returns (bool)" - } - }, - "id": 33067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1857:55:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33068, - "nodeType": "ExpressionStatement", - "src": "1857:55:36" - }, - { - "eventCall": { - "arguments": [ - { - "id": 33070, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32985, - "src": "1947:16:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 33071, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1965:3:36", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1969:6:36", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1965:10:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 33073, - "name": "_tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32973, - "src": "1977:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 33074, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33014, - "src": "1984:4:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 33069, - "name": "MiningPassPurchase", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32970, - "src": "1928:18:36", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256,uint256)" - } - }, - "id": 33075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1928:61:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33076, - "nodeType": "EmitStatement", - "src": "1923:66:36" - } - ] - }, - "documentation": { - "id": 32971, - "nodeType": "StructuredDocumentation", - "src": "784:86:36", - "text": "notice Purchase a mining pass\n @param _tier Tier of mining pass to purchase" - }, - "functionSelector": "efef39a1", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "purchase", - "nameLocation": "884:8:36", - "parameters": { - "id": 32974, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 32973, - "mutability": "mutable", - "name": "_tier", - "nameLocation": "901:5:36", - "nodeType": "VariableDeclaration", - "scope": 33078, - "src": "893:13:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 32972, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "893:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "892:15:36" - }, - "returnParameters": { - "id": 32975, - "nodeType": "ParameterList", - "parameters": [], - "src": "917:0:36" - }, - "scope": 33110, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 33109, - "nodeType": "FunctionDefinition", - "src": "2098:281:36", - "nodes": [], - "body": { - "id": 33108, - "nodeType": "Block", - "src": "2196:183:36", - "nodes": [], - "statements": [ - { - "assignments": [ - 33090 - ], - "declarations": [ - { - "constant": false, - "id": 33090, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "2222:9:36", - "nodeType": "VariableDeclaration", - "scope": 33108, - "src": "2206:25:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_memory_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 33089, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33088, - "name": "UserData", - "nameLocations": [ - "2206:8:36" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "2206:8:36" - }, - "referencedDeclaration": 33698, - "src": "2206:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 33098, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 33091, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "2234:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33092, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2236:9:36", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "2234:11:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 33095, - "indexExpression": { - "expression": { - "id": 33093, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "2246:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33094, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2248:15:36", - "memberName": "currentSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33709, - "src": "2246:17:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2234:30:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 33097, - "indexExpression": { - "id": 33096, - "name": "_user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33081, - "src": "2265:5:36", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2234:37:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2206:65:36" - }, - { - "expression": { - "components": [ - { - "expression": { - "id": 33099, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33090, - "src": "2289:9:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_memory_ptr", - "typeString": "struct UserData memory" - } - }, - "id": 33100, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2299:14:36", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "2289:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "expression": { - "id": 33101, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 32959, - "src": "2315:1:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33102, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2317:28:36", - "memberName": "miningPassTierToDepositLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 33800, - "src": "2315:30:36", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 33105, - "indexExpression": { - "expression": { - "id": 33103, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33090, - "src": "2346:9:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_memory_ptr", - "typeString": "struct UserData memory" - } - }, - "id": 33104, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2356:14:36", - "memberName": "miningPassTier", - "nodeType": "MemberAccess", - "referencedDeclaration": 33695, - "src": "2346:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2315:56:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 33106, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2288:84:36", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "functionReturnParameters": 33087, - "id": 33107, - "nodeType": "Return", - "src": "2281:91:36" - } - ] - }, - "documentation": { - "id": 33079, - "nodeType": "StructuredDocumentation", - "src": "2002:91:36", - "text": "@notice Get user's mining pass tier and deposit limit\n @param _user User address" - }, - "functionSelector": "fe315a13", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "miningPassOf", - "nameLocation": "2107:12:36", - "parameters": { - "id": 33082, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33081, - "mutability": "mutable", - "name": "_user", - "nameLocation": "2128:5:36", - "nodeType": "VariableDeclaration", - "scope": 33109, - "src": "2120:13:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 33080, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2120:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2119:15:36" - }, - "returnParameters": { - "id": 33087, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33084, - "mutability": "mutable", - "name": "_tier", - "nameLocation": "2166:5:36", - "nodeType": "VariableDeclaration", - "scope": 33109, - "src": "2158:13:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33083, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2158:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33086, - "mutability": "mutable", - "name": "_depositLimit", - "nameLocation": "2181:13:36", - "nodeType": "VariableDeclaration", - "scope": 33109, - "src": "2173:21:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33085, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2173:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2157:38:36" - }, - "scope": 33110, - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "MiningPassFacet", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 32956, - "nodeType": "StructuredDocumentation", - "src": "395:140:36", - "text": "@title MiningPassFacet\n @notice Facet in charge of purchasing and upgrading mining passes\n @dev Utilizes 'LDiamond', 'AppStorage'" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 33110 - ], - "name": "MiningPassFacet", - "nameLocation": "544:15:36", - "scope": 33111, - "usedErrors": [ - 32949, - 32953, - 32955 - ] - } - ], - "license": "MIT" - }, - "id": 36 -} \ No newline at end of file diff --git a/abis/OwnershipFacet.json b/abis/OwnershipFacet.json new file mode 100644 index 0000000..8697825 --- /dev/null +++ b/abis/OwnershipFacet.json @@ -0,0 +1,52 @@ +[ + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner_", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/PausationFacet.json b/abis/PausationFacet.json new file mode 100644 index 0000000..d09a4fd --- /dev/null +++ b/abis/PausationFacet.json @@ -0,0 +1,44 @@ +[ + { + "inputs": [], + "name": "LDiamond__OnlyOwner", + "type": "error" + }, + { + "inputs": [], + "name": "LPausable__AlreadyPaused", + "type": "error" + }, + { + "inputs": [], + "name": "LPausable__AlreadyUnpaused", + "type": "error" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/UnlockFacet.json b/abis/UnlockFacet.json new file mode 100644 index 0000000..e1a5413 --- /dev/null +++ b/abis/UnlockFacet.json @@ -0,0 +1,79 @@ +[ + { + "inputs": [], + "name": "UnlockFacet__AlreadyUnlocked", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidFeeReceivers", + "type": "error" + }, + { + "inputs": [], + "name": "UnlockFacet__InvalidUnlock", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "user", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "unlockFee", + "type": "uint256" + } + ], + "name": "Unlocked", + "type": "event" + }, + { + "inputs": [], + "name": "COOLDOWN_PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "unlock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/UnlockFacet.sol/UnlockFacet.json b/abis/UnlockFacet.sol/UnlockFacet.json deleted file mode 100644 index 2712f86..0000000 --- a/abis/UnlockFacet.sol/UnlockFacet.json +++ /dev/null @@ -1,4231 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "UnlockFacet__AlreadyUnlocked", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidAmount", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidFeeReceivers", - "type": "error" - }, - { - "inputs": [], - "name": "UnlockFacet__InvalidUnlock", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "unlockFee", - "type": "uint256" - } - ], - "name": "Unlocked", - "type": "event" - }, - { - "inputs": [], - "name": "COOLDOWN_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "name": "unlock", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b506106e3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e61004936600461057b565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f8582858561027a565b600080600080610130600033610317565b60ff1691509150811561015e5760008181526007602090815260408083205460089092529091205490945092505b600654600061018d8b61271061017485896105c3565b61017e91906105da565b6101889085610615565b61045c565b90506101988161047e565b60006127106101aa6203f480896105c3565b6101b491906105da565b6101c16203f48042610628565b6101cb9190610615565b9050878110610206576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610210828d610615565b8a60060160008282546102239190610628565b909155505060078a01819055604080518d81526020810184905233918d917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a3505050505050505050505050565b60006201518061028a4286610615565b61029491906105da565b9050848360000160008282546102aa9190610615565b909155506102ba905081866105c3565b8360020160008282546102cd9190610615565b92505081905550848260050160008282546102e89190610615565b909155506102f8905081866105c3565b82600701600082825461030b9190610615565b90915550505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa158015610391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b5919061063b565b90508015610453576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa15801561042c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104509190610654565b92505b50509250929050565b600061271061046b83856105c3565b61047591906105da565b90505b92915050565b600d54600c54146104bb576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460005b818110156105765760006104f5846000600d0184815481106104e5576104e561067e565b906000526020600020015461045c565b9050806000601601600080600c0185815481106105145761051461067e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff9081168452838201949094526040928301822060195490941682529290925281208054909190610568908490610628565b9091555050506001016104c1565b505050565b60006020828403121561058d57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761047857610478610594565b600082610610577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561047857610478610594565b8082018082111561047857610478610594565b60006020828403121561064d57600080fd5b5051919050565b60006020828403121561066657600080fd5b815160ff8116811461067757600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212202c391421d661261ec74b19ce0800e339a9bd9f5a231d4d57c9f552bf885acf3664736f6c63430008110033", - "sourceMap": "430:3148:39:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e61004936600461057b565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f8582858561027a565b600080600080610130600033610317565b60ff1691509150811561015e5760008181526007602090815260408083205460089092529091205490945092505b600654600061018d8b61271061017485896105c3565b61017e91906105da565b6101889085610615565b61045c565b90506101988161047e565b60006127106101aa6203f480896105c3565b6101b491906105da565b6101c16203f48042610628565b6101cb9190610615565b9050878110610206576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610210828d610615565b8a60060160008282546102239190610628565b909155505060078a01819055604080518d81526020810184905233918d917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a3505050505050505050505050565b60006201518061028a4286610615565b61029491906105da565b9050848360000160008282546102aa9190610615565b909155506102ba905081866105c3565b8360020160008282546102cd9190610615565b92505081905550848260050160008282546102e89190610615565b909155506102f8905081866105c3565b82600701600082825461030b9190610615565b90915550505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa158015610391573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b5919061063b565b90508015610453576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa15801561042c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104509190610654565b92505b50509250929050565b600061271061046b83856105c3565b61047591906105da565b90505b92915050565b600d54600c54146104bb576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460005b818110156105765760006104f5846000600d0184815481106104e5576104e561067e565b906000526020600020015461045c565b9050806000601601600080600c0185815481106105145761051461067e565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff9081168452838201949094526040928301822060195490941682529290925281208054909190610568908490610628565b9091555050506001016104c1565b505050565b60006020828403121561058d57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761047857610478610594565b600082610610577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8181038181111561047857610478610594565b8082018082111561047857610478610594565b60006020828403121561064d57600080fd5b5051919050565b60006020828403121561066657600080fd5b815160ff8116811461067757600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212202c391421d661261ec74b19ce0800e339a9bd9f5a231d4d57c9f552bf885acf3664736f6c63430008110033", - "sourceMap": "430:3148:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;734:1656;;;;;;:::i;:::-;;:::i;:::-;;664:51;;706:9;664:51;;;;;345:25:59;;;333:2;318:18;664:51:39;;;;;;;734:1656;813:17;;;786:24;869:29;;;:11;:29;;;;;;;;899:10;869:41;;;;;;;952:27;;;:9;:27;;;;;;1019;;;;1088:25;;;;813:17;;869:41;;1088:30;1084:98;;1141:30;;;;;;;;;;;;;;1084:98;1195:23;;:33;-1:-1:-1;1191:99:39;;;1251:28;;;;;;;;;;;;;;1191:99;1299:70;1313:7;1322:19;1343:9;1354:14;1299:13;:70::i;:::-;1380:21;1415:20;1450:25;1477:12;1493:39;1518:1;1521:10;1493:24;:39::i;:::-;1449:83;;;;;;1546:20;1542:196;;;1598:1;:53;;;:47;:53;;;;;;;;;1680:41;:47;;;;;;;1598:53;;-1:-1:-1;1680:47:39;-1:-1:-1;1542:196:39;1777:11;;1747:27;1813:134;1850:7;1932:5;1894:34;1777:11;1894:12;:34;:::i;:::-;1893:44;;;;:::i;:::-;1871:66;;:19;:66;:::i;:::-;1813:23;:134::i;:::-;1798:149;;1957:21;1973:4;1957:15;:21::i;:::-;1988:24;2087:5;2052:31;706:9;2052:13;:31;:::i;:::-;2051:41;;;;:::i;:::-;2015:33;706:9;2015:15;:33;:::i;:::-;:77;;;;:::i;:::-;1988:104;;2127:19;2107:16;:39;2103:105;;2169:28;;;;;;;;;;;;;;2103:105;2245:14;2255:4;2245:7;:14;:::i;:::-;2218:9;:22;;;:42;;;;;;;:::i;:::-;;;;-1:-1:-1;;2270:25:39;;;:44;;;2330:53;;;1459:25:59;;;1515:2;1500:18;;1493:34;;;2357:10:39;;2339:16;;2330:53;;1432:18:59;2330:53:39;;;;;;;776:1614;;;;;;;;;;;734:1656;:::o;2482:482::-;2660:27;2732:6;2691:37;2713:15;2691:19;:37;:::i;:::-;2690:48;;;;:::i;:::-;2660:78;;2775:7;2748:9;:23;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;2819:29:39;;-1:-1:-1;2829:19:39;2819:7;:29;:::i;:::-;2792:9;:23;;;:56;;;;;;;:::i;:::-;;;;;;;;2888:7;2858;:26;;;:37;;;;;;;:::i;:::-;;;;-1:-1:-1;2928:29:39;;-1:-1:-1;2938:19:39;2928:7;:29;:::i;:::-;2905:7;:19;;;:52;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;2482:482:39:o;505:419:47:-;703:21;;;;754:33;;;;;703:21;1702:55:59;;;754:33:47;;;1684:74:59;610:25:47;;;;703:21;;;610:25;;703:21;;754:23;;1657:18:59;;754:33:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;735:52;-1:-1:-1;801:12:47;;797:121;;877:30;;;;;;;;345:25:59;;;852:4:47;;-1:-1:-1;877:20:47;;;;;;318:18:59;;877:30:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;870:37;;797:121;649:275;;505:419;;;;;:::o;307:146:46:-;388:7;440:6;415:21;425:11;415:7;:21;:::i;:::-;414:32;;;;:::i;:::-;407:39;;307:146;;;;;:::o;3035:541:39:-;3128:26;:33;3097:20;:27;:64;3093:136;;3184:34;;;;;;;;;;;;;;3093:136;3256:20;:27;3238:15;3293:277;3313:7;3309:1;:11;3293:277;;;3338:14;3355:60;3379:4;3385:1;:26;;3412:1;3385:29;;;;;;;;:::i;:::-;;;;;;;;;3355:23;:60::i;:::-;3338:77;;3494:6;3429:1;:20;;:45;3450:1;:20;;3471:1;3450:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;3429:45;;;;;;;;;;;;;;;3475:14;;;;;3429:61;;;;;;;;:71;;:61;;3450:23;3429:71;;;;;:::i;:::-;;;;-1:-1:-1;;;3542:3:39;;3293:277;;;;3083:493;3035:541;:::o;14:180:59:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:59;;14:180;-1:-1:-1;14:180:59:o;381:184::-;433:77;430:1;423:88;530:4;527:1;520:15;554:4;551:1;544:15;570:168;643:9;;;674;;691:15;;;685:22;;671:37;661:71;;712:18;;:::i;743:274::-;783:1;809;799:189;;844:77;841:1;834:88;945:4;942:1;935:15;973:4;970:1;963:15;799:189;-1:-1:-1;1002:9:59;;743:274::o;1022:128::-;1089:9;;;1110:11;;;1107:37;;;1124:18;;:::i;1155:125::-;1220:9;;;1241:10;;;1238:36;;;1254:18;;:::i;1769:184::-;1839:6;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;-1:-1:-1;1931:16:59;;1769:184;-1:-1:-1;1769:184:59:o;1958:273::-;2026:6;2079:2;2067:9;2058:7;2054:23;2050:32;2047:52;;;2095:1;2092;2085:12;2047:52;2127:9;2121:16;2177:4;2170:5;2166:16;2159:5;2156:27;2146:55;;2197:1;2194;2187:12;2146:55;2220:5;1958:273;-1:-1:-1;;;1958:273:59:o;2236:184::-;2288:77;2285:1;2278:88;2385:4;2382:1;2375:15;2409:4;2406:1;2399:15", - "linkReferences": {} - }, - "methodIdentifiers": { - "COOLDOWN_PERIOD()": "6e99d52f", - "unlock(uint256)": "6198e339" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"UnlockFacet__AlreadyUnlocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnlockFacet__InvalidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnlockFacet__InvalidFeeReceivers\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnlockFacet__InvalidUnlock\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockFee\",\"type\":\"uint256\"}],\"name\":\"Unlocked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COOLDOWN_PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"unlock\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"events\":{\"Unlocked(uint256,address,uint256,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/UnlockFacet.sol\":\"UnlockFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/UnlockFacet.sol\":{\"keccak256\":\"0x1566650611eb1258936046086413afa7014b7337ee9cb71262cc0f5c5ceb3038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4664e14006e42bfe8217c08969c4116746a21e6ab42939731367cfcd45ffab1\",\"dweb:/ipfs/QmZBN5nc1ozydqbByvfhYyqmHtfgJ4PY8VPBxvZxWEAfN3\"]},\"src/interfaces/IStratosphere.sol\":{\"keccak256\":\"0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab\",\"dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]},\"src/libraries/LPercentages.sol\":{\"keccak256\":\"0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f\",\"dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N\"]},\"src/libraries/LStratosphere.sol\":{\"keccak256\":\"0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3\",\"dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "UnlockFacet__AlreadyUnlocked" - }, - { - "inputs": [], - "type": "error", - "name": "UnlockFacet__InvalidAmount" - }, - { - "inputs": [], - "type": "error", - "name": "UnlockFacet__InvalidFeeReceivers" - }, - { - "inputs": [], - "type": "error", - "name": "UnlockFacet__InvalidUnlock" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "user", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - }, - { - "internalType": "uint256", - "name": "unlockFee", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "Unlocked", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "view", - "type": "function", - "name": "COOLDOWN_PERIOD", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ] - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function", - "name": "unlock" - } - ], - "devdoc": { - "kind": "dev", - "methods": {}, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": {}, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/UnlockFacet.sol": "UnlockFacet" - }, - "libraries": {} - }, - "sources": { - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/UnlockFacet.sol": { - "keccak256": "0x1566650611eb1258936046086413afa7014b7337ee9cb71262cc0f5c5ceb3038", - "urls": [ - "bzz-raw://a4664e14006e42bfe8217c08969c4116746a21e6ab42939731367cfcd45ffab1", - "dweb:/ipfs/QmZBN5nc1ozydqbByvfhYyqmHtfgJ4PY8VPBxvZxWEAfN3" - ], - "license": "MIT" - }, - "src/interfaces/IStratosphere.sol": { - "keccak256": "0x26ad5c6ecd19227a5a972fe5a08c2a0251191f6bf5cc234141848a9cbed9e648", - "urls": [ - "bzz-raw://660c2cbc7d445a87204b5a9e6cfdecf9c94e9d2aa0296af1bc15d82048d2faab", - "dweb:/ipfs/QmTkmJjL6o1DhqPe34F9PkcFMpousarMk2HWHuBaiusqyn" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - }, - "src/libraries/LPercentages.sol": { - "keccak256": "0x3c2ee21d5c8098cfb442bd9176845fdfb0615e599d1dbb6bda145e833480d772", - "urls": [ - "bzz-raw://afbcdc374a2ce011eee5242cb2f60e6e525034109ab845ac2a37548eae8ab60f", - "dweb:/ipfs/QmQnRQ2jvMbjGgVZByVywS4qNboLjE8ruFm6LL5gnG9j8N" - ], - "license": "MIT" - }, - "src/libraries/LStratosphere.sol": { - "keccak256": "0x9de3e81be908bc5054d10b9b0ae0a0b569b395e6ee25b35661b1c97444ed5dd1", - "urls": [ - "bzz-raw://1a8802f6e7340a3761dffa61d3d63e636a9338cc9c70052df03df2ee18a0f5f3", - "dweb:/ipfs/QmZQB1q3gqhGQnKiJFC7GzA9v4sfch7nbUoyUQt9pp4Ffv" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/UnlockFacet.sol", - "id": 33530, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "IERC20": [ - 30146 - ], - "IStratosphere": [ - 33656 - ], - "LPercentages": [ - 33886 - ], - "LStratosphere": [ - 33937 - ], - "Season": [ - 33675 - ], - "UnlockFacet": [ - 33529 - ], - "UnlockFacet__AlreadyUnlocked": [ - 33225 - ], - "UnlockFacet__InvalidAmount": [ - 33223 - ], - "UnlockFacet__InvalidFeeReceivers": [ - 33227 - ], - "UnlockFacet__InvalidUnlock": [ - 33229 - ], - "UserData": [ - 33698 - ] - }, - "nodeType": "SourceUnit", - "src": "32:3547:39", - "nodes": [ - { - "id": 33216, - "nodeType": "PragmaDirective", - "src": "32:24:39", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 33217, - "nodeType": "ImportDirective", - "src": "58:55:39", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 33530, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33218, - "nodeType": "ImportDirective", - "src": "115:37:39", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 33530, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33219, - "nodeType": "ImportDirective", - "src": "153:39:39", - "nodes": [], - "absolutePath": "src/libraries/LPercentages.sol", - "file": "../libraries/LPercentages.sol", - "nameLocation": "-1:-1:-1", - "scope": 33530, - "sourceUnit": 33887, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33220, - "nodeType": "ImportDirective", - "src": "193:41:39", - "nodes": [], - "absolutePath": "src/interfaces/IStratosphere.sol", - "file": "../interfaces/IStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 33530, - "sourceUnit": 33657, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33221, - "nodeType": "ImportDirective", - "src": "235:40:39", - "nodes": [], - "absolutePath": "src/libraries/LStratosphere.sol", - "file": "../libraries/LStratosphere.sol", - "nameLocation": "-1:-1:-1", - "scope": 33530, - "sourceUnit": 33938, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33223, - "nodeType": "ErrorDefinition", - "src": "277:35:39", - "nodes": [], - "errorSelector": "37317762", - "name": "UnlockFacet__InvalidAmount", - "nameLocation": "283:26:39", - "parameters": { - "id": 33222, - "nodeType": "ParameterList", - "parameters": [], - "src": "309:2:39" - } - }, - { - "id": 33225, - "nodeType": "ErrorDefinition", - "src": "313:37:39", - "nodes": [], - "errorSelector": "c7c233de", - "name": "UnlockFacet__AlreadyUnlocked", - "nameLocation": "319:28:39", - "parameters": { - "id": 33224, - "nodeType": "ParameterList", - "parameters": [], - "src": "347:2:39" - } - }, - { - "id": 33227, - "nodeType": "ErrorDefinition", - "src": "351:41:39", - "nodes": [], - "errorSelector": "88673013", - "name": "UnlockFacet__InvalidFeeReceivers", - "nameLocation": "357:32:39", - "parameters": { - "id": 33226, - "nodeType": "ParameterList", - "parameters": [], - "src": "389:2:39" - } - }, - { - "id": 33229, - "nodeType": "ErrorDefinition", - "src": "393:35:39", - "nodes": [], - "errorSelector": "f1ddec39", - "name": "UnlockFacet__InvalidUnlock", - "nameLocation": "399:26:39", - "parameters": { - "id": 33228, - "nodeType": "ParameterList", - "parameters": [], - "src": "425:2:39" - } - }, - { - "id": 33529, - "nodeType": "ContractDefinition", - "src": "430:3148:39", - "nodes": [ - { - "id": 33240, - "nodeType": "EventDefinition", - "src": "542:98:39", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 33230, - "nodeType": "StructuredDocumentation", - "src": "457:80:39", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b", - "name": "Unlocked", - "nameLocation": "548:8:39", - "parameters": { - "id": 33239, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33232, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "573:8:39", - "nodeType": "VariableDeclaration", - "scope": 33240, - "src": "557:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33231, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "557:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33234, - "indexed": true, - "mutability": "mutable", - "name": "user", - "nameLocation": "599:4:39", - "nodeType": "VariableDeclaration", - "scope": 33240, - "src": "583:20:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 33233, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "583:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33236, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "613:6:39", - "nodeType": "VariableDeclaration", - "scope": 33240, - "src": "605:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33235, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "605:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33238, - "indexed": false, - "mutability": "mutable", - "name": "unlockFee", - "nameLocation": "629:9:39", - "nodeType": "VariableDeclaration", - "scope": 33240, - "src": "621:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33237, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "621:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "556:83:39" - } - }, - { - "id": 33243, - "nodeType": "VariableDeclaration", - "src": "646:12:39", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "657:1:39", - "scope": 33529, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 33242, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33241, - "name": "AppStorage", - "nameLocations": [ - "646:10:39" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "646:10:39" - }, - "referencedDeclaration": 33814, - "src": "646:10:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 33248, - "nodeType": "VariableDeclaration", - "src": "664:51:39", - "nodes": [], - "constant": true, - "functionSelector": "6e99d52f", - "mutability": "constant", - "name": "COOLDOWN_PERIOD", - "nameLocation": "688:15:39", - "scope": 33529, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33244, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "664:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "commonType": { - "typeIdentifier": "t_rational_259200_by_1", - "typeString": "int_const 259200" - }, - "id": 33247, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "3732", - "id": 33245, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "706:2:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_72_by_1", - "typeString": "int_const 72" - }, - "value": "72" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "33363030", - "id": 33246, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "711:4:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_3600_by_1", - "typeString": "int_const 3600" - }, - "value": "3600" - }, - "src": "706:9:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_259200_by_1", - "typeString": "int_const 259200" - } - }, - "visibility": "public" - }, - { - "id": 33413, - "nodeType": "FunctionDefinition", - "src": "734:1656:39", - "nodes": [], - "body": { - "id": 33412, - "nodeType": "Block", - "src": "776:1614:39", - "nodes": [], - "statements": [ - { - "assignments": [ - 33254 - ], - "declarations": [ - { - "constant": false, - "id": 33254, - "mutability": "mutable", - "name": "_currentSeasonId", - "nameLocation": "794:16:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "786:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33253, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "786:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33257, - "initialValue": { - "expression": { - "id": 33255, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "813:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33256, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "815:15:39", - "memberName": "currentSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33709, - "src": "813:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "786:44:39" - }, - { - "assignments": [ - 33260 - ], - "declarations": [ - { - "constant": false, - "id": 33260, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "857:9:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "840:26:39", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 33259, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33258, - "name": "UserData", - "nameLocations": [ - "840:8:39" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "840:8:39" - }, - "referencedDeclaration": 33698, - "src": "840:8:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 33268, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 33261, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "869:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33262, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "871:9:39", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "869:11:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 33264, - "indexExpression": { - "id": 33263, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33254, - "src": "881:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "869:29:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 33267, - "indexExpression": { - "expression": { - "id": 33265, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "899:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "903:6:39", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "899:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "869:41:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "840:70:39" - }, - { - "assignments": [ - 33271 - ], - "declarations": [ - { - "constant": false, - "id": 33271, - "mutability": "mutable", - "name": "_currentSeason", - "nameLocation": "935:14:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "920:29:39", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 33270, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33269, - "name": "Season", - "nameLocations": [ - "920:6:39" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "920:6:39" - }, - "referencedDeclaration": 33675, - "src": "920:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "id": 33276, - "initialValue": { - "baseExpression": { - "expression": { - "id": 33272, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "952:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33273, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "954:7:39", - "memberName": "seasons", - "nodeType": "MemberAccess", - "referencedDeclaration": 33716, - "src": "952:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Season_$33675_storage_$", - "typeString": "mapping(uint256 => struct Season storage ref)" - } - }, - "id": 33275, - "indexExpression": { - "id": 33274, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33254, - "src": "962:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "952:27:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage", - "typeString": "struct Season storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "920:59:39" - }, - { - "assignments": [ - 33278 - ], - "declarations": [ - { - "constant": false, - "id": 33278, - "mutability": "mutable", - "name": "_seasonEndTimestamp", - "nameLocation": "997:19:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "989:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33277, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "989:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33281, - "initialValue": { - "expression": { - "id": 33279, - "name": "_currentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33271, - "src": "1019:14:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 33280, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1034:12:39", - "memberName": "endTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33664, - "src": "1019:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "989:57:39" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 33282, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33260, - "src": "1088:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33283, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1098:15:39", - "memberName": "unlockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33691, - "src": "1088:25:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 33284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1117:1:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1088:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33290, - "nodeType": "IfStatement", - "src": "1084:98:39", - "trueBody": { - "id": 33289, - "nodeType": "Block", - "src": "1120:62:39", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33286, - "name": "UnlockFacet__AlreadyUnlocked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33225, - "src": "1141:28:39", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33287, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1141:30:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33288, - "nodeType": "RevertStatement", - "src": "1134:37:39" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 33291, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33260, - "src": "1195:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33292, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1205:13:39", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "1195:23:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 33293, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33250, - "src": "1221:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1195:33:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33299, - "nodeType": "IfStatement", - "src": "1191:99:39", - "trueBody": { - "id": 33298, - "nodeType": "Block", - "src": "1230:60:39", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33295, - "name": "UnlockFacet__InvalidAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33223, - "src": "1251:26:39", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33296, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1251:28:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33297, - "nodeType": "RevertStatement", - "src": "1244:35:39" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 33301, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33250, - "src": "1313:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 33302, - "name": "_seasonEndTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33278, - "src": "1322:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 33303, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33260, - "src": "1343:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - { - "id": 33304, - "name": "_currentSeason", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33271, - "src": "1354:14:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - }, - { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - ], - "id": 33300, - "name": "_deductPoints", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33466, - "src": "1299:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_struct$_UserData_$33698_storage_ptr_$_t_struct$_Season_$33675_storage_ptr_$returns$__$", - "typeString": "function (uint256,uint256,struct UserData storage pointer,struct Season storage pointer)" - } - }, - "id": 33305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1299:70:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33306, - "nodeType": "ExpressionStatement", - "src": "1299:70:39" - }, - { - "assignments": [ - 33308 - ], - "declarations": [ - { - "constant": false, - "id": 33308, - "mutability": "mutable", - "name": "_timeDiscount", - "nameLocation": "1388:13:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1380:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33307, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1380:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33310, - "initialValue": { - "hexValue": "30", - "id": 33309, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1404:1:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1380:25:39" - }, - { - "assignments": [ - 33312 - ], - "declarations": [ - { - "constant": false, - "id": 33312, - "mutability": "mutable", - "name": "_feeDiscount", - "nameLocation": "1423:12:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1415:20:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33311, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1415:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33314, - "initialValue": { - "hexValue": "30", - "id": 33313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1438:1:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1415:24:39" - }, - { - "assignments": [ - 33316, - 33318 - ], - "declarations": [ - { - "constant": false, - "id": 33316, - "mutability": "mutable", - "name": "isStratosphereMember", - "nameLocation": "1455:20:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1450:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 33315, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1450:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33318, - "mutability": "mutable", - "name": "tier", - "nameLocation": "1485:4:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1477:12:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33317, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1477:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33325, - "initialValue": { - "arguments": [ - { - "id": 33321, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "1518:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - { - "expression": { - "id": 33322, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "1521:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1525:6:39", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "1521:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 33319, - "name": "LStratosphere", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33937, - "src": "1493:13:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LStratosphere_$33937_$", - "typeString": "type(library LStratosphere)" - } - }, - "id": 33320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1507:10:39", - "memberName": "getDetails", - "nodeType": "MemberAccess", - "referencedDeclaration": 33936, - "src": "1493:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_struct$_AppStorage_$33814_storage_ptr_$_t_address_$returns$_t_bool_$_t_uint8_$", - "typeString": "function (struct AppStorage storage pointer,address) view returns (bool,uint8)" - } - }, - "id": 33324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1493:39:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint8_$", - "typeString": "tuple(bool,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1449:83:39" - }, - { - "condition": { - "id": 33326, - "name": "isStratosphereMember", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33316, - "src": "1546:20:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33342, - "nodeType": "IfStatement", - "src": "1542:196:39", - "trueBody": { - "id": 33341, - "nodeType": "Block", - "src": "1568:170:39", - "statements": [ - { - "expression": { - "id": 33332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 33327, - "name": "_timeDiscount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33308, - "src": "1582:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "expression": { - "id": 33328, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "1598:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33329, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1600:45:39", - "memberName": "unlockTimestampDiscountForStratosphereMembers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33730, - "src": "1598:47:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 33331, - "indexExpression": { - "id": 33330, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33318, - "src": "1646:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1598:53:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1582:69:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33333, - "nodeType": "ExpressionStatement", - "src": "1582:69:39" - }, - { - "expression": { - "id": 33339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 33334, - "name": "_feeDiscount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33312, - "src": "1665:12:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "expression": { - "id": 33335, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "1680:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33336, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1682:39:39", - "memberName": "unlockFeeDiscountForStratosphereMembers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33734, - "src": "1680:41:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", - "typeString": "mapping(uint256 => uint256)" - } - }, - "id": 33338, - "indexExpression": { - "id": 33337, - "name": "tier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33318, - "src": "1722:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1680:47:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1665:62:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33340, - "nodeType": "ExpressionStatement", - "src": "1665:62:39" - } - ] - } - }, - { - "assignments": [ - 33344 - ], - "declarations": [ - { - "constant": false, - "id": 33344, - "mutability": "mutable", - "name": "_unlockFeeFromState", - "nameLocation": "1755:19:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1747:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33343, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1747:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33347, - "initialValue": { - "expression": { - "id": 33345, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "1777:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33346, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1779:9:39", - "memberName": "unlockFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 33726, - "src": "1777:11:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1747:41:39" - }, - { - "assignments": [ - 33349 - ], - "declarations": [ - { - "constant": false, - "id": 33349, - "mutability": "mutable", - "name": "_fee", - "nameLocation": "1806:4:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1798:12:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33348, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1798:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33362, - "initialValue": { - "arguments": [ - { - "id": 33352, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33250, - "src": "1850:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33353, - "name": "_unlockFeeFromState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33344, - "src": "1871:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33354, - "name": "_feeDiscount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33312, - "src": "1894:12:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 33355, - "name": "_unlockFeeFromState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33344, - "src": "1909:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1894:34:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 33357, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1893:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "3130303030", - "id": 33358, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1932:5:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - "src": "1893:44:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1871:66:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 33350, - "name": "LPercentages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33886, - "src": "1813:12:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LPercentages_$33886_$", - "typeString": "type(library LPercentages)" - } - }, - "id": 33351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1826:10:39", - "memberName": "percentage", - "nodeType": "MemberAccess", - "referencedDeclaration": 33885, - "src": "1813:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 33361, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1813:134:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1798:149:39" - }, - { - "expression": { - "arguments": [ - { - "id": 33364, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33349, - "src": "1973:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 33363, - "name": "_applyUnlockFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33528, - "src": "1957:15:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } - }, - "id": 33365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1957:21:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33366, - "nodeType": "ExpressionStatement", - "src": "1957:21:39" - }, - { - "assignments": [ - 33368 - ], - "declarations": [ - { - "constant": false, - "id": 33368, - "mutability": "mutable", - "name": "_unlockTimestamp", - "nameLocation": "1996:16:39", - "nodeType": "VariableDeclaration", - "scope": 33412, - "src": "1988:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1988:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33380, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 33369, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "2015:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 33370, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2021:9:39", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2015:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 33371, - "name": "COOLDOWN_PERIOD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33248, - "src": "2033:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2015:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33373, - "name": "_timeDiscount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33308, - "src": "2052:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 33374, - "name": "COOLDOWN_PERIOD", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33248, - "src": "2068:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2052:31:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 33376, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2051:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "3130303030", - "id": 33377, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2087:5:39", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - "src": "2051:41:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2015:77:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1988:104:39" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33381, - "name": "_unlockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33368, - "src": "2107:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 33382, - "name": "_seasonEndTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33278, - "src": "2127:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2107:39:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33388, - "nodeType": "IfStatement", - "src": "2103:105:39", - "trueBody": { - "id": 33387, - "nodeType": "Block", - "src": "2148:60:39", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33384, - "name": "UnlockFacet__InvalidUnlock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33229, - "src": "2169:26:39", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2169:28:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33386, - "nodeType": "RevertStatement", - "src": "2162:35:39" - } - ] - } - }, - { - "expression": { - "id": 33396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33389, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33260, - "src": "2218:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33391, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2228:12:39", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "2218:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33392, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33250, - "src": "2245:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 33393, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33349, - "src": "2255:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2245:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 33395, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2244:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2218:42:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33397, - "nodeType": "ExpressionStatement", - "src": "2218:42:39" - }, - { - "expression": { - "id": 33402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33398, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33260, - "src": "2270:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33400, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2280:15:39", - "memberName": "unlockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33691, - "src": "2270:25:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 33401, - "name": "_unlockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33368, - "src": "2298:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2270:44:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33403, - "nodeType": "ExpressionStatement", - "src": "2270:44:39" - }, - { - "eventCall": { - "arguments": [ - { - "id": 33405, - "name": "_currentSeasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33254, - "src": "2339:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 33406, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2357:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2361:6:39", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2357:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 33408, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33250, - "src": "2369:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 33409, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33349, - "src": "2378:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 33404, - "name": "Unlocked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33240, - "src": "2330:8:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256,uint256)" - } - }, - "id": 33410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "2330:53:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33411, - "nodeType": "EmitStatement", - "src": "2325:58:39" - } - ] - }, - "functionSelector": "6198e339", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "unlock", - "nameLocation": "743:6:39", - "parameters": { - "id": 33251, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33250, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "758:7:39", - "nodeType": "VariableDeclaration", - "scope": 33413, - "src": "750:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33249, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "750:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "749:17:39" - }, - "returnParameters": { - "id": 33252, - "nodeType": "ParameterList", - "parameters": [], - "src": "776:0:39" - }, - "scope": 33529, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "id": 33466, - "nodeType": "FunctionDefinition", - "src": "2482:482:39", - "nodes": [], - "body": { - "id": 33465, - "nodeType": "Block", - "src": "2650:314:39", - "nodes": [], - "statements": [ - { - "assignments": [ - 33428 - ], - "declarations": [ - { - "constant": false, - "id": 33428, - "mutability": "mutable", - "name": "_daysUntilSeasonEnd", - "nameLocation": "2668:19:39", - "nodeType": "VariableDeclaration", - "scope": 33465, - "src": "2660:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33427, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2660:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33436, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33429, - "name": "_seasonEndTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33418, - "src": "2691:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 33430, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "2713:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 33431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "2719:9:39", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "2713:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2691:37:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 33433, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2690:39:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "31", - "id": 33434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2732:6:39", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "2690:48:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2660:78:39" - }, - { - "expression": { - "id": 33441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33437, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33421, - "src": "2748:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33439, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2758:13:39", - "memberName": "depositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33677, - "src": "2748:23:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 33440, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33416, - "src": "2775:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2748:34:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33442, - "nodeType": "ExpressionStatement", - "src": "2748:34:39" - }, - { - "expression": { - "id": 33449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33443, - "name": "_userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33421, - "src": "2792:9:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33445, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2802:13:39", - "memberName": "depositPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33681, - "src": "2792:23:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33446, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33416, - "src": "2819:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 33447, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33428, - "src": "2829:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2819:29:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2792:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33450, - "nodeType": "ExpressionStatement", - "src": "2792:56:39" - }, - { - "expression": { - "id": 33455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33451, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33424, - "src": "2858:7:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 33453, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2866:18:39", - "memberName": "totalDepositAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33670, - "src": "2858:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 33454, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33416, - "src": "2888:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2858:37:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33456, - "nodeType": "ExpressionStatement", - "src": "2858:37:39" - }, - { - "expression": { - "id": 33463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33457, - "name": "_season", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33424, - "src": "2905:7:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season storage pointer" - } - }, - "id": 33459, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "2913:11:39", - "memberName": "totalPoints", - "nodeType": "MemberAccess", - "referencedDeclaration": 33674, - "src": "2905:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33460, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33416, - "src": "2928:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 33461, - "name": "_daysUntilSeasonEnd", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33428, - "src": "2938:19:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2928:29:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2905:52:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33464, - "nodeType": "ExpressionStatement", - "src": "2905:52:39" - } - ] - }, - "documentation": { - "id": 33414, - "nodeType": "StructuredDocumentation", - "src": "2396:81:39", - "text": "@notice deduct points\n @param _amount Amount of token to deduct points" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_deductPoints", - "nameLocation": "2491:13:39", - "parameters": { - "id": 33425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33416, - "mutability": "mutable", - "name": "_amount", - "nameLocation": "2522:7:39", - "nodeType": "VariableDeclaration", - "scope": 33466, - "src": "2514:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33415, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2514:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33418, - "mutability": "mutable", - "name": "_seasonEndTimestamp", - "nameLocation": "2547:19:39", - "nodeType": "VariableDeclaration", - "scope": 33466, - "src": "2539:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33417, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2539:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33421, - "mutability": "mutable", - "name": "_userData", - "nameLocation": "2593:9:39", - "nodeType": "VariableDeclaration", - "scope": 33466, - "src": "2576:26:39", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 33420, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33419, - "name": "UserData", - "nameLocations": [ - "2576:8:39" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "2576:8:39" - }, - "referencedDeclaration": 33698, - "src": "2576:8:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33424, - "mutability": "mutable", - "name": "_season", - "nameLocation": "2627:7:39", - "nodeType": "VariableDeclaration", - "scope": 33466, - "src": "2612:22:39", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - }, - "typeName": { - "id": 33423, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33422, - "name": "Season", - "nameLocations": [ - "2612:6:39" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33675, - "src": "2612:6:39" - }, - "referencedDeclaration": 33675, - "src": "2612:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Season_$33675_storage_ptr", - "typeString": "struct Season" - } - }, - "visibility": "internal" - } - ], - "src": "2504:136:39" - }, - "returnParameters": { - "id": 33426, - "nodeType": "ParameterList", - "parameters": [], - "src": "2650:0:39" - }, - "scope": 33529, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "id": 33528, - "nodeType": "FunctionDefinition", - "src": "3035:541:39", - "nodes": [], - "body": { - "id": 33527, - "nodeType": "Block", - "src": "3083:493:39", - "nodes": [], - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "expression": { - "id": 33472, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3097:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33473, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3099:18:39", - "memberName": "unlockFeeReceivers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33749, - "src": "3097:20:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 33474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3118:6:39", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3097:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "expression": { - "id": 33475, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3128:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33476, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3130:24:39", - "memberName": "unlockFeeReceiversShares", - "nodeType": "MemberAccess", - "referencedDeclaration": 33752, - "src": "3128:26:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage", - "typeString": "uint256[] storage ref" - } - }, - "id": 33477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3155:6:39", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3128:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3097:64:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33483, - "nodeType": "IfStatement", - "src": "3093:136:39", - "trueBody": { - "id": 33482, - "nodeType": "Block", - "src": "3163:66:39", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33479, - "name": "UnlockFacet__InvalidFeeReceivers", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33227, - "src": "3184:32:39", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3184:34:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33481, - "nodeType": "RevertStatement", - "src": "3177:41:39" - } - ] - } - }, - { - "assignments": [ - 33485 - ], - "declarations": [ - { - "constant": false, - "id": 33485, - "mutability": "mutable", - "name": "_length", - "nameLocation": "3246:7:39", - "nodeType": "VariableDeclaration", - "scope": 33527, - "src": "3238:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33484, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3238:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33489, - "initialValue": { - "expression": { - "expression": { - "id": 33486, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3256:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33487, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3258:18:39", - "memberName": "unlockFeeReceivers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33749, - "src": "3256:20:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 33488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3277:6:39", - "memberName": "length", - "nodeType": "MemberAccess", - "src": "3256:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3238:45:39" - }, - { - "body": { - "id": 33525, - "nodeType": "Block", - "src": "3324:246:39", - "statements": [ - { - "assignments": [ - 33497 - ], - "declarations": [ - { - "constant": false, - "id": 33497, - "mutability": "mutable", - "name": "_share", - "nameLocation": "3346:6:39", - "nodeType": "VariableDeclaration", - "scope": 33525, - "src": "3338:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3338:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33506, - "initialValue": { - "arguments": [ - { - "id": 33500, - "name": "_fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33469, - "src": "3379:4:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "baseExpression": { - "expression": { - "id": 33501, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3385:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33502, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3387:24:39", - "memberName": "unlockFeeReceiversShares", - "nodeType": "MemberAccess", - "referencedDeclaration": 33752, - "src": "3385:26:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage", - "typeString": "uint256[] storage ref" - } - }, - "id": 33504, - "indexExpression": { - "id": 33503, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33491, - "src": "3412:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3385:29:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 33498, - "name": "LPercentages", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33886, - "src": "3355:12:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LPercentages_$33886_$", - "typeString": "type(library LPercentages)" - } - }, - "id": 33499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3368:10:39", - "memberName": "percentage", - "nodeType": "MemberAccess", - "referencedDeclaration": 33885, - "src": "3355:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 33505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "3355:60:39", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3338:77:39" - }, - { - "expression": { - "id": 33519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 33507, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3429:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33515, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3431:18:39", - "memberName": "pendingWithdrawals", - "nodeType": "MemberAccess", - "referencedDeclaration": 33791, - "src": "3429:20:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", - "typeString": "mapping(address => mapping(address => uint256))" - } - }, - "id": 33516, - "indexExpression": { - "baseExpression": { - "expression": { - "id": 33509, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3450:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33510, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3452:18:39", - "memberName": "unlockFeeReceivers", - "nodeType": "MemberAccess", - "referencedDeclaration": 33749, - "src": "3450:20:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 33512, - "indexExpression": { - "id": 33511, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33491, - "src": "3471:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3450:23:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3429:45:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 33517, - "indexExpression": { - "expression": { - "id": 33513, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33243, - "src": "3475:1:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33514, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "3477:12:39", - "memberName": "depositToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33803, - "src": "3475:14:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3429:61:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 33518, - "name": "_share", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33497, - "src": "3494:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3429:71:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33520, - "nodeType": "ExpressionStatement", - "src": "3429:71:39" - }, - { - "id": 33524, - "nodeType": "UncheckedBlock", - "src": "3514:46:39", - "statements": [ - { - "expression": { - "id": 33522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "3542:3:39", - "subExpression": { - "id": 33521, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33491, - "src": "3542:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33523, - "nodeType": "ExpressionStatement", - "src": "3542:3:39" - } - ] - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33495, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33493, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33491, - "src": "3309:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 33494, - "name": "_length", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33485, - "src": "3313:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3309:11:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33526, - "initializationExpression": { - "assignments": [ - 33491 - ], - "declarations": [ - { - "constant": false, - "id": 33491, - "mutability": "mutable", - "name": "i", - "nameLocation": "3306:1:39", - "nodeType": "VariableDeclaration", - "scope": 33526, - "src": "3298:9:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3298:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33492, - "nodeType": "VariableDeclarationStatement", - "src": "3298:9:39" - }, - "nodeType": "ForStatement", - "src": "3293:277:39" - } - ] - }, - "documentation": { - "id": 33467, - "nodeType": "StructuredDocumentation", - "src": "2970:60:39", - "text": "@notice Apply deposit fee\n @param _fee Fee amount" - }, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_applyUnlockFee", - "nameLocation": "3044:15:39", - "parameters": { - "id": 33470, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33469, - "mutability": "mutable", - "name": "_fee", - "nameLocation": "3068:4:39", - "nodeType": "VariableDeclaration", - "scope": 33528, - "src": "3060:12:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33468, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3060:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3059:14:39" - }, - "returnParameters": { - "id": 33471, - "nodeType": "ParameterList", - "parameters": [], - "src": "3083:0:39" - }, - "scope": 33529, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "UnlockFacet", - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "linearizedBaseContracts": [ - 33529 - ], - "name": "UnlockFacet", - "nameLocation": "439:11:39", - "scope": 33530, - "usedErrors": [ - 33223, - 33225, - 33227, - 33229 - ] - } - ], - "license": "MIT" - }, - "id": 39 -} \ No newline at end of file diff --git a/abis/WithdrawFacet.json b/abis/WithdrawFacet.json new file mode 100644 index 0000000..185de0a --- /dev/null +++ b/abis/WithdrawFacet.json @@ -0,0 +1,44 @@ +[ + { + "inputs": [], + "name": "WithdrawFacet__InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "WithdrawFacet__UnlockNotMatured", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawUnlockedVPND", + "type": "event" + }, + { + "inputs": [], + "name": "withdrawUnlocked", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/WithdrawFacet.sol/WithdrawFacet.json b/abis/WithdrawFacet.sol/WithdrawFacet.json deleted file mode 100644 index f0e3c1f..0000000 --- a/abis/WithdrawFacet.sol/WithdrawFacet.json +++ /dev/null @@ -1,1527 +0,0 @@ -{ - "abi": [ - { - "inputs": [], - "name": "WithdrawFacet__InsufficientBalance", - "type": "error" - }, - { - "inputs": [], - "name": "WithdrawFacet__UnlockNotMatured", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "seasonId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "WithdrawUnlockedVPND", - "type": "event" - }, - { - "inputs": [], - "name": "withdrawUnlocked", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b336000818152600b6020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea264697066735822122053fbca539ff403bc968439a698c09d3286bc145442828987b36af742b02b4de564736f6c63430008110033", - "sourceMap": "416:1198:40:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b336000818152600b6020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea264697066735822122053fbca539ff403bc968439a698c09d3286bc145442828987b36af742b02b4de564736f6c63430008110033", - "sourceMap": "416:1198:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;907:705;;;:::i;:::-;;;969:10;954:12;1008:29;;;:23;:29;;;;;;;;;1076:21;;;:11;:21;;;;;:27;;;;;;;;1130:21;;;;1187:24;;;;1008:29;;1076:27;;1130:21;;1225:11;;;1221:85;;1259:36;;;;;;;;;;;;;;1221:85;1337:15;1319;:33;1315:104;;;1375:33;;;;;;;;;;;;;;1315:104;1452:1;1428:21;;;:25;;;1463:24;;;:28;1508:14;;1501:45;;;;;1508:14;206:55:59;;;1501:45:40;;;188:74:59;278:18;;;271:34;;;1508:14:40;;;;1501:31;;161:18:59;;1501:45:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1592:4;1561:44;;1582:8;1561:44;1598:6;1561:44;;;;744:25:59;;732:2;717:18;;598:177;1561:44:40;;;;;;;;944:668;;;;;907:705::o;316:277:59:-;383:6;436:2;424:9;415:7;411:23;407:32;404:52;;;452:1;449;442:12;404:52;484:9;478:16;537:5;530:13;523:21;516:5;513:32;503:60;;559:1;556;549:12;503:60;582:5;316:277;-1:-1:-1;;;316:277:59:o", - "linkReferences": {} - }, - "methodIdentifiers": { - "withdrawUnlocked()": "6fcd112b" - }, - "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"WithdrawFacet__InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawFacet__UnlockNotMatured\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"seasonId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawUnlockedVPND\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"withdrawUnlocked\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Utilizes 'LDiamond', 'AppStorage' and 'IERC20'\",\"kind\":\"dev\",\"methods\":{\"withdrawUnlocked()\":{\"details\":\"User cannot participate in new seasons until they withdraw\"}},\"title\":\"WithdrawFacet\",\"version\":1},\"userdoc\":{\"events\":{\"WithdrawUnlockedVPND(uint256,address,uint256)\":{\"notice\":\"Ordering of the events are according to their relevance in the facet\"}},\"kind\":\"user\",\"methods\":{\"withdrawUnlocked()\":{\"notice\":\"Withdraw prematurely unlocked VPND\"}},\"notice\":\"Facet in charge of withdrawing unlocked VPND\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/facets/WithdrawFacet.sol\":\"WithdrawFacet\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":clouds/=lib/clouds/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat-deploy/=node_modules/hardhat-deploy/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/clouds/src/diamond/LDiamond.sol\":{\"keccak256\":\"0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779\",\"dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML\"]},\"lib/clouds/src/interfaces/IDiamondCut.sol\":{\"keccak256\":\"0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7\",\"dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1\",\"dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ\"]},\"src/facets/WithdrawFacet.sol\":{\"keccak256\":\"0xf6e47e9971eefbd6e51d24dc2f850e1a77f46e90d1a1d3695b03d9957573f4c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40cbba7f3af77163931b5452514a4a5fe0e30455a3665bff776c04866d5a8310\",\"dweb:/ipfs/Qmeo4fZdGxxo1nyGcCoHXu7egssCJQNnJwHr5TkujNDZYx\"]},\"src/libraries/AppStorage.sol\":{\"keccak256\":\"0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6\",\"dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD\"]}},\"version\":1}", - "metadata": { - "compiler": { - "version": "0.8.17+commit.8df45f5f" - }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [], - "type": "error", - "name": "WithdrawFacet__InsufficientBalance" - }, - { - "inputs": [], - "type": "error", - "name": "WithdrawFacet__UnlockNotMatured" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "seasonId", - "type": "uint256", - "indexed": true - }, - { - "internalType": "address", - "name": "to", - "type": "address", - "indexed": true - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256", - "indexed": false - } - ], - "type": "event", - "name": "WithdrawUnlockedVPND", - "anonymous": false - }, - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "function", - "name": "withdrawUnlocked" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "withdrawUnlocked()": { - "details": "User cannot participate in new seasons until they withdraw" - } - }, - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "withdrawUnlocked()": { - "notice": "Withdraw prematurely unlocked VPND" - } - }, - "version": 1 - } - }, - "settings": { - "remappings": [ - ":clouds/=lib/clouds/src/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat-deploy/=node_modules/hardhat-deploy/", - ":hardhat/=node_modules/hardhat/", - ":openzeppelin-contracts/=lib/openzeppelin-contracts/", - ":openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", - ":solmate/=lib/solmate/src/" - ], - "optimizer": { - "enabled": true, - "runs": 1000000 - }, - "metadata": { - "bytecodeHash": "ipfs" - }, - "compilationTarget": { - "src/facets/WithdrawFacet.sol": "WithdrawFacet" - }, - "libraries": {} - }, - "sources": { - "lib/clouds/src/diamond/LDiamond.sol": { - "keccak256": "0xd0ab4069c2fc4da721d1525f1ff78be96cdb3339c5e7f19a3541157e86a5fb32", - "urls": [ - "bzz-raw://71f9e1d94d81f9326e444bf72347758f5805ea987484acfd910b6d3d834a0779", - "dweb:/ipfs/QmQGuYfQfKJw9Uz25tq8uVe9yT65PJbgUSTmucaXDxdgML" - ], - "license": "MIT" - }, - "lib/clouds/src/interfaces/IDiamondCut.sol": { - "keccak256": "0x01135c8025e05a654cf1c25f720d283622917b312b17d280968a6d97d8478dd1", - "urls": [ - "bzz-raw://696392213dbccdb5d4857bd45a2b1225d1f98c776ec0e32a7855c7ec04b1b3d7", - "dweb:/ipfs/QmWPXAmJ3MPrUeFqt2TPStL1AHqjgdGd54sucx6b4iN14C" - ], - "license": "MIT" - }, - "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x00c839ff53d07d19db2e7cfa1e5133f9ee90a8d64b0e2e57f50446a2d1a3a0e0", - "urls": [ - "bzz-raw://3dac621d015a68a5251b1e5d41dda0faf252699bf6e8bcf46a958b29964d9dd1", - "dweb:/ipfs/QmP9axjgZv4cezAhALoTemM62sdLtMDJ9MGTxECnNwHgSJ" - ], - "license": "MIT" - }, - "src/facets/WithdrawFacet.sol": { - "keccak256": "0xf6e47e9971eefbd6e51d24dc2f850e1a77f46e90d1a1d3695b03d9957573f4c6", - "urls": [ - "bzz-raw://40cbba7f3af77163931b5452514a4a5fe0e30455a3665bff776c04866d5a8310", - "dweb:/ipfs/Qmeo4fZdGxxo1nyGcCoHXu7egssCJQNnJwHr5TkujNDZYx" - ], - "license": "MIT" - }, - "src/libraries/AppStorage.sol": { - "keccak256": "0xfbb44a704f1fbcf5c7030e85136a4625c73092556a47b658fc5c311819041f19", - "urls": [ - "bzz-raw://cd9adc8b0966123329e6a1df21e05e7bf9ece4f80d3b99f907ee2631bc60ede6", - "dweb:/ipfs/QmaAyV7bZ7dmUgHHgSN8qUvMZwxwNw366AJqvVHZbcDKsD" - ], - "license": "MIT" - } - }, - "version": 1 - }, - "ast": { - "absolutePath": "src/facets/WithdrawFacet.sol", - "id": 33634, - "exportedSymbols": { - "AppStorage": [ - 33814 - ], - "IDiamondCut": [ - 892 - ], - "IERC20": [ - 30146 - ], - "LDiamond": [ - 852 - ], - "LDiamond__AddressMustBeZero": [ - 4 - ], - "LDiamond__FunctionAlreadyExists": [ - 6 - ], - "LDiamond__ImmutableFunction": [ - 8 - ], - "LDiamond__IncorrectAction": [ - 10 - ], - "LDiamond__InexistentFacetCode": [ - 12 - ], - "LDiamond__InexistentFunction": [ - 14 - ], - "LDiamond__InitializationFailed": [ - 20 - ], - "LDiamond__InvalidAddressZero": [ - 22 - ], - "LDiamond__InvalidReplacementWithSameFunction": [ - 24 - ], - "LDiamond__NoSelectors": [ - 26 - ], - "LDiamond__OnlyOwner": [ - 28 - ], - "Season": [ - 33675 - ], - "UserData": [ - 33698 - ], - "WithdrawFacet": [ - 33633 - ], - "WithdrawFacet__InsufficientBalance": [ - 33536 - ], - "WithdrawFacet__UnlockNotMatured": [ - 33538 - ] - }, - "nodeType": "SourceUnit", - "src": "32:1583:40", - "nodes": [ - { - "id": 33531, - "nodeType": "PragmaDirective", - "src": "32:24:40", - "nodes": [], - "literals": [ - "solidity", - "^", - "0.8", - ".17" - ] - }, - { - "id": 33532, - "nodeType": "ImportDirective", - "src": "58:37:40", - "nodes": [], - "absolutePath": "lib/clouds/src/diamond/LDiamond.sol", - "file": "clouds/diamond/LDiamond.sol", - "nameLocation": "-1:-1:-1", - "scope": 33634, - "sourceUnit": 853, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33533, - "nodeType": "ImportDirective", - "src": "96:55:40", - "nodes": [], - "absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol", - "file": "openzeppelin/contracts/token/ERC20/IERC20.sol", - "nameLocation": "-1:-1:-1", - "scope": 33634, - "sourceUnit": 30147, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33534, - "nodeType": "ImportDirective", - "src": "153:37:40", - "nodes": [], - "absolutePath": "src/libraries/AppStorage.sol", - "file": "../libraries/AppStorage.sol", - "nameLocation": "-1:-1:-1", - "scope": 33634, - "sourceUnit": 33815, - "symbolAliases": [], - "unitAlias": "" - }, - { - "id": 33536, - "nodeType": "ErrorDefinition", - "src": "192:43:40", - "nodes": [], - "errorSelector": "1138da82", - "name": "WithdrawFacet__InsufficientBalance", - "nameLocation": "198:34:40", - "parameters": { - "id": 33535, - "nodeType": "ParameterList", - "parameters": [], - "src": "232:2:40" - } - }, - { - "id": 33538, - "nodeType": "ErrorDefinition", - "src": "236:40:40", - "nodes": [], - "errorSelector": "6a3fb105", - "name": "WithdrawFacet__UnlockNotMatured", - "nameLocation": "242:31:40", - "parameters": { - "id": 33537, - "nodeType": "ParameterList", - "parameters": [], - "src": "273:2:40" - } - }, - { - "id": 33633, - "nodeType": "ContractDefinition", - "src": "416:1198:40", - "nodes": [ - { - "id": 33542, - "nodeType": "VariableDeclaration", - "src": "445:12:40", - "nodes": [], - "constant": false, - "mutability": "mutable", - "name": "s", - "nameLocation": "456:1:40", - "scope": 33633, - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage" - }, - "typeName": { - "id": 33541, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33540, - "name": "AppStorage", - "nameLocations": [ - "445:10:40" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33814, - "src": "445:10:40" - }, - "referencedDeclaration": 33814, - "src": "445:10:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage_ptr", - "typeString": "struct AppStorage" - } - }, - "visibility": "internal" - }, - { - "id": 33551, - "nodeType": "EventDefinition", - "src": "607:89:40", - "nodes": [], - "anonymous": false, - "documentation": { - "id": 33543, - "nodeType": "StructuredDocumentation", - "src": "522:80:40", - "text": "@notice Ordering of the events are according to their relevance in the facet" - }, - "eventSelector": "b43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85", - "name": "WithdrawUnlockedVPND", - "nameLocation": "613:20:40", - "parameters": { - "id": 33550, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 33545, - "indexed": true, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "650:8:40", - "nodeType": "VariableDeclaration", - "scope": 33551, - "src": "634:24:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33544, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "634:7:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33547, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nameLocation": "676:2:40", - "nodeType": "VariableDeclaration", - "scope": 33551, - "src": "660:18:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 33546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "660:7:40", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 33549, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nameLocation": "688:6:40", - "nodeType": "VariableDeclaration", - "scope": 33551, - "src": "680:14:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33548, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "680:7:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "633:62:40" - } - }, - { - "id": 33632, - "nodeType": "FunctionDefinition", - "src": "907:705:40", - "nodes": [], - "body": { - "id": 33631, - "nodeType": "Block", - "src": "944:668:40", - "nodes": [], - "statements": [ - { - "assignments": [ - 33556 - ], - "declarations": [ - { - "constant": false, - "id": 33556, - "mutability": "mutable", - "name": "user", - "nameLocation": "962:4:40", - "nodeType": "VariableDeclaration", - "scope": 33631, - "src": "954:12:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 33555, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "954:7:40", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 33559, - "initialValue": { - "expression": { - "id": 33557, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "969:3:40", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 33558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "973:6:40", - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "969:10:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "954:25:40" - }, - { - "assignments": [ - 33561 - ], - "declarations": [ - { - "constant": false, - "id": 33561, - "mutability": "mutable", - "name": "seasonId", - "nameLocation": "997:8:40", - "nodeType": "VariableDeclaration", - "scope": 33631, - "src": "989:16:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33560, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "989:7:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33566, - "initialValue": { - "baseExpression": { - "expression": { - "id": 33562, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33542, - "src": "1008:1:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33563, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1010:21:40", - "memberName": "addressToLastSeasonId", - "nodeType": "MemberAccess", - "referencedDeclaration": 33746, - "src": "1008:23:40", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", - "typeString": "mapping(address => uint256)" - } - }, - "id": 33565, - "indexExpression": { - "id": 33564, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33556, - "src": "1032:4:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1008:29:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "989:48:40" - }, - { - "assignments": [ - 33569 - ], - "declarations": [ - { - "constant": false, - "id": 33569, - "mutability": "mutable", - "name": "userData", - "nameLocation": "1065:8:40", - "nodeType": "VariableDeclaration", - "scope": 33631, - "src": "1048:25:40", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - }, - "typeName": { - "id": 33568, - "nodeType": "UserDefinedTypeName", - "pathNode": { - "id": 33567, - "name": "UserData", - "nameLocations": [ - "1048:8:40" - ], - "nodeType": "IdentifierPath", - "referencedDeclaration": 33698, - "src": "1048:8:40" - }, - "referencedDeclaration": 33698, - "src": "1048:8:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData" - } - }, - "visibility": "internal" - } - ], - "id": 33576, - "initialValue": { - "baseExpression": { - "baseExpression": { - "expression": { - "id": 33570, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33542, - "src": "1076:1:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33571, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1078:9:40", - "memberName": "usersData", - "nodeType": "MemberAccess", - "referencedDeclaration": 33723, - "src": "1076:11:40", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$_$", - "typeString": "mapping(uint256 => mapping(address => struct UserData storage ref))" - } - }, - "id": 33573, - "indexExpression": { - "id": 33572, - "name": "seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33561, - "src": "1088:8:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1076:21:40", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UserData_$33698_storage_$", - "typeString": "mapping(address => struct UserData storage ref)" - } - }, - "id": 33575, - "indexExpression": { - "id": 33574, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33556, - "src": "1098:4:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1076:27:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage", - "typeString": "struct UserData storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1048:55:40" - }, - { - "assignments": [ - 33578 - ], - "declarations": [ - { - "constant": false, - "id": 33578, - "mutability": "mutable", - "name": "amount", - "nameLocation": "1121:6:40", - "nodeType": "VariableDeclaration", - "scope": 33631, - "src": "1113:14:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33577, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1113:7:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33581, - "initialValue": { - "expression": { - "id": 33579, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33569, - "src": "1130:8:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33580, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1139:12:40", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "1130:21:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1113:38:40" - }, - { - "assignments": [ - 33583 - ], - "declarations": [ - { - "constant": false, - "id": 33583, - "mutability": "mutable", - "name": "unlockTimestamp", - "nameLocation": "1169:15:40", - "nodeType": "VariableDeclaration", - "scope": 33631, - "src": "1161:23:40", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 33582, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1161:7:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 33586, - "initialValue": { - "expression": { - "id": 33584, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33569, - "src": "1187:8:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33585, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1196:15:40", - "memberName": "unlockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33691, - "src": "1187:24:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1161:50:40" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33587, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33578, - "src": "1225:6:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 33588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1235:1:40", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1225:11:40", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33594, - "nodeType": "IfStatement", - "src": "1221:85:40", - "trueBody": { - "id": 33593, - "nodeType": "Block", - "src": "1238:68:40", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33590, - "name": "WithdrawFacet__InsufficientBalance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33536, - "src": "1259:34:40", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1259:36:40", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33592, - "nodeType": "RevertStatement", - "src": "1252:43:40" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 33598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 33595, - "name": "unlockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33583, - "src": "1319:15:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 33596, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "1337:5:40", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 33597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1343:9:40", - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "1337:15:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1319:33:40", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33603, - "nodeType": "IfStatement", - "src": "1315:104:40", - "trueBody": { - "id": 33602, - "nodeType": "Block", - "src": "1354:65:40", - "statements": [ - { - "errorCall": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 33599, - "name": "WithdrawFacet__UnlockNotMatured", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33538, - "src": "1375:31:40", - "typeDescriptions": { - "typeIdentifier": "t_function_error_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 33600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1375:33:40", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33601, - "nodeType": "RevertStatement", - "src": "1368:40:40" - } - ] - } - }, - { - "expression": { - "id": 33608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33604, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33569, - "src": "1428:8:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33606, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1437:12:40", - "memberName": "unlockAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 33689, - "src": "1428:21:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 33607, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1452:1:40", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1428:25:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33609, - "nodeType": "ExpressionStatement", - "src": "1428:25:40" - }, - { - "expression": { - "id": 33614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 33610, - "name": "userData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33569, - "src": "1463:8:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_UserData_$33698_storage_ptr", - "typeString": "struct UserData storage pointer" - } - }, - "id": 33612, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberLocation": "1472:15:40", - "memberName": "unlockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 33691, - "src": "1463:24:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 33613, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1490:1:40", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1463:28:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 33615, - "nodeType": "ExpressionStatement", - "src": "1463:28:40" - }, - { - "expression": { - "arguments": [ - { - "id": 33621, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33556, - "src": "1533:4:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 33622, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33578, - "src": "1539:6:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 33617, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33542, - "src": "1508:1:40", - "typeDescriptions": { - "typeIdentifier": "t_struct$_AppStorage_$33814_storage", - "typeString": "struct AppStorage storage ref" - } - }, - "id": 33618, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1510:12:40", - "memberName": "depositToken", - "nodeType": "MemberAccess", - "referencedDeclaration": 33803, - "src": "1508:14:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 33616, - "name": "IERC20", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 30146, - "src": "1501:6:40", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20_$30146_$", - "typeString": "type(contract IERC20)" - } - }, - "id": 33619, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1501:22:40", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IERC20_$30146", - "typeString": "contract IERC20" - } - }, - "id": 33620, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberLocation": "1524:8:40", - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 30113, - "src": "1501:31:40", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) external returns (bool)" - } - }, - "id": 33623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1501:45:40", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 33624, - "nodeType": "ExpressionStatement", - "src": "1501:45:40" - }, - { - "eventCall": { - "arguments": [ - { - "id": 33626, - "name": "seasonId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33561, - "src": "1582:8:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 33627, - "name": "user", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33556, - "src": "1592:4:40", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 33628, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33578, - "src": "1598:6:40", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 33625, - "name": "WithdrawUnlockedVPND", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33551, - "src": "1561:20:40", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (uint256,address,uint256)" - } - }, - "id": 33629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "nameLocations": [], - "names": [], - "nodeType": "FunctionCall", - "src": "1561:44:40", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 33630, - "nodeType": "EmitStatement", - "src": "1556:49:40" - } - ] - }, - "documentation": { - "id": 33552, - "nodeType": "StructuredDocumentation", - "src": "784:118:40", - "text": "@notice Withdraw prematurely unlocked VPND\n @dev User cannot participate in new seasons until they withdraw" - }, - "functionSelector": "6fcd112b", - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "withdrawUnlocked", - "nameLocation": "916:16:40", - "parameters": { - "id": 33553, - "nodeType": "ParameterList", - "parameters": [], - "src": "932:2:40" - }, - "returnParameters": { - "id": 33554, - "nodeType": "ParameterList", - "parameters": [], - "src": "944:0:40" - }, - "scope": 33633, - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "abstract": false, - "baseContracts": [], - "canonicalName": "WithdrawFacet", - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 33539, - "nodeType": "StructuredDocumentation", - "src": "278:138:40", - "text": "@title WithdrawFacet\n @notice Facet in charge of withdrawing unlocked VPND\n @dev Utilizes 'LDiamond', 'AppStorage' and 'IERC20'" - }, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 33633 - ], - "name": "WithdrawFacet", - "nameLocation": "425:13:40", - "scope": 33634, - "usedErrors": [ - 33536, - 33538 - ] - } - ], - "license": "MIT" - }, - "id": 40 -} \ No newline at end of file diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 3ab0953..91ecfdd 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -4275,8 +4275,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506129d5806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612455565b610954565b005b61034261033d366004612455565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612470565b610ccf565b61039061038b366004612455565b610d93565b6040516103599190612492565b6103c06103ab366004612519565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612519565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263f565b610ea6565b61032d6104223660046126ff565b611039565b6103f3610435366004612519565b60009081526004602052604090206002015490565b61032d610458366004612519565b61119b565b6103f361046b366004612735565b61123e565b6103f361047e366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612470565b611278565b6103f36104d3366004612519565b60009081526004602052604090206003015490565b61032d6104f636600461263f565b6113b2565b6002546103f3565b61054d610511366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612519565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263f565b611596565b6105d36105ce366004612519565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612519565b611888565b61032d610666366004612455565b61196f565b6103f3610679366004612735565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612470565b611a75565b6103f36106d1366004612519565b6000908152600460208190526040909120015490565b6103906106f5366004612735565b611b34565b6103f3610708366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275f565b611c46565b61032d611cd2565b6103f36107fa366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127be565b611df6565b61032d6108e0366004612470565b611e41565b61032d6108f3366004612519565b611ef6565b61032d610906366004612455565b612041565b61032d610919366004612455565b61216d565b61032d61092c366004612455565b61229b565b6103f361093f366004612519565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc9190612810565b835160e0840151909850909150610c1582612710612823565b610c1f919061283a565b9550612710868360600151610c349190612823565b610c3e919061283a565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612875565b602002602001015182610f839190612810565b915080610f8f816128a4565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612352565b508151610ffa90600a9060208501906123dc565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128dc565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e816001612810565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296d565b6111499062ffffff1642612810565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d816001612810565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612875565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612875565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298c565b61154b9087612810565b60039093019190915550925080611561816128a4565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298c565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612875565b6020026020010151826116739190612810565b91508061167f816128a4565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612352565b5081516116ea90600f9060208501906123dc565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128dc565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b22576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b93604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d42576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e3a9190612810565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8957506000818152600460205260409020600201544211155b15611fc0576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd826001612810565b60028190556000818152600460205260409020818155426001820181905591925090611ffc906220f580612810565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fe576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121bb576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612372565b506123d8929150612417565b5090565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc5782518255916020019190600101906123fc565b5b808211156123d85760008155600101612418565b803573ffffffffffffffffffffffffffffffffffffffff8116811461245057600080fd5b919050565b60006020828403121561246757600080fd5b611e3a8261242c565b6000806040838503121561248357600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125118285018215159052565b505092915050565b60006020828403121561252b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a8576125a8612532565b604052919050565b600067ffffffffffffffff8211156125ca576125ca612532565b5060051b60200190565b600082601f8301126125e557600080fd5b813560206125fa6125f5836125b0565b612561565b82815260059290921b8401810191818101908684111561261957600080fd5b8286015b84811015612634578035835291830191830161261d565b509695505050505050565b6000806040838503121561265257600080fd5b823567ffffffffffffffff8082111561266a57600080fd5b818501915085601f83011261267e57600080fd5b8135602061268e6125f5836125b0565b82815260059290921b840181019181810190898411156126ad57600080fd5b948201945b838610156126d2576126c38661242c565b825294820194908201906126b2565b965050860135925050808211156126e857600080fd5b506126f5858286016125d4565b9150509250929050565b6000806040838503121561271257600080fd5b82359150602083013560ff8116811461272a57600080fd5b809150509250929050565b6000806040838503121561274857600080fd5b6127518361242c565b946020939093013593505050565b60008060006060848603121561277457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279e57600080fd5b6127a78361242c565b91506127b56020840161242c565b90509250929050565b600080604083850312156127d157600080fd5b823591506127b56020840161242c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e1565b8082028115828204841417611272576112726127e1565b600082612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d5576128d56127e1565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f9565b5050508381038285015284518082528583019183019060005b8181101561296057835183529284019291840191600101612944565b5090979650505050505050565b62ffffff818116838216028082169190828114612511576125116127e1565b81810381811115611272576112726127e156fea264697066735822122083d6c76b34c320077770c91a5fcba3a09a6645dc4352f66fad62ef9753448fb864736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612455565b610954565b005b61034261033d366004612455565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612470565b610ccf565b61039061038b366004612455565b610d93565b6040516103599190612492565b6103c06103ab366004612519565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de366004612519565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f36600461263f565b610ea6565b61032d6104223660046126ff565b611039565b6103f3610435366004612519565b60009081526004602052604090206002015490565b61032d610458366004612519565b61119b565b6103f361046b366004612735565b61123e565b6103f361047e366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612470565b611278565b6103f36104d3366004612519565b60009081526004602052604090206003015490565b61032d6104f636600461263f565b6113b2565b6002546103f3565b61054d610511366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f3610570366004612519565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb36600461263f565b611596565b6105d36105ce366004612519565b61171c565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117d1565b6103f361271081565b61032d610653366004612519565b611888565b61032d610666366004612455565b61196f565b6103f3610679366004612735565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612470565b611a75565b6103f36106d1366004612519565b6000908152600460208190526040909120015490565b6103906106f5366004612735565b611b34565b6103f3610708366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d610792366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df36600461275f565b611c46565b61032d611cd2565b6103f36107fa366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f366004612735565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461278b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd3660046127be565b611df6565b61032d6108e0366004612470565b611e41565b61032d6108f3366004612519565b611ef6565b61032d610906366004612455565b612041565b61032d610919366004612455565b61216d565b61032d61092c366004612455565b61229b565b6103f361093f366004612519565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc9190612810565b835160e0840151909850909150610c1582612710612823565b610c1f919061283a565b9550612710868360600151610c349190612823565b610c3e919061283a565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612875565b602002602001015182610f839190612810565b915080610f8f816128a4565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612352565b508151610ffa90600a9060208501906123dc565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c9291906128dc565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e816001612810565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061296d565b6111499062ffffff1642612810565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112e8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130b57506000818152600460205260409020600201544211155b15611342576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61134d816001612810565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611422576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461145d576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115695760008281526005602052604081208651829088908590811061149257611492612875565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114ea576114ea612875565b602002602001015190508160000154600003611532576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003820154611541828261298c565b61154b9087612810565b60039093019190915550925080611561816128a4565b915050611465565b506000818152600460205260408120600701805484929061158b90849061298c565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611606576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611641576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116875782818151811061166057611660612875565b6020026020010151826116739190612810565b91508061167f816128a4565b915050611645565b5061271081146116c3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116d690600e906020860190612352565b5081516116ea90600f9060208501906123dc565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c9291906128dc565b61176460405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181960405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118f8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611934576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119bd576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a2d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ae5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b22576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b93604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cb6576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d42576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611dae57600080fd5b505af1158015611dc2573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611e3a9190612810565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611eb1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f66576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f8957506000818152600460205260409020600201544211155b15611fc0576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611fcd826001612810565b60028190556000818152600460205260409020818155426001820181905591925090611ffc906220f580612810565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120b1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120fe576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff81166121bb576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461222b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461230b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612372565b506123d8929150612417565b5090565b8280548282559060005260206000209081019282156123cc579160200282015b828111156123cc5782518255916020019190600101906123fc565b5b808211156123d85760008155600101612418565b803573ffffffffffffffffffffffffffffffffffffffff8116811461245057600080fd5b919050565b60006020828403121561246757600080fd5b611e3a8261242c565b6000806040838503121561248357600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516125118285018215159052565b505092915050565b60006020828403121561252b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125a8576125a8612532565b604052919050565b600067ffffffffffffffff8211156125ca576125ca612532565b5060051b60200190565b600082601f8301126125e557600080fd5b813560206125fa6125f5836125b0565b612561565b82815260059290921b8401810191818101908684111561261957600080fd5b8286015b84811015612634578035835291830191830161261d565b509695505050505050565b6000806040838503121561265257600080fd5b823567ffffffffffffffff8082111561266a57600080fd5b818501915085601f83011261267e57600080fd5b8135602061268e6125f5836125b0565b82815260059290921b840181019181810190898411156126ad57600080fd5b948201945b838610156126d2576126c38661242c565b825294820194908201906126b2565b965050860135925050808211156126e857600080fd5b506126f5858286016125d4565b9150509250929050565b6000806040838503121561271257600080fd5b82359150602083013560ff8116811461272a57600080fd5b809150509250929050565b6000806040838503121561274857600080fd5b6127518361242c565b946020939093013593505050565b60008060006060848603121561277457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561279e57600080fd5b6127a78361242c565b91506127b56020840161242c565b90509250929050565b600080604083850312156127d157600080fd5b823591506127b56020840161242c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115611272576112726127e1565b8082028115828204841417611272576112726127e1565b600082612870577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036128d5576128d56127e1565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561292b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128f9565b5050508381038285015284518082528583019183019060005b8181101561296057835183529284019291840191600101612944565b5090979650505050505050565b62ffffff818116838216028082169190828114612511576125116127e1565b81810381811115611272576112726127e156fea264697066735822122083d6c76b34c320077770c91a5fcba3a09a6645dc4352f66fad62ef9753448fb864736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50612987806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612407565b610954565b005b61034261033d366004612407565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612422565b610ccf565b61039061038b366004612407565b610d93565b6040516103599190612444565b6103c06103ab3660046124cb565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124cb565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f3660046125f1565b610ea6565b61032d6104223660046126b1565b611039565b6103f36104353660046124cb565b60009081526004602052604090206002015490565b61032d6104583660046124cb565b61119b565b6103f361046b3660046126e7565b61123e565b6103f361047e3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612422565b611278565b6103f36104d33660046124cb565b60009081526004602052604090206003015490565b61032d6104f63660046125f1565b61138b565b6002546103f3565b61054d6105113660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124cb565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb3660046125f1565b61156f565b6105d36105ce3660046124cb565b6116f5565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117aa565b6103f361271081565b61032d6106533660046124cb565b611861565b61032d610666366004612407565b611948565b6103f36106793660046126e7565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612422565b611a4e565b6103f36106d13660046124cb565b6000908152600460208190526040909120015490565b6103906106f53660046126e7565b611b0d565b6103f36107083660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612711565b611c1f565b61032d611cab565b6103f36107fa3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461273d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd366004612770565b611da8565b61032d6108e0366004612422565b611df3565b61032d6108f33660046124cb565b611ea8565b61032d610906366004612407565b611ff3565b61032d610919366004612407565b61211f565b61032d61092c366004612407565b61224d565b6103f361093f3660046124cb565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127c2565b835160e0840151909850909150610c15826127106127d5565b610c1f91906127ec565b9550612710868360600151610c3491906127d5565b610c3e91906127ec565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612827565b602002602001015182610f8391906127c2565b915080610f8f81612856565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612304565b508151610ffa90600a90602085019061238e565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061288e565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127c2565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061291f565b6111499062ffffff16426127c2565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112c1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112e457506000818152600460205260409020600201544211155b1561131b576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113268160016127c2565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113fb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611436576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115425760008281526005602052604081208651829088908590811061146b5761146b612827565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114c3576114c3612827565b60200260200101519050816000015460000361150b576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461151a828261293e565b61152490876127c2565b6003909301919091555092508061153a81612856565b91505061143e565b506000818152600460205260408120600701805484929061156490849061293e565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115df576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461161a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116605782818151811061163957611639612827565b60200260200101518261164c91906127c2565b91508061165881612856565b91505061161e565b50612710811461169c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116af90600e906020860190612304565b5081516116c390600f90602085019061238e565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061288e565b61173d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117f260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561190d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611996576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a06576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611abe576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b6c604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c8f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611cf4576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dec91906127c2565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e63576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f18576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f3b57506000818152600460205260409020600201544211155b15611f72576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f7f8260016127c2565b60028190556000818152600460205260409020818155426001820181905591925090611fae906220f5806127c2565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612063576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120b0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661216d576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121dd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122bd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612324565b5061238a9291506123c9565b5090565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e5782518255916020019190600101906123ae565b5b8082111561238a57600081556001016123ca565b803573ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b919050565b60006020828403121561241957600080fd5b611dec826123de565b6000806040838503121561243557600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124c38285018215159052565b505092915050565b6000602082840312156124dd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561255a5761255a6124e4565b604052919050565b600067ffffffffffffffff82111561257c5761257c6124e4565b5060051b60200190565b600082601f83011261259757600080fd5b813560206125ac6125a783612562565b612513565b82815260059290921b840181019181810190868411156125cb57600080fd5b8286015b848110156125e657803583529183019183016125cf565b509695505050505050565b6000806040838503121561260457600080fd5b823567ffffffffffffffff8082111561261c57600080fd5b818501915085601f83011261263057600080fd5b813560206126406125a783612562565b82815260059290921b8401810191818101908984111561265f57600080fd5b948201945b8386101561268457612675866123de565b82529482019490820190612664565b9650508601359250508082111561269a57600080fd5b506126a785828601612586565b9150509250929050565b600080604083850312156126c457600080fd5b82359150602083013560ff811681146126dc57600080fd5b809150509250929050565b600080604083850312156126fa57600080fd5b612703836123de565b946020939093013593505050565b60008060006060848603121561272657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275057600080fd5b612759836123de565b9150612767602084016123de565b90509250929050565b6000806040838503121561278357600080fd5b82359150612767602084016123de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561127257611272612793565b808202811582820484141761127257611272612793565b600082612822577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288757612887612793565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128dd57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ab565b5050508381038285015284518082528583019183019060005b81811015612912578351835292840192918401916001016128f6565b5090979650505050505050565b62ffffff8181168382160280821691908281146124c3576124c3612793565b818103818111156112725761127261279356fea2646970667358221220bff6ffb7923a8da9b971a8a659913632d51a32e638dcce5cf31fc273165a3f4364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612407565b610954565b005b61034261033d366004612407565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612422565b610ccf565b61039061038b366004612407565b610d93565b6040516103599190612444565b6103c06103ab3660046124cb565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124cb565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f3660046125f1565b610ea6565b61032d6104223660046126b1565b611039565b6103f36104353660046124cb565b60009081526004602052604090206002015490565b61032d6104583660046124cb565b61119b565b6103f361046b3660046126e7565b61123e565b6103f361047e3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612422565b611278565b6103f36104d33660046124cb565b60009081526004602052604090206003015490565b61032d6104f63660046125f1565b61138b565b6002546103f3565b61054d6105113660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124cb565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb3660046125f1565b61156f565b6105d36105ce3660046124cb565b6116f5565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117aa565b6103f361271081565b61032d6106533660046124cb565b611861565b61032d610666366004612407565b611948565b6103f36106793660046126e7565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612422565b611a4e565b6103f36106d13660046124cb565b6000908152600460208190526040909120015490565b6103906106f53660046126e7565b611b0d565b6103f36107083660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612711565b611c1f565b61032d611cab565b6103f36107fa3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461273d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd366004612770565b611da8565b61032d6108e0366004612422565b611df3565b61032d6108f33660046124cb565b611ea8565b61032d610906366004612407565b611ff3565b61032d610919366004612407565b61211f565b61032d61092c366004612407565b61224d565b6103f361093f3660046124cb565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127c2565b835160e0840151909850909150610c15826127106127d5565b610c1f91906127ec565b9550612710868360600151610c3491906127d5565b610c3e91906127ec565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612827565b602002602001015182610f8391906127c2565b915080610f8f81612856565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612304565b508151610ffa90600a90602085019061238e565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061288e565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127c2565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061291f565b6111499062ffffff16426127c2565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112c1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112e457506000818152600460205260409020600201544211155b1561131b576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113268160016127c2565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113fb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611436576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115425760008281526005602052604081208651829088908590811061146b5761146b612827565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114c3576114c3612827565b60200260200101519050816000015460000361150b576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461151a828261293e565b61152490876127c2565b6003909301919091555092508061153a81612856565b91505061143e565b506000818152600460205260408120600701805484929061156490849061293e565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115df576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461161a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116605782818151811061163957611639612827565b60200260200101518261164c91906127c2565b91508061165881612856565b91505061161e565b50612710811461169c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116af90600e906020860190612304565b5081516116c390600f90602085019061238e565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061288e565b61173d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117f260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561190d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611996576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a06576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611abe576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b6c604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c8f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611cf4576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dec91906127c2565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e63576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f18576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f3b57506000818152600460205260409020600201544211155b15611f72576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f7f8260016127c2565b60028190556000818152600460205260409020818155426001820181905591925090611fae906220f5806127c2565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612063576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120b0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661216d576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121dd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122bd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612324565b5061238a9291506123c9565b5090565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e5782518255916020019190600101906123ae565b5b8082111561238a57600081556001016123ca565b803573ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b919050565b60006020828403121561241957600080fd5b611dec826123de565b6000806040838503121561243557600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124c38285018215159052565b505092915050565b6000602082840312156124dd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561255a5761255a6124e4565b604052919050565b600067ffffffffffffffff82111561257c5761257c6124e4565b5060051b60200190565b600082601f83011261259757600080fd5b813560206125ac6125a783612562565b612513565b82815260059290921b840181019181810190868411156125cb57600080fd5b8286015b848110156125e657803583529183019183016125cf565b509695505050505050565b6000806040838503121561260457600080fd5b823567ffffffffffffffff8082111561261c57600080fd5b818501915085601f83011261263057600080fd5b813560206126406125a783612562565b82815260059290921b8401810191818101908984111561265f57600080fd5b948201945b8386101561268457612675866123de565b82529482019490820190612664565b9650508601359250508082111561269a57600080fd5b506126a785828601612586565b9150509250929050565b600080604083850312156126c457600080fd5b82359150602083013560ff811681146126dc57600080fd5b809150509250929050565b600080604083850312156126fa57600080fd5b612703836123de565b946020939093013593505050565b60008060006060848603121561272657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275057600080fd5b612759836123de565b9150612767602084016123de565b90509250929050565b6000806040838503121561278357600080fd5b82359150612767602084016123de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561127257611272612793565b808202811582820484141761127257611272612793565b600082612822577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288757612887612793565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128dd57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ab565b5050508381038285015284518082528583019183019060005b81811015612912578351835292840192918401916001016128f6565b5090979650505050505050565b62ffffff8181168382160280821691908281146124c3576124c3612793565b818103818111156112725761127261279356fea2646970667358221220bff6ffb7923a8da9b971a8a659913632d51a32e638dcce5cf31fc273165a3f4364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4285,6 +4285,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xEb97f47ffDa731c68381AE3948Ae42733fbA2181" + "address": "0x85c7Fd54b31315CA9244192057fee1276Ab4bFcE" } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index ed703b4..b618b39 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,6 +9,8 @@ import '@nomicfoundation/hardhat-toolbox' import './tasks/verify' import './tasks/automatedClaim' import './tasks/season' +import './tasks/admin' + import { formatUnits, parseUnits } from 'ethers' const AVALANCHE_RPC_URL = getEnvValSafe('AVALANCHE_RPC_URL') diff --git a/package.json b/package.json index 14668f1..c3f6b80 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "sort": "sort-package-json", "test": "make test", "test:hardhat": "hardhat test", - "upgradeDiamond:avalanche": "hardhat run --network avalanche scripts/upgradeDiamond.ts" + "upgradeDiamond:avalanche": "hardhat run --network avalanche scripts/upgradeDiamond.ts", + "verify:avalanche": "hardhat verify:all --network avalanche" }, "lint-staged": { "*.sol": [ diff --git a/src/GelatoResolver.sol b/src/GelatoResolver.sol deleted file mode 100644 index 6956e5b..0000000 --- a/src/GelatoResolver.sol +++ /dev/null @@ -1,85 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import { LDateTime } from "./libraries/LDateTime.sol"; - -interface ILiquidMiningDiamond { - function getSeasonEndTimestamp(uint256 seasonId) external view returns (uint256); - - function getCurrentSeasonId() external view returns (uint256); - - function getSeasonIsClaimed(uint256 seasonId) external view returns (bool); - - function startNewSeasonWithEndTimestamp(uint256 _rewardTokenToDistribute, uint256 _endTimestamp) external; - - function claimTokensForSeason() external; -} - -contract GelatoResolver { - ILiquidMiningDiamond public immutable liquidMiningDiamond; - - constructor(ILiquidMiningDiamond _liquidMiningDiamond) { - liquidMiningDiamond = _liquidMiningDiamond; - } - - /// @notice Calculates the reward for a given season - /// @dev The reward is calculated by multiplying the initial reward with a reduction factor of 0.41217% per season - /// @dev The inital reward for the 1st season is 15,000 tokens, with 18 decimals - /// @param seasonId The season ID - /// @return The reward for the given season - function calculateReward(uint256 seasonId) public pure returns (uint256) { - uint256 initialReward = 15000 * 10 ** 18; // 15,000 tokens, with 18 decimals - uint256 reductionFactor = (100000 - 412) * 10 ** 18; // 0.412% reduction per season, with 18 decimals - for (uint256 i = 0; i < seasonId - 1; i++) { - initialReward = (initialReward * reductionFactor) / (100000 * 10 ** 18); - } - return initialReward; - } - - function isLeapYear(uint256 year) public pure returns (bool) { - if (year % 4 != 0) { - return false; - } else if (year % 100 != 0) { - return true; - } else if (year % 400 != 0) { - return false; - } - return true; - } - - function getNextMonthFirstDayTimestamp() public view returns (uint256) { - uint256 currentTime = block.timestamp; - LDateTime._DateTime memory dateTime = LDateTime.parseTimestamp(currentTime); - - uint16 year = dateTime.year; - uint8 month = dateTime.month; - - if (month == 12) { - year += 1; - month = 1; - } else { - month += 1; - } - - return LDateTime.toTimestamp(year, month, 1); - } - - function checker() external view returns (bool canExec, bytes memory execPayload) { - uint256 currentSeasonId = liquidMiningDiamond.getCurrentSeasonId(); - uint256 currentSeasonEndTimestamp = liquidMiningDiamond.getSeasonEndTimestamp(currentSeasonId); - bool currentSeasonIsClaimed = liquidMiningDiamond.getSeasonIsClaimed(currentSeasonId); - - if (currentSeasonIsClaimed && block.timestamp > currentSeasonEndTimestamp) { - uint256 nextSeasonReward = calculateReward(currentSeasonId + 1); - uint256 nextMonthFirstDayTimestamp = getNextMonthFirstDayTimestamp(); - - execPayload = abi.encodeCall( - ILiquidMiningDiamond.startNewSeasonWithEndTimestamp, - (nextSeasonReward, nextMonthFirstDayTimestamp) - ); - return (true, execPayload); - } - - return (false, bytes("Current season is not over yet")); - } -} diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 79848f7..97586d0 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -52,13 +52,6 @@ contract DiamondManagerFacet { _; } - modifier onlyGelatoExecutor() { - if (msg.sender != s.gelatoExecutor) { - revert DiamondManagerFacet__NotGelatoExecutor(); - } - _; - } - modifier onlyAuthorized() { if (!s.authorized[msg.sender]) { revert DiamondManagerFacet__NotAuthorized(); @@ -159,7 +152,7 @@ contract DiamondManagerFacet { function startNewSeasonWithEndTimestamp( uint256 _rewardTokenToDistribute, uint256 _endTimestamp - ) external onlyOwner { + ) external onlyAuthorized { uint256 _currentSeason = s.currentSeasonId; if (_currentSeason != 0 && s.seasons[_currentSeason].endTimestamp >= block.timestamp) { revert DiamondManagerFacet__Season_Not_Finished(); @@ -196,7 +189,7 @@ contract DiamondManagerFacet { s.seasons[currentSeasonId].totalPoints -= difference; } - function claimTokensForSeason() external onlyOwner { + function claimTokensForSeason() external onlyAuthorized { IEmissionsManager(s.emissionsManager).mintLiquidMining(); emit VapeClaimedForSeason(s.currentSeasonId); } diff --git a/tasks/admin.ts b/tasks/admin.ts new file mode 100644 index 0000000..8b8e300 --- /dev/null +++ b/tasks/admin.ts @@ -0,0 +1,16 @@ +import { task } from 'hardhat/config' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' + +task('admin:authorize', 'Authorize an address to perform admin actions') + .addParam('address') + .setAction(async ({ address }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const AuthorizationFacet = await ethers.getContractAt( + 'AuthorizationFacet', + diamondAddress + ) + + await AuthorizationFacet.authorize(address) + }) diff --git a/tasks/season.ts b/tasks/season.ts index 5daaebb..5d6ff41 100644 --- a/tasks/season.ts +++ b/tasks/season.ts @@ -22,3 +22,22 @@ task('season:set-season-end', 'Force set the end of the current season') console.log('āœ… Set season end timestamp') }) + +task('season:get-season-end', 'Get the end of the current season').setAction( + async ({ end }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const seasonEndTimestamp = await DiamondManagerFacet.getSeasonEndTimestamp( + currentSeasonId.toString() + ) + + console.log('Season end timestamp:', seasonEndTimestamp.toString()) + } +) diff --git a/utils/generateFullAbi.ts b/utils/generateFullAbi.ts index 5110eab..9f51208 100644 --- a/utils/generateFullAbi.ts +++ b/utils/generateFullAbi.ts @@ -1,16 +1,17 @@ import { Interface } from '@ethersproject/abi' -import { readdirSync, readFileSync, writeFileSync } from 'fs' +import { writeFileSync } from 'fs' +import getFacets from './getFacets' +import { artifacts } from 'hardhat' -export function generateFullABI() { - const folders = readdirSync('./abis/') - let fullAbi: Interface[] = [] - for (const folder of folders) { - const fileName = `${folder}`.split('.')[0] + '.json' - const fileData = readFileSync(`./abis/${folder}/${fileName}`, 'utf8') - const abi = JSON.parse(fileData).abi - abi?.map((i: Interface) => (fullAbi?.includes(i) ? null : fullAbi?.push(i))) +export async function generateFullABI() { + const combinedABI: Interface[] = [] + const facets = getFacets() + for (const facet of facets) { + const artifact = await artifacts.readArtifact(facet) + writeFileSync(`./abis/${facet}.json`, JSON.stringify(artifact.abi, null, 4)) + combinedABI.push(...artifact.abi) } - writeFileSync('./abi/fullDiamond.json', JSON.stringify(fullAbi, null, 4)) + writeFileSync('./abi/fullDiamond.json', JSON.stringify(combinedABI, null, 4)) } generateFullABI() diff --git a/utils/getFacets.ts b/utils/getFacets.ts index 0fde8c6..14ab8ea 100644 --- a/utils/getFacets.ts +++ b/utils/getFacets.ts @@ -2,7 +2,7 @@ import fs from 'fs' import path from 'path' // Load facets from the src/facets folder, return an array of facet names -function getFacets(omit: string[] = ['DiamondCutFacet']) { +function getFacets(omit: string[] = ['DiamondCutFacet', 'DiamondLoupeFacet']) { const facets = fs .readdirSync('./src/facets') .map((file) => path.parse(file).name) From 5174d47dbfac0f9f9a3c9b06666f46e8d96654f4 Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Tue, 18 Jun 2024 17:10:32 +0200 Subject: [PATCH 24/34] chore: cleamup --- test/foundry/GelatoResolver.t.sol | 65 ------------------------------- utils/getFacets.ts | 2 +- 2 files changed, 1 insertion(+), 66 deletions(-) delete mode 100644 test/foundry/GelatoResolver.t.sol diff --git a/test/foundry/GelatoResolver.t.sol b/test/foundry/GelatoResolver.t.sol deleted file mode 100644 index d0bca51..0000000 --- a/test/foundry/GelatoResolver.t.sol +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-License-Identifier: Unlicense -pragma solidity 0.8.18; - -import "forge-std/Test.sol"; -import { GelatoResolver, ILiquidMiningDiamond } from "src/GelatoResolver.sol"; - -contract GelatoResolverTest is Test { - GelatoResolver gelatoResolver; - ILiquidMiningDiamond liquidMiningDiamond = ILiquidMiningDiamond(makeAddr("LiquidMiningDiamond")); - uint256 mainnetFork; - - function setUp() public { - // vm.createSelectFork(vm.rpcUrl("avalanche")); - gelatoResolver = new GelatoResolver(liquidMiningDiamond); - } - - function test_calculateReward() public { - uint256 seasonId = 1; - uint256 expectedReward = 15000 * 10 ** 18; - uint256 actualReward = gelatoResolver.calculateReward(seasonId); - assertEq(actualReward, expectedReward); - - seasonId = 2; - expectedReward = 14938200000000000000000; - actualReward = gelatoResolver.calculateReward(seasonId); - assertEq(actualReward, expectedReward); - - seasonId = 3; - expectedReward = 14876654616000000000000; - actualReward = gelatoResolver.calculateReward(seasonId); - assertEq(actualReward, expectedReward); - - seasonId = 4; - expectedReward = 14815362798982080000000; - actualReward = gelatoResolver.calculateReward(seasonId); - assertEq(actualReward, expectedReward); - - seasonId = 5; - expectedReward = 14754323504250273830400; - actualReward = gelatoResolver.calculateReward(seasonId); - assertEq(actualReward, expectedReward); - } - - function test_getNextMonthFirstDayTimestamp() public { - vm.warp(1696118400); // 2023-10-01 00:00:00 - uint256 expectedTimestamp = 1698796800; // 2023-11-01 00:00:00 - uint256 actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); - assertEq(actualTimestamp, expectedTimestamp); - - vm.warp(1701388800); // 2023-12-01 00:00:00 - expectedTimestamp = 1704067200; // 2024-01-01 00:00:00 - actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); - assertEq(actualTimestamp, expectedTimestamp); - - vm.warp(1704067200); // 2024-01-01 00:00:00 - expectedTimestamp = 1706745600; // 2024-02-01 00:00:00 - actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); - assertEq(actualTimestamp, expectedTimestamp); - - vm.warp(1706745600); // 2024-02-01 00:00:00 - expectedTimestamp = 1709251200; // 2024-03-01 00:00:00 (Leap Year) - actualTimestamp = gelatoResolver.getNextMonthFirstDayTimestamp(); - assertEq(actualTimestamp, expectedTimestamp); - } -} diff --git a/utils/getFacets.ts b/utils/getFacets.ts index 14ab8ea..0fde8c6 100644 --- a/utils/getFacets.ts +++ b/utils/getFacets.ts @@ -2,7 +2,7 @@ import fs from 'fs' import path from 'path' // Load facets from the src/facets folder, return an array of facet names -function getFacets(omit: string[] = ['DiamondCutFacet', 'DiamondLoupeFacet']) { +function getFacets(omit: string[] = ['DiamondCutFacet']) { const facets = fs .readdirSync('./src/facets') .map((file) => path.parse(file).name) From d8fb6db60604475465bc1358d51fb4c85aaf697d Mon Sep 17 00:00:00 2001 From: MejiasDev Date: Wed, 3 Jul 2024 15:14:59 +0200 Subject: [PATCH 25/34] feat: add setter for mining pass receivers and update access control --- config/addresses.ts | 4 +- deployments/DiamondManagerFacet.json | 43 +++++++++++++- deployments/FeeCollectorFacet.json | 11 +++- hardhat.config.ts | 26 +++++++++ package.json | 1 + scripts/deploy/deployDiamond.ts | 2 +- scripts/deploy/gelato-resolver.ts | 31 ---------- scripts/deploy/release.ts | 54 ------------------ scripts/upgradeDiamond.ts | 1 - scripts/upgradeDiamondSafe.ts | 52 +++++++++++++++++ src/facets/DiamondManagerFacet.sol | 17 ++++++ src/facets/FeeCollectorFacet.sol | 8 ++- tasks/admin.ts | 85 ++++++++++++++++++++++++++++ utils/diamond.ts | 34 ++++++++--- yarn.lock | 79 +++++++++++++++++++++++++- 15 files changed, 340 insertions(+), 108 deletions(-) delete mode 100644 scripts/deploy/gelato-resolver.ts delete mode 100644 scripts/deploy/release.ts create mode 100644 scripts/upgradeDiamondSafe.ts diff --git a/config/addresses.ts b/config/addresses.ts index a680683..b93bf80 100644 --- a/config/addresses.ts +++ b/config/addresses.ts @@ -35,10 +35,10 @@ export const addresses: { [ChainId.AVALANCHE_TESTNET]: '0xa3b0496e5E7748B3C02752220508c4297B29b99C', }, xVAPE: { - [ChainId.AVALANCHE]: '0x856D9680ceD5ee696980F44e8eaA2E090d92a6Db', + [ChainId.AVALANCHE]: '0x0fA2CCC39Cc3B225A7649eD84ec76Ee5217d07c4', // StableVapeReplenishmentPool [ChainId.AVALANCHE_TESTNET]: '0x723bc5612cf6Ee5756cbb322719d142e6E23478C', }, - replenishmentPool: { + vpndReplenishmentPool: { [ChainId.AVALANCHE]: '0x1cEc7B81Fdc2d46241B54b5190AF7967A93aa0E0', [ChainId.AVALANCHE_TESTNET]: '0xcf00c1ac6d26d52054ec89be6e093f2e270d61d9', }, diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 91ecfdd..22c18ac 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -3024,6 +3024,25 @@ "name": "EmissionsManagerSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "MiningPassFeeReceiversSet", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -4125,6 +4144,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "setMiningPassFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -4275,8 +4312,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612987806100206000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612407565b610954565b005b61034261033d366004612407565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612422565b610ccf565b61039061038b366004612407565b610d93565b6040516103599190612444565b6103c06103ab3660046124cb565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124cb565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f3660046125f1565b610ea6565b61032d6104223660046126b1565b611039565b6103f36104353660046124cb565b60009081526004602052604090206002015490565b61032d6104583660046124cb565b61119b565b6103f361046b3660046126e7565b61123e565b6103f361047e3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612422565b611278565b6103f36104d33660046124cb565b60009081526004602052604090206003015490565b61032d6104f63660046125f1565b61138b565b6002546103f3565b61054d6105113660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124cb565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb3660046125f1565b61156f565b6105d36105ce3660046124cb565b6116f5565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117aa565b6103f361271081565b61032d6106533660046124cb565b611861565b61032d610666366004612407565b611948565b6103f36106793660046126e7565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612422565b611a4e565b6103f36106d13660046124cb565b6000908152600460208190526040909120015490565b6103906106f53660046126e7565b611b0d565b6103f36107083660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612711565b611c1f565b61032d611cab565b6103f36107fa3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461273d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd366004612770565b611da8565b61032d6108e0366004612422565b611df3565b61032d6108f33660046124cb565b611ea8565b61032d610906366004612407565b611ff3565b61032d610919366004612407565b61211f565b61032d61092c366004612407565b61224d565b6103f361093f3660046124cb565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127c2565b835160e0840151909850909150610c15826127106127d5565b610c1f91906127ec565b9550612710868360600151610c3491906127d5565b610c3e91906127ec565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612827565b602002602001015182610f8391906127c2565b915080610f8f81612856565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612304565b508151610ffa90600a90602085019061238e565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061288e565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127c2565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061291f565b6111499062ffffff16426127c2565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112c1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112e457506000818152600460205260409020600201544211155b1561131b576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113268160016127c2565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113fb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611436576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115425760008281526005602052604081208651829088908590811061146b5761146b612827565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114c3576114c3612827565b60200260200101519050816000015460000361150b576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461151a828261293e565b61152490876127c2565b6003909301919091555092508061153a81612856565b91505061143e565b506000818152600460205260408120600701805484929061156490849061293e565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115df576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461161a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116605782818151811061163957611639612827565b60200260200101518261164c91906127c2565b91508061165881612856565b91505061161e565b50612710811461169c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116af90600e906020860190612304565b5081516116c390600f90602085019061238e565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061288e565b61173d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117f260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561190d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611996576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a06576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611abe576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b6c604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c8f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611cf4576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dec91906127c2565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e63576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f18576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f3b57506000818152600460205260409020600201544211155b15611f72576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f7f8260016127c2565b60028190556000818152600460205260409020818155426001820181905591925090611fae906220f5806127c2565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612063576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120b0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661216d576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121dd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122bd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612324565b5061238a9291506123c9565b5090565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e5782518255916020019190600101906123ae565b5b8082111561238a57600081556001016123ca565b803573ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b919050565b60006020828403121561241957600080fd5b611dec826123de565b6000806040838503121561243557600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124c38285018215159052565b505092915050565b6000602082840312156124dd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561255a5761255a6124e4565b604052919050565b600067ffffffffffffffff82111561257c5761257c6124e4565b5060051b60200190565b600082601f83011261259757600080fd5b813560206125ac6125a783612562565b612513565b82815260059290921b840181019181810190868411156125cb57600080fd5b8286015b848110156125e657803583529183019183016125cf565b509695505050505050565b6000806040838503121561260457600080fd5b823567ffffffffffffffff8082111561261c57600080fd5b818501915085601f83011261263057600080fd5b813560206126406125a783612562565b82815260059290921b8401810191818101908984111561265f57600080fd5b948201945b8386101561268457612675866123de565b82529482019490820190612664565b9650508601359250508082111561269a57600080fd5b506126a785828601612586565b9150509250929050565b600080604083850312156126c457600080fd5b82359150602083013560ff811681146126dc57600080fd5b809150509250929050565b600080604083850312156126fa57600080fd5b612703836123de565b946020939093013593505050565b60008060006060848603121561272657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275057600080fd5b612759836123de565b9150612767602084016123de565b90509250929050565b6000806040838503121561278357600080fd5b82359150612767602084016123de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561127257611272612793565b808202811582820484141761127257611272612793565b600082612822577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288757612887612793565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128dd57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ab565b5050508381038285015284518082528583019183019060005b81811015612912578351835292840192918401916001016128f6565b5090979650505050505050565b62ffffff8181168382160280821691908281146124c3576124c3612793565b818103818111156112725761127261279356fea2646970667358221220bff6ffb7923a8da9b971a8a659913632d51a32e638dcce5cf31fc273165a3f4364736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103155760003560e01c806385e3f997116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac1461090b578063f557f1a91461091e578063fca7129f1461093157600080fd5b8063df409589146108e5578063e5ea3fdc146104c5578063e8566118146108f857600080fd5b8063d2b291d1116100c8578063d2b291d114610879578063d822bb87146108bf578063dbcbb9a3146108d257600080fd5b8063bc67f25f146107e4578063c4882ed7146107ec578063d18b3d901461083157600080fd5b80639d6c100f11610150578063b15038791161012a578063b15038791461073f578063b3afe49614610784578063b5e00790146107d157600080fd5b80639d6c100f146106c3578063a07693eb146106e7578063ae178fda146106fa57600080fd5b806395e2de331161018157806395e2de331461066b5780639a56f4e4146105625780639d0b7d5a146106b057600080fd5b806385e3f9971461063c5780638a91af17146106455780638aee81271461065857600080fd5b80634a477b141161026b57806361ccdfba116102145780636e06c64d116101ee5780636e06c64d146105ad57806373ad27b0146105c0578063820d0ad71461063457600080fd5b806361ccdfba1461050357806366e017c3146105625780636bb70f6a1461058557600080fd5b8063562b715311610245578063562b7153146104c55780635c1624ab146104e85780635e75a6c3146104fb57600080fd5b80634a477b141461045d5780634dc0cd2b14610470578063560cf6f5146104b257600080fd5b80632d4136a6116102cd57806336a4a844116102a757806336a4a844146104145780633d55b37b146104275780634784f6bc1461044a57600080fd5b80632d4136a61461039d5780633175cbe8146103d05780633361e38b1461040157600080fd5b8063142950d6116102fe578063142950d614610362578063275b629e1461036a5780632c5682eb1461037d57600080fd5b80630c4ed7991461031a5780630c7d72a71461032f575b600080fd5b61032d610328366004612407565b610954565b005b61034261033d366004612407565b610a82565b604080519384526020840192909252908201526060015b60405180910390f35b61032d610c4a565b61032d610378366004612422565b610ccf565b61039061038b366004612407565b610d93565b6040516103599190612444565b6103c06103ab3660046124cb565b6000908152601c602052604090205460ff1690565b6040519015158152602001610359565b6103f36103de3660046124cb565b60009081526004602052604090206005015490565b604051908152602001610359565b61032d61040f3660046125f1565b610ea6565b61032d6104223660046126b1565b611039565b6103f36104353660046124cb565b60009081526004602052604090206002015490565b61032d6104583660046124cb565b61119b565b6103f361046b3660046126e7565b61123e565b6103f361047e3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61032d6104c0366004612422565b611278565b6103f36104d33660046124cb565b60009081526004602052604090206003015490565b61032d6104f63660046125f1565b61138b565b6002546103f3565b61054d6105113660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610359565b6103f36105703660046124cb565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610359565b61032d6105bb3660046125f1565b61156f565b6105d36105ce3660046124cb565b6116f5565b6040516103599190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105d36117aa565b6103f361271081565b61032d6106533660046124cb565b611861565b61032d610666366004612407565b611948565b6103f36106793660046126e7565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61032d6106be366004612422565b611a4e565b6103f36106d13660046124cb565b6000908152600460208190526040909120015490565b6103906106f53660046126e7565b611b0d565b6103f36107083660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103f361074d3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61054d6107923660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b61032d6107df366004612711565b611c1f565b61032d611cab565b6103f36107fa3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103c061083f3660046126e7565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103f361088736600461273d565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103f36108cd366004612770565b611da8565b61032d6108e0366004612422565b611df3565b61032d6108f33660046124cb565b611ea8565b61032d610906366004612407565b611ff3565b61032d610919366004612407565b61211f565b61032d61092c366004612407565b61224d565b6103f361093f3660046124cb565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109a2576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a12576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610bfc91906127c2565b835160e0840151909850909150610c15826127106127d5565b610c1f91906127ec565b9550612710868360600151610c3491906127d5565b610c3e91906127ec565b96989597505050505050565b3360009081526020819052604090205460ff16610c93576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d3f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610d879084815260200190565b60405180910390a25050565b610df2604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f16576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f51576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610f9757828181518110610f7057610f70612827565b602002602001015182610f8391906127c2565b915080610f8f81612856565b915050610f55565b506127108114610fd3576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610fe6906009906020860190612304565b508151610ffa90600a90602085019061238e565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161102c92919061288e565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110a9576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110cc57506000818152600460205260409020600201544211155b15611103576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61110e8160016127c2565b6002819055600081815260046020526040902090815542600182015561113a60ff84166201518061291f565b6111499062ffffff16426127c2565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461120b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112c1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906112e457506000818152600460205260409020600201544211155b1561131b576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113268160016127c2565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9061118d9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146113fb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611436576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b84518110156115425760008281526005602052604081208651829088908590811061146b5761146b612827565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114c3576114c3612827565b60200260200101519050816000015460000361150b576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600382015461151a828261293e565b61152490876127c2565b6003909301919091555092508061153a81612856565b91505061143e565b506000818152600460205260408120600701805484929061156490849061293e565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115df576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461161a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156116605782818151811061163957611639612827565b60200260200101518261164c91906127c2565b91508061165881612856565b91505061161e565b50612710811461169c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116af90600e906020860190612304565b5081516116c390600f90602085019061238e565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161102c92919061288e565b61173d60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6117f260405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118d1576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561190d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611996576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a06576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611abe576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b6c604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611c8f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611cf4576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611d6057600080fd5b505af1158015611d74573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611dec91906127c2565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e63576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610d879084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f18576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611f3b57506000818152600460205260409020600201544211155b15611f72576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611f7f8260016127c2565b60028190556000818152600460205260409020818155426001820181905591925090611fae906220f5806127c2565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c9060200161118d565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612063576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166120b0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff811661216d576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146121dd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146122bd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e57825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612324565b5061238a9291506123c9565b5090565b82805482825590600052602060002090810192821561237e579160200282015b8281111561237e5782518255916020019190600101906123ae565b5b8082111561238a57600081556001016123ca565b803573ffffffffffffffffffffffffffffffffffffffff8116811461240257600080fd5b919050565b60006020828403121561241957600080fd5b611dec826123de565b6000806040838503121561243557600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516124c38285018215159052565b505092915050565b6000602082840312156124dd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561255a5761255a6124e4565b604052919050565b600067ffffffffffffffff82111561257c5761257c6124e4565b5060051b60200190565b600082601f83011261259757600080fd5b813560206125ac6125a783612562565b612513565b82815260059290921b840181019181810190868411156125cb57600080fd5b8286015b848110156125e657803583529183019183016125cf565b509695505050505050565b6000806040838503121561260457600080fd5b823567ffffffffffffffff8082111561261c57600080fd5b818501915085601f83011261263057600080fd5b813560206126406125a783612562565b82815260059290921b8401810191818101908984111561265f57600080fd5b948201945b8386101561268457612675866123de565b82529482019490820190612664565b9650508601359250508082111561269a57600080fd5b506126a785828601612586565b9150509250929050565b600080604083850312156126c457600080fd5b82359150602083013560ff811681146126dc57600080fd5b809150509250929050565b600080604083850312156126fa57600080fd5b612703836123de565b946020939093013593505050565b60008060006060848603121561272657600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561275057600080fd5b612759836123de565b9150612767602084016123de565b90509250929050565b6000806040838503121561278357600080fd5b82359150612767602084016123de565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561127257611272612793565b808202811582820484141761127257611272612793565b600082612822577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361288757612887612793565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156128dd57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016128ab565b5050508381038285015284518082528583019183019060005b81811015612912578351835292840192918401916001016128f6565b5090979650505050505050565b62ffffff8181168382160280821691908281146124c3576124c3612793565b818103818111156112725761127261279356fea2646970667358221220bff6ffb7923a8da9b971a8a659913632d51a32e638dcce5cf31fc273165a3f4364736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50612b2b806100206000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80638a91af17116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac14610929578063f557f1a91461093c578063fca7129f1461094f57600080fd5b8063df40958914610903578063e5ea3fdc146104d0578063e85661181461091657600080fd5b8063d2b291d1116100c8578063d2b291d114610897578063d822bb87146108dd578063dbcbb9a3146108f057600080fd5b8063bc67f25f14610802578063c4882ed71461080a578063d18b3d901461084f57600080fd5b8063a07693eb11610150578063b234c9c41161012a578063b234c9c41461078f578063b3afe496146107a2578063b5e00790146107ef57600080fd5b8063a07693eb146106f2578063ae178fda14610705578063b15038791461074a57600080fd5b80639a56f4e4116101815780639a56f4e41461056d5780639d0b7d5a146106bb5780639d6c100f146106ce57600080fd5b80638a91af17146106505780638aee81271461066357806395e2de331461067657600080fd5b80634dc0cd2b1161026b57806366e017c31161021457806373ad27b0116101ee57806373ad27b0146105cb578063820d0ad71461063f57806385e3f9971461064757600080fd5b806366e017c31461056d5780636bb70f6a146105905780636e06c64d146105b857600080fd5b80635c1624ab116102455780635c1624ab146104f35780635e75a6c31461050657806361ccdfba1461050e57600080fd5b80634dc0cd2b1461047b578063560cf6f5146104bd578063562b7153146104d057600080fd5b80633175cbe8116102cd5780633d55b37b116102a75780633d55b37b146104325780634784f6bc146104555780634a477b141461046857600080fd5b80633175cbe8146103db5780633361e38b1461040c57806336a4a8441461041f57600080fd5b8063275b629e116102fe578063275b629e146103755780632c5682eb146103885780632d4136a6146103a857600080fd5b80630c4ed799146103255780630c7d72a71461033a578063142950d61461036d575b600080fd5b6103386103333660046125ab565b610972565b005b61034d6103483660046125ab565b610aa0565b604080519384526020840192909252908201526060015b60405180910390f35b610338610c68565b6103386103833660046125c6565b610ced565b61039b6103963660046125ab565b610db1565b60405161036491906125e8565b6103cb6103b636600461266f565b6000908152601c602052604090205460ff1690565b6040519015158152602001610364565b6103fe6103e936600461266f565b60009081526004602052604090206005015490565b604051908152602001610364565b61033861041a366004612795565b610ec4565b61033861042d366004612855565b611057565b6103fe61044036600461266f565b60009081526004602052604090206002015490565b61033861046336600461266f565b6111b9565b6103fe61047636600461288b565b61125c565b6103fe61048936600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103386104cb3660046125c6565b611296565b6103fe6104de36600461266f565b60009081526004602052604090206003015490565b610338610501366004612795565b6113a9565b6002546103fe565b61055861051c36600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610364565b6103fe61057b36600461266f565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610364565b6103386105c6366004612795565b61158d565b6105de6105d936600461266f565b611713565b6040516103649190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105de6117c8565b6103fe61271081565b61033861065e36600461266f565b61187f565b6103386106713660046125ab565b611966565b6103fe61068436600461288b565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103386106c93660046125c6565b611a6c565b6103fe6106dc36600461266f565b6000908152600460208190526040909120015490565b61039b61070036600461288b565b611b2b565b6103fe61071336600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103fe61075836600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61033861079d366004612795565b611c3d565b6105586107b036600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103386107fd3660046128b5565b611dc3565b610338611e4f565b6103fe61081836600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103cb61085d36600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103fe6108a53660046128e1565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103fe6108eb366004612914565b611f4c565b6103386108fe3660046125c6565b611f97565b61033861091136600461266f565b61204c565b6103386109243660046125ab565b612197565b6103386109373660046125ab565b6122c3565b61033861094a3660046125ab565b6123f1565b6103fe61095d36600461266f565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109c0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a30576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610c1a9190612966565b835160e0840151909850909150610c3382612710612979565b610c3d9190612990565b9550612710868360600151610c529190612979565b610c5c9190612990565b96989597505050505050565b3360009081526020819052604090205460ff16610cb1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610da59084815260200190565b60405180910390a25050565b610e10604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f34576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f6f576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610fb557828181518110610f8e57610f8e6129cb565b602002602001015182610fa19190612966565b915080610fad816129fa565b915050610f73565b506127108114610ff1576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516110049060099060208601906124a8565b50815161101890600a906020850190612532565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161104a929190612a32565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110c7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110ea57506000818152600460205260409020600201544211155b15611121576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112c816001612966565b6002819055600081815260046020526040902090815542600182015561115860ff841662015180612ac3565b6111679062ffffff1642612966565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611229576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112df576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130257506000818152600460205260409020600201544211155b15611339576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611344816001612966565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906111ab9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611419576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611454576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561156057600082815260056020526040812086518290889085908110611489576114896129cb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114e1576114e16129cb565b602002602001015190508160000154600003611529576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546115388282612ae2565b6115429087612966565b60039093019190915550925080611558816129fa565b91505061145c565b5060008181526004602052604081206007018054849290611582908490612ae2565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115fd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611638576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561167e57828181518110611657576116576129cb565b60200260200101518261166a9190612966565b915080611676816129fa565b91505061163c565b5061271081146116ba576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116cd90600e9060208601906124a8565b5081516116e190600f906020850190612532565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161104a929190612a32565b61175b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118ef576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561192b576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119b4576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a24576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611adc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b19576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b8a604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cad576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611ce8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611d2e57828181518110611d0757611d076129cb565b602002602001015182611d1a9190612966565b915080611d26816129fa565b915050611cec565b506127108114611d6a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611d7d9060139060208601906124a8565b508151611d91906014906020850190612532565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb2838360405161104a929190612a32565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e33576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611e98576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611f909190612966565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612007576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610da59084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120bc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906120df57506000818152600460205260409020600201544211155b15612116576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612123826001612966565b60028190556000818152600460205260409020818155426001820181905591925090612152906220f580612966565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016111ab565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612207576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612254576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff8116612311576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612381576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612461576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612522579160200282015b8281111561252257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906124c8565b5061252e92915061256d565b5090565b828054828255906000526020600020908101928215612522579160200282015b82811115612522578251825591602001919060010190612552565b5b8082111561252e576000815560010161256e565b803573ffffffffffffffffffffffffffffffffffffffff811681146125a657600080fd5b919050565b6000602082840312156125bd57600080fd5b611f9082612582565b600080604083850312156125d957600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516126678285018215159052565b505092915050565b60006020828403121561268157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156126fe576126fe612688565b604052919050565b600067ffffffffffffffff82111561272057612720612688565b5060051b60200190565b600082601f83011261273b57600080fd5b8135602061275061274b83612706565b6126b7565b82815260059290921b8401810191818101908684111561276f57600080fd5b8286015b8481101561278a5780358352918301918301612773565b509695505050505050565b600080604083850312156127a857600080fd5b823567ffffffffffffffff808211156127c057600080fd5b818501915085601f8301126127d457600080fd5b813560206127e461274b83612706565b82815260059290921b8401810191818101908984111561280357600080fd5b948201945b838610156128285761281986612582565b82529482019490820190612808565b9650508601359250508082111561283e57600080fd5b5061284b8582860161272a565b9150509250929050565b6000806040838503121561286857600080fd5b82359150602083013560ff8116811461288057600080fd5b809150509250929050565b6000806040838503121561289e57600080fd5b6128a783612582565b946020939093013593505050565b6000806000606084860312156128ca57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156128f457600080fd5b6128fd83612582565b915061290b60208401612582565b90509250929050565b6000806040838503121561292757600080fd5b8235915061290b60208401612582565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561129057611290612937565b808202811582820484141761129057611290612937565b6000826129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a2b57612a2b612937565b5060010190565b604080825283519082018190526000906020906060840190828701845b82811015612a8157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612a4f565b5050508381038285015284518082528583019183019060005b81811015612ab657835183529284019291840191600101612a9a565b5090979650505050505050565b62ffffff81811683821602808216919082811461266757612667612937565b818103818111156112905761129061293756fea2646970667358221220bd894b791f10a6a7fad89dfdabccac482e5f3145f2d135b6c685cd9004ed54b864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103205760003560e01c80638a91af17116101a7578063bc67f25f116100ee578063df40958911610097578063f55484ac11610071578063f55484ac14610929578063f557f1a91461093c578063fca7129f1461094f57600080fd5b8063df40958914610903578063e5ea3fdc146104d0578063e85661181461091657600080fd5b8063d2b291d1116100c8578063d2b291d114610897578063d822bb87146108dd578063dbcbb9a3146108f057600080fd5b8063bc67f25f14610802578063c4882ed71461080a578063d18b3d901461084f57600080fd5b8063a07693eb11610150578063b234c9c41161012a578063b234c9c41461078f578063b3afe496146107a2578063b5e00790146107ef57600080fd5b8063a07693eb146106f2578063ae178fda14610705578063b15038791461074a57600080fd5b80639a56f4e4116101815780639a56f4e41461056d5780639d0b7d5a146106bb5780639d6c100f146106ce57600080fd5b80638a91af17146106505780638aee81271461066357806395e2de331461067657600080fd5b80634dc0cd2b1161026b57806366e017c31161021457806373ad27b0116101ee57806373ad27b0146105cb578063820d0ad71461063f57806385e3f9971461064757600080fd5b806366e017c31461056d5780636bb70f6a146105905780636e06c64d146105b857600080fd5b80635c1624ab116102455780635c1624ab146104f35780635e75a6c31461050657806361ccdfba1461050e57600080fd5b80634dc0cd2b1461047b578063560cf6f5146104bd578063562b7153146104d057600080fd5b80633175cbe8116102cd5780633d55b37b116102a75780633d55b37b146104325780634784f6bc146104555780634a477b141461046857600080fd5b80633175cbe8146103db5780633361e38b1461040c57806336a4a8441461041f57600080fd5b8063275b629e116102fe578063275b629e146103755780632c5682eb146103885780632d4136a6146103a857600080fd5b80630c4ed799146103255780630c7d72a71461033a578063142950d61461036d575b600080fd5b6103386103333660046125ab565b610972565b005b61034d6103483660046125ab565b610aa0565b604080519384526020840192909252908201526060015b60405180910390f35b610338610c68565b6103386103833660046125c6565b610ced565b61039b6103963660046125ab565b610db1565b60405161036491906125e8565b6103cb6103b636600461266f565b6000908152601c602052604090205460ff1690565b6040519015158152602001610364565b6103fe6103e936600461266f565b60009081526004602052604090206005015490565b604051908152602001610364565b61033861041a366004612795565b610ec4565b61033861042d366004612855565b611057565b6103fe61044036600461266f565b60009081526004602052604090206002015490565b61033861046336600461266f565b6111b9565b6103fe61047636600461288b565b61125c565b6103fe61048936600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103386104cb3660046125c6565b611296565b6103fe6104de36600461266f565b60009081526004602052604090206003015490565b610338610501366004612795565b6113a9565b6002546103fe565b61055861051c36600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610364565b6103fe61057b36600461266f565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610364565b6103386105c6366004612795565b61158d565b6105de6105d936600461266f565b611713565b6040516103649190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6105de6117c8565b6103fe61271081565b61033861065e36600461266f565b61187f565b6103386106713660046125ab565b611966565b6103fe61068436600461288b565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103386106c93660046125c6565b611a6c565b6103fe6106dc36600461266f565b6000908152600460208190526040909120015490565b61039b61070036600461288b565b611b2b565b6103fe61071336600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103fe61075836600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b61033861079d366004612795565b611c3d565b6105586107b036600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103386107fd3660046128b5565b611dc3565b610338611e4f565b6103fe61081836600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6103cb61085d36600461288b565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103fe6108a53660046128e1565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103fe6108eb366004612914565b611f4c565b6103386108fe3660046125c6565b611f97565b61033861091136600461266f565b61204c565b6103386109243660046125ab565b612197565b6103386109373660046125ab565b6122c3565b61033861094a3660046125ab565b6123f1565b6103fe61095d36600461266f565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff81166109c0576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a30576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610c1a9190612966565b835160e0840151909850909150610c3382612710612979565b610c3d9190612990565b9550612710868360600151610c529190612979565b610c5c9190612990565b96989597505050505050565b3360009081526020819052604090205460ff16610cb1576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601c6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610d5d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610da59084815260200190565b60405180910390a25050565b610e10604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f34576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610f6f576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610fb557828181518110610f8e57610f8e6129cb565b602002602001015182610fa19190612966565b915080610fad816129fa565b915050610f73565b506127108114610ff1576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516110049060099060208601906124a8565b50815161101890600a906020850190612532565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a955838360405161104a929190612a32565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110c7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906110ea57506000818152600460205260409020600201544211155b15611121576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61112c816001612966565b6002819055600081815260046020526040902090815542600182015561115860ff841662015180612ac3565b6111679062ffffff1642612966565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611229576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166112df576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061130257506000818152600460205260409020600201544211155b15611339576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611344816001612966565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906111ab9087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611419576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611454576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b845181101561156057600082815260056020526040812086518290889085908110611489576114896129cb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106114e1576114e16129cb565b602002602001015190508160000154600003611529576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546115388282612ae2565b6115429087612966565b60039093019190915550925080611558816129fa565b91505061145c565b5060008181526004602052604081206007018054849290611582908490612ae2565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115fd576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611638576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561167e57828181518110611657576116576129cb565b60200260200101518261166a9190612966565b915080611676816129fa565b91505061163c565b5061271081146116ba576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516116cd90600e9060208601906124a8565b5081516116e190600f906020850190612532565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df838360405161104a929190612a32565b61175b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b61181060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118ef576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61271081111561192b576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a16839060200160405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff81166119b4576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611a24576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611adc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d0900811115611b19576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b611b8a604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611cad576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611ce8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611d2e57828181518110611d0757611d076129cb565b602002602001015182611d1a9190612966565b915080611d26816129fa565b915050611cec565b506127108114611d6a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611d7d9060139060208601906124a8565b508151611d91906014906020850190612532565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb2838360405161104a929190612a32565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e33576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff16611e98576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611f0457600080fd5b505af1158015611f18573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611f909190612966565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612007576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610da59084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146120bc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906120df57506000818152600460205260409020600201544211155b15612116576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612123826001612966565b60028190556000818152600460205260409020818155426001820181905591925090612152906220f580612966565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020016111ab565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612207576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116612254576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b8073ffffffffffffffffffffffffffffffffffffffff8116612311576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612381576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612461576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612522579160200282015b8281111561252257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161782556020909201916001909101906124c8565b5061252e92915061256d565b5090565b828054828255906000526020600020908101928215612522579160200282015b82811115612522578251825591602001919060010190612552565b5b8082111561252e576000815560010161256e565b803573ffffffffffffffffffffffffffffffffffffffff811681146125a657600080fd5b919050565b6000602082840312156125bd57600080fd5b611f9082612582565b600080604083850312156125d957600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516126678285018215159052565b505092915050565b60006020828403121561268157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156126fe576126fe612688565b604052919050565b600067ffffffffffffffff82111561272057612720612688565b5060051b60200190565b600082601f83011261273b57600080fd5b8135602061275061274b83612706565b6126b7565b82815260059290921b8401810191818101908684111561276f57600080fd5b8286015b8481101561278a5780358352918301918301612773565b509695505050505050565b600080604083850312156127a857600080fd5b823567ffffffffffffffff808211156127c057600080fd5b818501915085601f8301126127d457600080fd5b813560206127e461274b83612706565b82815260059290921b8401810191818101908984111561280357600080fd5b948201945b838610156128285761281986612582565b82529482019490820190612808565b9650508601359250508082111561283e57600080fd5b5061284b8582860161272a565b9150509250929050565b6000806040838503121561286857600080fd5b82359150602083013560ff8116811461288057600080fd5b809150509250929050565b6000806040838503121561289e57600080fd5b6128a783612582565b946020939093013593505050565b6000806000606084860312156128ca57600080fd5b505081359360208301359350604090920135919050565b600080604083850312156128f457600080fd5b6128fd83612582565b915061290b60208401612582565b90509250929050565b6000806040838503121561292757600080fd5b8235915061290b60208401612582565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561129057611290612937565b808202811582820484141761129057611290612937565b6000826129c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a2b57612a2b612937565b5060010190565b604080825283519082018190526000906020906060840190828701845b82811015612a8157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612a4f565b5050508381038285015284518082528583019183019060005b81811015612ab657835183529284019291840191600101612a9a565b5090979650505050505050565b62ffffff81811683821602808216919082811461266757612667612937565b818103818111156112905761129061293756fea2646970667358221220bd894b791f10a6a7fad89dfdabccac482e5f3145f2d135b6c685cd9004ed54b864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -4285,6 +4322,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x85c7Fd54b31315CA9244192057fee1276Ab4bFcE" + "address": "0x777F87459556888010E25c6C788387d111F288Bc" } } \ No newline at end of file diff --git a/deployments/FeeCollectorFacet.json b/deployments/FeeCollectorFacet.json index 719e32f..caf86c5 100644 --- a/deployments/FeeCollectorFacet.json +++ b/deployments/FeeCollectorFacet.json @@ -86,6 +86,11 @@ "name": "FeeCollectorFacet__Only_Owner", "type": "error" }, + { + "inputs": [], + "name": "LAuthorizable__OnlyAuthorized", + "type": "error" + }, { "inputs": [], "name": "collectBoostFees", @@ -101,8 +106,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061075c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122048b53c3ef455a6ea4970f0bf630b74ee51be009e97a9643469fe0476f8a1bac964736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610361565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060090180548060200260200160405190810160405280929190818152602001828054801561012457602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116100f9575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b57600080601001600086848151811061016f5761016f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061020b5761020b61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106102bc576102bc61066f565b6020026020010151836040518363ffffffff1660e01b815260040161030392919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610322573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610346919061069e565b50508080610353906106c7565b91505061014d565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146103d1576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600e0180548060200260200160405190810160405280929190818152602001828054801561043857602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161040d575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b8281101561035b5760008060100160008684815181106104835761048361066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061051f5761051f61066f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8684815181106105d0576105d061066f565b6020026020010151836040518363ffffffff1660e01b815260040161061792919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af1158015610636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065a919061069e565b50508080610667906106c7565b915050610461565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156106b057600080fd5b815180151581146106c057600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361071f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122048b53c3ef455a6ea4970f0bf630b74ee51be009e97a9643469fe0476f8a1bac964736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220c0e50f7a2e00ec6cb7715aa67ebc50d83e9642cd83aa6fb025436cba4c2556e964736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220c0e50f7a2e00ec6cb7715aa67ebc50d83e9642cd83aa6fb025436cba4c2556e964736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -111,6 +116,6 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x2883CC3FAE0B81e938d05428ffC9750Dac7Bb806" + "address": "0x28f1c2A2C09205C124Acf307459b7B67b468886b" } } \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index b618b39..86c74b2 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -53,6 +53,32 @@ const config: HardhatUserConfig = { }, }, }, + etherscan: { + apiKey: { + snowtrace: 'snowtrace', + snowtraceFuji: 'snowtraceFuji', + }, + customChains: [ + { + network: 'snowtrace', + chainId: 43114, + urls: { + apiURL: + 'https://api.routescan.io/v2/network/mainnet/evm/43114/etherscan', + browserURL: 'https://snowtrace.dev/', + }, + }, + { + network: 'snowtraceFuji', + chainId: 43113, + urls: { + apiURL: + 'https://api.routescan.io/v2/network/testnet/evm/43113/etherscan', + browserURL: 'https://testnet.snowtrace.io/', + }, + }, + ], + }, } export default config diff --git a/package.json b/package.json index c3f6b80..fabb0ca 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@nomicfoundation/hardhat-toolbox": "3.0.0", "@nomicfoundation/hardhat-verify": "^1.0.3", "@nomiclabs/hardhat-solhint": "3.0.1", + "@safe-global/protocol-kit": "^4.0.2", "@typechain/ethers-v6": "^0.4.0", "@typechain/hardhat": "8.0.0", "@types/chai": "4.3.5", diff --git a/scripts/deploy/deployDiamond.ts b/scripts/deploy/deployDiamond.ts index bc174b7..8b08980 100644 --- a/scripts/deploy/deployDiamond.ts +++ b/scripts/deploy/deployDiamond.ts @@ -19,7 +19,7 @@ export const defaultArgs: DiamondInit.ArgsStruct = { stratosphere: addresses.stratosphere[CHAIN_ID], xVAPE: addresses.xVAPE[CHAIN_ID], passport: addresses.passportPool[CHAIN_ID], - replenishmentPool: addresses.replenishmentPool[CHAIN_ID], + replenishmentPool: addresses.vpndReplenishmentPool[CHAIN_ID], labsMultisig: addresses.teamMultisig[CHAIN_ID], burnWallet: BURN_WALLET, } diff --git a/scripts/deploy/gelato-resolver.ts b/scripts/deploy/gelato-resolver.ts deleted file mode 100644 index 420db2f..0000000 --- a/scripts/deploy/gelato-resolver.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { ethers, network } from 'hardhat' -import { deployContract } from '../../utils/deployContract' -import LiquidMining from '../../deployments/LiquidMiningDiamond.json' - -async function main() { - const liquidMining = LiquidMining[network.name as keyof typeof LiquidMining] - - try { - const GelatoResolver = await deployContract('GelatoResolver', { - args: [liquidMining.address], - log: true, - }) - - const DiamondManagerFacet = await ethers.getContractAt( - 'DiamondManagerFacet', - liquidMining.address - ) - await DiamondManagerFacet.setGelatoExecutor( - await GelatoResolver.getAddress() - ) - } catch (error) { - console.log(error) - } -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) diff --git a/scripts/deploy/release.ts b/scripts/deploy/release.ts deleted file mode 100644 index 42946bb..0000000 --- a/scripts/deploy/release.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { ethers, network } from 'hardhat' -import LiquidMiningDiamond from '../../deployments/LiquidMiningDiamond.json' -import { ChainId, addresses } from '../../config/addresses' - -async function main() { - const diamondAddress = - LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] - .address - const DiamondManagerFacet = await ethers.getContractAt( - 'DiamondManagerFacet', - diamondAddress - ) - - // const boostFixTx = await DiamondManagerFacet.setBoostFeeReceivers( - // [ - // addresses.teamMultisig[ChainId.AVALANCHE], - // addresses.xVAPE[ChainId.AVALANCHE], - // addresses.passportPool[ChainId.AVALANCHE], - // ], - // [6000, 3000, 1000] - // ) - // await boostFixTx.wait(1) - - // console.log('āœ… Boost fee receivers set') - - // const emTx = await DiamondManagerFacet.setEmissionsManager( - // addresses.emissionsManager[ChainId.AVALANCHE] - // ) - // await emTx.wait(1) - - // console.log('āœ… Emissions manager set') - - const startSeasonTx = await DiamondManagerFacet.startNewSeasonWithDuration( - '15000000000000000000000', - 24 - ) - await startSeasonTx.wait(1) - - console.log('āœ… New season started') - - const mintVAPETx = await DiamondManagerFacet.claimTokensForSeason() - await mintVAPETx.wait(1) - - console.log('āœ… Vape minted') - - console.log('āœ… All done') -} - -main() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error) - process.exit(1) - }) diff --git a/scripts/upgradeDiamond.ts b/scripts/upgradeDiamond.ts index 2f41285..e60dd77 100644 --- a/scripts/upgradeDiamond.ts +++ b/scripts/upgradeDiamond.ts @@ -2,7 +2,6 @@ import { network } from 'hardhat' import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' import { deployContract } from '../utils/deployContract' import { addOrReplaceFacets } from '../utils/diamond' -import { defaultArgs } from './deploy/deployDiamond' import getFacets from '../utils/getFacets' async function main() { diff --git a/scripts/upgradeDiamondSafe.ts b/scripts/upgradeDiamondSafe.ts new file mode 100644 index 0000000..9a871d7 --- /dev/null +++ b/scripts/upgradeDiamondSafe.ts @@ -0,0 +1,52 @@ +import Safe, { EthersAdapter } from '@safe-global/protocol-kit' +import { ethers, network } from 'hardhat' +import TokenFactoryDiamond from '../deployments/LiquidMiningDiamond.json' +import { deployContract } from '../utils/deployContract' +import { addOrReplaceFacets } from '../utils/diamond' +import getFacets from '../utils/getFacets' +import { addresses } from '../config/addresses' + +async function main() { + console.log('šŸ’Ž Upgrading diamond') + const CHAIN_ID = ['avalanche', 'fuji'].includes(network.name) + ? network.config?.chainId || '43113' + : '43113' + const diamondAddress = + TokenFactoryDiamond[network.name as keyof typeof TokenFactoryDiamond] + .address + + // Deploy Facets + const FacetNames = getFacets(['DiamondCutFacet', 'DiamondLoupeFacet']) + + const Facets = [] + for (const name of FacetNames) { + Facets.push(await deployContract(name)) + } + + // Create Safe Adapter + const [deployer] = await ethers.getSigners() + const ethAdapter = new EthersAdapter({ ethers, signerOrProvider: deployer }) + const safeSdk = await Safe.create({ + ethAdapter, + safeAddress: addresses.teamMultiSig[CHAIN_ID], + }) + + // Do diamond cut + console.log('šŸ’Ž Adding facets') + await addOrReplaceFacets( + Facets, + diamondAddress, + undefined, + undefined, + safeSdk + ) + + console.log('āœ… Diamond upgraded') +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 97586d0..36b86ad 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -37,6 +37,7 @@ contract DiamondManagerFacet { event UnlockFeeReceiversSet(address[] receivers, uint256[] proportion); event SeasonStarted(uint256 indexed seasonId, uint256 rewardTokenToDistribute); event SeasonEnded(uint256 indexed seasonId, uint256 rewardTokenDistributed); + event MiningPassFeeReceiversSet(address[] receivers, uint256[] proportion); modifier onlyOwner() { if (msg.sender != LDiamond.contractOwner()) { @@ -111,6 +112,22 @@ contract DiamondManagerFacet { emit UnlockFeeReceiversSet(receivers, proportion); } + function setMiningPassFeeReceivers(address[] memory receivers, uint256[] memory proportion) external onlyOwner { + if (receivers.length != proportion.length) { + revert DiamondManagerFacet__Invalid_Input(); + } + uint256 totalShares = 0; + for (uint256 i; i < proportion.length; i++) { + totalShares += proportion[i]; + } + if (totalShares != TOTAL_SHARES) { + revert DiamondManagerFacet__Invalid_Input(); + } + s.miningPassFeeReceivers = receivers; + s.miningPassFeeReceiversShares = proportion; + emit MiningPassFeeReceiversSet(receivers, proportion); + } + function setRewardToken(address token) external validAddress(token) onlyOwner { s.rewardToken = token; } diff --git a/src/facets/FeeCollectorFacet.sol b/src/facets/FeeCollectorFacet.sol index 6c7c63a..7bec1b3 100644 --- a/src/facets/FeeCollectorFacet.sol +++ b/src/facets/FeeCollectorFacet.sol @@ -3,7 +3,7 @@ pragma solidity 0.8.18; import { LDiamond } from "clouds/diamond/LDiamond.sol"; import { IERC20 } from "openzeppelin/contracts/token/ERC20/IERC20.sol"; - +import { LAuthorizable } from "../libraries/LAuthorizable.sol"; import { AppStorage } from "../libraries/AppStorage.sol"; /// @title FeeCollectorFacet @@ -21,7 +21,8 @@ contract FeeCollectorFacet { /// @notice Transfer the collected boost fees to the fee receivers /// @dev As long as the boostFeeReceivers and miningPassFeeReceivers /// @dev are the same, this function can be used to collect both - function collectBoostFees() external onlyOwner { + function collectBoostFees() external { + LAuthorizable.enforceIsAuthorized(s, msg.sender); address[] memory _receivers = s.boostFeeReceivers; uint256 _length = _receivers.length; address _feeToken = s.feeToken; @@ -35,7 +36,8 @@ contract FeeCollectorFacet { } /// @notice Transfer the collected unlock fees to the fee receivers - function collectUnlockFees() external onlyOwner { + function collectUnlockFees() external { + LAuthorizable.enforceIsAuthorized(s, msg.sender); address[] memory _receivers = s.unlockFeeReceivers; uint256 _length = _receivers.length; address _depositToken = s.depositToken; diff --git a/tasks/admin.ts b/tasks/admin.ts index 8b8e300..8051873 100644 --- a/tasks/admin.ts +++ b/tasks/admin.ts @@ -1,5 +1,7 @@ import { task } from 'hardhat/config' import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { addresses } from '../config/addresses' +import { BURN_WALLET } from '../config/constants' task('admin:authorize', 'Authorize an address to perform admin actions') .addParam('address') @@ -14,3 +16,86 @@ task('admin:authorize', 'Authorize an address to perform admin actions') await AuthorizationFacet.authorize(address) }) + +task('admin:set-boost-fee-receivers', 'Set boost fee receivers').setAction( + async (params, { ethers, network }) => { + const CHAIN_ID = ['avalanche', 'fuji'].includes(network.name) + ? network.config?.chainId || '43113' + : '43113' + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const args = { + receivers: [ + addresses.teamMultisig[CHAIN_ID], + addresses.xVAPE[CHAIN_ID], + addresses.passportPool[CHAIN_ID], + ], + proportion: [6000, 3000, 1000], // 100% == 10_000 + } + + await DiamondManagerFacet.setBoostFeeReceivers( + args.receivers, + args.proportion + ) + } +) + +task( + 'admin:set-mining-pass-fee-receivers', + 'Set mining pass fee receivers' +).setAction(async (params, { ethers, network }) => { + const CHAIN_ID = ['avalanche', 'fuji'].includes(network.name) + ? network.config?.chainId || '43113' + : '43113' + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const args = { + receivers: [ + addresses.xVAPE[CHAIN_ID], + addresses.teamMultisig[CHAIN_ID], + addresses.passportPool[CHAIN_ID], + ], + proportion: [6500, 3000, 500], // 100% == 10_000 + } + + await DiamondManagerFacet.setMiningPassFeeReceivers( + args.receivers, + args.proportion + ) +}) + +task('admin:set-unlock-fee-receivers', 'Set unlock fee receivers').setAction( + async (params, { ethers, network }) => { + const CHAIN_ID = ['avalanche', 'fuji'].includes(network.name) + ? network.config?.chainId || '43113' + : '43113' + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + await DiamondManagerFacet.setUnlockFeeReceivers( + [ + addresses.vpndReplenishmentPool[CHAIN_ID], + addresses.teamMultisig[CHAIN_ID], + BURN_WALLET, + ], + [8000, 1000, 1000] // 100% == 10_000 + ) + } +) diff --git a/utils/diamond.ts b/utils/diamond.ts index 2bc0d4a..5f93fe4 100644 --- a/utils/diamond.ts +++ b/utils/diamond.ts @@ -7,6 +7,8 @@ import { } from 'ethers' import { ethers } from 'hardhat' import { IDiamondLoupe } from '../typechain-types' +import Safe from '@safe-global/protocol-kit' +import { MetaTransactionData } from '@safe-global/safe-core-sdk-types' export type FacetCut = { facetAddress: string @@ -32,7 +34,8 @@ export async function addOrReplaceFacets( facets: BaseContract[], diamondAddress: string, initContract: string = ZeroAddress, - initData = '0x' + initData = '0x', + safe: Safe | undefined ): Promise { const loupe = ( await ethers.getContractAt('IDiamondLoupe', diamondAddress) @@ -81,7 +84,7 @@ export async function addOrReplaceFacets( } console.log('Adding/Replacing facet(s)...', diamondAddress, cut) - await doCut(diamondAddress, cut, initContract, initData) + await doCut(diamondAddress, cut, initContract, initData, safe) console.log('Done.') } @@ -159,17 +162,30 @@ async function doCut( diamondAddress: string, cut: any[], initContract: string, - initData: string + initData: string, + safe?: Safe ): Promise { const cutter = await ethers.getContractAt('DiamondCutFacet', diamondAddress) console.log('Cutting diamond...') - console.log( - 'šŸš€ ~ file: diamond.ts:168 ~ cut, initContract, initData:', - cut, - initContract, - initData - ) + if (safe) { + const safeTransactionData: MetaTransactionData = { + data: cutter.interface.encodeFunctionData('diamondCut', [ + cut, + initContract, + initData, + ]), + to: diamondAddress, + value: '0', + } + console.log( + 'šŸš€ ~ safeTransactionData - manually add to Gnosis Safe:', + safeTransactionData + ) + + return + } + const tx = await cutter.diamondCut(cut, initContract, initData) const receipt = await tx.wait() if (!receipt?.status) { diff --git a/yarn.lock b/yarn.lock index 665c814..6ef8483 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + "@adraffy/ens-normalize@1.9.2": version "1.9.2" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316" @@ -442,6 +447,13 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + "@noble/hashes@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" @@ -452,6 +464,16 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@^1.3.3": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" @@ -737,6 +759,33 @@ dependencies: solhint "^3.4.0" +"@safe-global/protocol-kit@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-4.0.2.tgz#5555e65359eeb5d210608aaa1ab889df15c14150" + integrity sha512-csmBR22XY0Sgx2Q6WSdRiAPj5UlR3FxrMeoAqUbV7kCzT7SVXBwrsRqLjiW2+B59Dgcxs6fR8aLjl7maweBPXw== + dependencies: + "@noble/hashes" "^1.3.3" + "@safe-global/safe-core-sdk-types" "^5.0.2" + "@safe-global/safe-deployments" "^1.37.0" + abitype "^1.0.2" + ethereumjs-util "^7.1.5" + ethers "^6.13.1" + semver "^7.6.2" + +"@safe-global/safe-core-sdk-types@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-5.0.2.tgz#9552f5793581333c81676986b3eb19697e1c6627" + integrity sha512-UK2WL9nXN/8ez4Upx1D0KhtNXwkEjuV5O2XDem4Jchw5IBCLJnLowUBgEq8Tw4xdB7x2rw72VFAJXYZ/iY4qYw== + dependencies: + abitype "^1.0.2" + +"@safe-global/safe-deployments@^1.37.0": + version "1.37.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.37.0.tgz#3fc33fe03abcf404e261f3d5988791dd0a979558" + integrity sha512-OInLNWC9EPem/eOsvPdlq4Gt/08Nfhslm9z6T92Jvjmcu6hs85vjfnDP1NrzwcOmsCarATU5NH2bTITd9VNCPw== + dependencies: + semver "^7.6.0" + "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" @@ -1023,6 +1072,11 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== +abitype@^1.0.2: + version "1.0.5" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" + integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -2287,7 +2341,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethjs-util "0.1.6" rlp "^2.2.3" -ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4: +ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -2362,6 +2416,19 @@ ethers@^5.5.3, ethers@^5.7.1: "@ethersproject/web" "5.7.1" "@ethersproject/wordlists" "5.7.0" +ethers@^6.13.1: + version "6.13.1" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.1.tgz#2b9f9c7455cde9d38b30fe6589972eb083652961" + integrity sha512-hdJ2HOxg/xx97Lm9HdCWk949BfYqYWpyw4//78SiwOLgASyfrNszfMUNB2joKjvGUdwhHfaiMMFFwacVVoLR9A== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "18.15.13" + aes-js "4.0.0-beta.5" + tslib "2.4.0" + ws "8.17.1" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -4770,6 +4837,11 @@ semver@^7.3.4, semver@^7.3.8: dependencies: lru-cache "^6.0.0" +semver@^7.6.0, semver@^7.6.2: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -5673,6 +5745,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + ws@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" From f02faebdaffe9527bb1c2620fa3dde7f36cd1428 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Wed, 11 Feb 2026 15:35:01 +0530 Subject: [PATCH 26/34] feat: introduce dynamic mining pass price DEV-1084 --- .gitignore | 5 + .vscode/settings.json | 5 + foundry.lock | 20 + package.json | 4 + scripts/simulation/Season30_TierPricing.csv | 32 ++ ...uidMining_Season30_Analysis_2026-01-30.csv | 312 +++++++++++++ scripts/simulation/analyzeUtilization.ts | 69 +++ scripts/simulation/exportSeasonAnalysis.ts | 282 ++++++++++++ scripts/simulation/miningPassPricing.ts | 414 +++++++++++++++++ scripts/simulation/miningPassROIAnalysis.ts | 426 ++++++++++++++++++ scripts/simulation/unprofitableAnalysis.ts | 206 +++++++++ src/facets/DiamondManagerFacet.sol | 146 +++++- src/libraries/AppStorage.sol | 4 + src/upgradeInitializers/DiamondInit.sol | 27 +- .../Facets/MiningPassDynamicPricing.t.sol | 392 ++++++++++++++++ test/foundry/utils/DiamondTest.sol | 16 +- yarn.lock | 99 ++++ 17 files changed, 2435 insertions(+), 24 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 foundry.lock create mode 100644 scripts/simulation/Season30_TierPricing.csv create mode 100644 scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv create mode 100644 scripts/simulation/analyzeUtilization.ts create mode 100644 scripts/simulation/exportSeasonAnalysis.ts create mode 100644 scripts/simulation/miningPassPricing.ts create mode 100644 scripts/simulation/miningPassROIAnalysis.ts create mode 100644 scripts/simulation/unprofitableAnalysis.ts create mode 100644 test/foundry/Facets/MiningPassDynamicPricing.t.sol diff --git a/.gitignore b/.gitignore index b519c99..27becb6 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,8 @@ node_modules/ # IDE .idea + +# Misc +.DS_Store +.archive/ + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..a8c2003 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python-envs.defaultEnvManager": "ms-python.python:conda", + "python-envs.defaultPackageManager": "ms-python.python:conda", + "python-envs.pythonProjects": [] +} \ No newline at end of file diff --git a/foundry.lock b/foundry.lock new file mode 100644 index 0000000..d398b94 --- /dev/null +++ b/foundry.lock @@ -0,0 +1,20 @@ +{ + "lib/clouds": { + "branch": { + "name": "main", + "rev": "50e831db068af977cd9c4169ecf1a6119934a034" + } + }, + "lib/forge-std": { + "branch": { + "name": "master", + "rev": "520f86e57e0682bdac282748a33a138a47f1d552" + } + }, + "lib/openzeppelin-contracts": { + "rev": "3f610ebc25480bf6145e519c96e2f809996db8ed" + }, + "lib/solmate": { + "rev": "1b3adf677e7e383cc684b5d5bd441da86bf4bf1c" + } +} \ No newline at end of file diff --git a/package.json b/package.json index fabb0ca..667bd54 100644 --- a/package.json +++ b/package.json @@ -66,5 +66,9 @@ "typechain": "^8.2.0", "typescript": "5.1.6", "yargs": "^17.7.2" + }, + "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610", + "dependencies": { + "viem": "2.45.1" } } diff --git a/scripts/simulation/Season30_TierPricing.csv b/scripts/simulation/Season30_TierPricing.csv new file mode 100644 index 0000000..1f68871 --- /dev/null +++ b/scripts/simulation/Season30_TierPricing.csv @@ -0,0 +1,32 @@ +"VaporFi Liquid Mining - Dynamic Pricing Analysis" +"Season 30 (VAPE Price: $0.16)" +"" +"Formula:","dynamicFee = originalFee Ɨ (currentVAPEPrice / referenceVAPEPrice)" +"Reference VAPE Price:","$0.606","(Oct 16, 2023 - when original fees were set)" +"Current VAPE Price:","$0.16","(Season 30)" +"Multiplier:","0.264","(0.16 / 0.606)" +"" +"TIER PRICING TABLE" +"Tier","Deposit Limit (VPND)","Original Fee (USD)","Dynamic Fee (USD)","Reduction %" +"0","5,000","$0.00","$0.00","-" +"1","10,000","$0.50","$0.13","74%" +"2","25,000","$1.00","$0.26","74%" +"3","60,000","$2.00","$0.53","74%" +"4","150,000","$4.00","$1.06","74%" +"5","350,000","$8.00","$2.11","74%" +"6","800,000","$15.00","$3.96","74%" +"7","1,800,000","$30.00","$7.92","74%" +"8","4,500,000","$50.00","$13.20","74%" +"9","12,000,000","$75.00","$19.80","74%" +"10","Unlimited","$100.00","$26.40","74%" +"" +"IMPACT SUMMARY (Season 30 Data)" +"Metric","Original Pricing","Dynamic Pricing" +"Total Fees Collected","$1,305.00","$344.55" +"Profitable Users","33/112 (29.5%)","109/112 (97.3%)" +"Average ROI","0.93x","3.51x" +"" +"NOTES" +"- Dynamic pricing scales fees proportionally with VAPE price" +"- When VAPE price recovers, fees will increase accordingly" +"- Tier 0 remains free (no mining pass required)" diff --git a/scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv b/scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv new file mode 100644 index 0000000..5dc933a --- /dev/null +++ b/scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv @@ -0,0 +1,312 @@ +"Wallet Address","Tier","Tier Deposit Limit (VPND)","Deposited VPND","Wallet Points","Combined Points","VAPE Claimed","VAPE Value (USD)","Original Fee (USD)","Dynamic Fee (USD)","Original ROI (x)","Dynamic ROI (x)","Original Profit/Loss (USD)","Dynamic Profit/Loss (USD)","Original Profitable?","Dynamic Profitable?" +"0xd3dff402b74563b559c620a5c56ad2f048587c1c","9","12,000,000","11,500,000","334,777,864.42","334,339,186.05","1787.4742","286.00","75.00","19.80","3.81","14.44","211.00","266.19","Yes","Yes" +"0xd5c69e00b28034068bceba48a64213e52ef7b1e0","9","12,000,000","7,145,342.69","216,662,395.74","216,244,198.03","1156.8221","185.09","75.00","19.80","2.47","9.35","110.09","165.29","Yes","Yes" +"0x97adf680aaaf803018c0204cf1be1da258cb14ae","9","12,000,000","7,061,878.63","216,422,964.22","216,005,077.82","1155.5438","184.89","75.00","19.80","2.47","9.34","109.89","165.09","Yes","Yes" +"0x7ce921b5ae5afd8063f70b40d44097f6d4c8871f","9","12,000,000","6,975,059.9","211,606,700.02","211,462,432.6","1129.8283","180.77","75.00","19.80","2.41","9.13","105.77","160.97","Yes","Yes" +"0x5d0fce0faea808649c3d4ce3ac9f841b6295e1af","9","12,000,000","5,230,648.57","161,333,616.71","160,897,748.83","861.4061","137.82","75.00","19.80","1.84","6.96","62.82","118.02","Yes","Yes" +"0x957a200dc62e4378ffddc93ae6cfea39601e5831","8","4,500,000","4,500,000","135,315,741.77","234,606,938.3","722.4892","115.60","50.00","13.20","2.31","8.76","65.60","102.40","Yes","Yes" +"0x3a8f7b4324610eead8f6b34f8717e1f18bac4c46","8","4,500,000","4,500,000","135,306,234","135,117,000","722.4385","115.59","50.00","13.20","2.31","8.76","65.59","102.39","Yes","Yes" +"0xd9366e6595ab1a5c137c605a6b90737aa8725f0f","8","4,500,000","3,286,160.72","99,483,206.6","234,606,938.3","531.1691","84.99","50.00","13.20","1.70","6.44","34.99","71.79","Yes","Yes" +"0xb6e87d208c8bf543ca5aedc452a7eafe442fae10","8","4,500,000","2,751,059.48","82,531,784.42","0","440.6607","70.51","50.00","13.20","1.41","5.34","20.51","57.30","Yes","Yes" +"0x11b248f27a753ec44ac2c699445e20d5c7f7aa0a","7","1,800,000","1,799,999","55,187,362.96","55,084,394.17","294.6610","47.15","30.00","7.92","1.57","5.95","17.15","39.22","Yes","Yes" +"0xa15704171245d148206a8f1240eb51cf3dadc368","7","1,800,000","1,800,000","52,200,000","0","278.7106","44.59","30.00","7.92","1.49","5.63","14.59","36.67","Yes","Yes" +"0x81fe73a6fb28c49c14c82fcae2a4fe19f57d150c","7","1,800,000","1,800,000","52,200,000","0","278.7106","44.59","30.00","7.92","1.49","5.63","14.59","36.67","Yes","Yes" +"0x9e4c71b315982ad19d218ca99fa29c1d2f600119","7","1,800,000","1,800,000","50,400,000","50,400,000","269.0999","43.06","30.00","7.92","1.44","5.44","13.06","35.14","Yes","Yes" +"0x8f60fa5a89b9aa01ba6b32ca1641e69ae8d0bafb","7","1,800,000","1,510,628.39","44,322,747.04","44,240,308.93","236.6518","37.86","30.00","7.92","1.26","4.78","7.86","29.94","Yes","Yes" +"0x98a23fca1b642b54a95565503e6662bb814bb824","7","1,800,000","1,800,000","38,477,001.65","54,677,001.65","205.4397","32.87","30.00","7.92","1.10","4.15","2.87","24.95","Yes","Yes" +"0xed5f92f2c2d562f981a13521d421f5a1ff927f59","6","800,000","800,000","24,800,196.73","24,733,183.81","132.4153","21.19","15.00","3.96","1.41","5.35","6.19","17.23","Yes","Yes" +"0x64456ad298f0972daf26aa1d23af93a2962eba0e","6","800,000","800,000","24,656,239.76","24,608,622.51","131.6467","21.06","15.00","3.96","1.40","5.32","6.06","17.10","Yes","Yes" +"0x77847c5da38dc3d385b1753392c0b7ce64536930","6","800,000","800,000","24,655,918.85","24,655,918.85","131.6450","21.06","15.00","3.96","1.40","5.32","6.06","17.10","Yes","Yes" +"0x1a7896295222038d2aeeb8b621d32bd9cb88d4e2","6","800,000","800,000","24,500,905.26","24,453,598.07","130.8173","20.93","15.00","3.96","1.40","5.29","5.93","16.97","Yes","Yes" +"0xf9c9cdf8d95c211188313f7d3ec29128fb900872","6","800,000","800,000","24,020,806.4","24,020,806.4","128.2539","20.52","15.00","3.96","1.37","5.18","5.52","16.56","Yes","Yes" +"0xaf35cde2e2e1e68356f48c013613a3955d5dc6b6","6","800,000","800,000","24,001,600","24,000,000","128.1514","20.50","15.00","3.96","1.37","5.18","5.50","16.54","Yes","Yes" +"0x365c46cfea1855c82f5544d76b5e5fbe2d628985","6","800,000","800,000","24,000,000","24,000,000","128.1428","20.50","15.00","3.96","1.37","5.18","5.50","16.54","Yes","Yes" +"0x379949eb8ee41b121e2b54f990154ac31126c9fe","6","800,000","800,000","23,617,453.74","23,617,453.74","126.1003","20.18","15.00","3.96","1.35","5.09","5.18","16.22","Yes","Yes" +"0x294b3782aef0848f8bb233172cc46eff8b1d3c49","6","800,000","800,000","23,200,000","0","123.8714","19.82","15.00","3.96","1.32","5.00","4.82","15.86","Yes","Yes" +"0xa176c9630f02a71f9fcffe88922ec0d52b428d7d","6","800,000","800,000","22,400,000","0","119.6000","19.14","15.00","3.96","1.28","4.83","4.14","15.18","Yes","Yes" +"0xa70d11752e0b6c2ad026cf60c4114d8c6909df6b","6","800,000","704,432","21,132,960","21,132,960","112.8349","18.05","15.00","3.96","1.20","4.56","3.05","14.09","Yes","Yes" +"0x980ece433b54caa56251d050cb90e706871cec8d","6","800,000","556,318","16,860,848.26","16,829,414.7","90.0249","14.40","15.00","3.96","0.96","3.64","-0.60","10.44","No","Yes" +"0x41845e0384535423b6a3d64c79cf5721bdb87a1f","6","800,000","550,800","16,524,000","0","88.2263","14.12","15.00","3.96","0.94","3.56","-0.88","10.16","No","Yes" +"0x386344dece8caddaa272dc29a866fc7729f4ad8e","6","800,000","520,400","15,612,000","0","83.3569","13.34","15.00","3.96","0.89","3.37","-1.66","9.38","No","Yes" +"0x2a6d8c30e25af6d6f0c5dcc1455352c0c8cfaf31","6","800,000","512,309.93","15,369,297.84","15,369,297.84","82.0611","13.13","15.00","3.96","0.88","3.32","-1.87","9.17","No","Yes" +"0x72aa6125c2a93d0c5bbadd524718f5e4d13cd1c5","6","800,000","795,500","12,728,000","0","67.9584","10.87","15.00","3.96","0.72","2.75","-4.13","6.91","No","Yes" +"0xfdd498c312cb5aac919e830d6315290d2be190c7","5","350,000","350,000","10,747,086.16","10,726,333.5","57.3817","9.18","8.00","2.11","1.15","4.35","1.18","7.07","Yes","Yes" +"0xa3fb39949dfe8040f42378cf66dc7f90719150d9","5","350,000","350,000","10,682,557.9","10,661,934.03","57.0372","9.13","8.00","2.11","1.14","4.32","1.13","7.01","Yes","Yes" +"0xff61a30a954367758552d5fd9ce7a28369898496","5","350,000","349,000","10,513,400.44","10,499,381.68","56.1340","8.98","8.00","2.11","1.12","4.25","0.98","6.87","Yes","Yes" +"0x76da553883cd6f24fb6b3cda16d273b93a65ada8","5","350,000","350,000","10,500,000","10,500,000","56.0625","8.97","8.00","2.11","1.12","4.25","0.97","6.86","Yes","Yes" +"0x445715d1f5a737d71de630d73e3ae3fc303712bf","5","350,000","350,000","10,500,000","0","56.0625","8.97","8.00","2.11","1.12","4.25","0.97","6.86","Yes","Yes" +"0x041c60e0962f8d8791aa683cd450aec42d5ffca0","5","350,000","350,000","10,500,000","0","56.0625","8.97","8.00","2.11","1.12","4.25","0.97","6.86","Yes","Yes" +"0x8065bed17ac2686ef9c5b706bf39188e4ed19719","5","350,000","350,000","10,150,000","0","54.1937","8.67","8.00","2.11","1.08","4.11","0.67","6.56","Yes","Yes" +"0xad1be47f4f502b165af5c88cec7c5f52953aa005","5","350,000","278,500","8,415,990.13","8,401,971.18","44.9354","7.19","8.00","2.11","0.90","3.40","-0.81","5.08","No","Yes" +"0xff8c87595495750f407bb94dd35ef7db034fdb59","5","350,000","290,904.79","8,091,951.24","7,366,017.07","43.2052","6.91","8.00","2.11","0.86","3.27","-1.09","4.80","No","Yes" +"0x5c263db138be88737ad66c01428ff847861ad8f1","5","350,000","264,546.55","8,081,337.59","8,065,735.22","43.1486","6.90","8.00","2.11","0.86","3.27","-1.10","4.79","No","Yes" +"0x818cdfedc8578fef02dc0d0aeec1448a450ea467","5","350,000","252,832.14","7,584,964.26","0","40.4983","6.48","8.00","2.11","0.81","3.07","-1.52","4.37","No","Yes" +"0x19bc5de9f3f1e438bdfeea5d8cc808f1144aa194","5","350,000","251,724","7,551,720","7,551,720","40.3208","6.45","8.00","2.11","0.81","3.05","-1.55","4.34","No","Yes" +"0x1c176951b49963bbd7b5bd8a0dcdfefbe8ce0977","5","350,000","242,028.1","7,406,419.5","7,392,119.31","39.5450","6.33","8.00","2.11","0.79","3.00","-1.67","4.21","No","Yes" +"0x2d41e869993b91270fae00823622f2f9c7925ab5","5","350,000","348,553.25","6,971,064.99","0","37.2205","5.96","8.00","2.11","0.74","2.82","-2.04","3.84","No","Yes" +"0x2dba82021c355a0239e951c8c93dcf1e9b82246f","5","350,000","289,541.88","5,611,031.77","5,600,987.96","29.9589","4.79","8.00","2.11","0.60","2.27","-3.21","2.68","No","Yes" +"0x2795f97541e6b9af8213a5b491e6f20f23b8ed0b","4","150,000","150,000","4,502,102.4","4,500,900.6","24.0380","3.85","4.00","1.06","0.96","3.64","-0.15","2.79","No","Yes" +"0xd8c0d5523824994d43743f94dab72f16b306b248","4","150,000","150,000","4,500,000","0","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0xccf81389129f506d2a278e1ace0b6fa942a6b4a4","4","150,000","150,000","4,500,000","4,500,000","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0xc28e635715b808494187941bbb26248e1ce8e1b2","4","150,000","150,000","4,500,000","0","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0x556e1e264994b18e166d2d8c4912d9189eb168b5","4","150,000","150,000","4,500,000","0","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0x45de9a46375408d9acfe241e29c59ca2b1d19a22","4","150,000","150,000","4,500,000","0","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0x126ec9c6dc8ce7f834f2302cfcf57d526add8013","4","150,000","150,000","4,500,000","4,500,000","24.0268","3.84","4.00","1.06","0.96","3.64","-0.16","2.79","No","Yes" +"0x8c9524d7756c3f87ac3a174fc93f193260a3729a","4","150,000","143,351.9","4,162,652.55","4,157,205.18","22.2256","3.56","4.00","1.06","0.89","3.37","-0.44","2.50","No","Yes" +"0x5ad4f60eead27b5036aaebfa17016aef4e79d920","4","150,000","150,000","4,050,000","0","21.6241","3.46","4.00","1.06","0.86","3.28","-0.54","2.40","No","Yes" +"0x32e6557a77724385732df7112eb7693115171d3e","4","150,000","150,000","3,900,000","0","20.8232","3.33","4.00","1.06","0.83","3.15","-0.67","2.28","No","Yes" +"0x97f46368175b980b7124e38f0af4daac008a058f","4","150,000","129,727.05","3,762,084.4","0","20.0868","3.21","4.00","1.06","0.80","3.04","-0.79","2.16","No","Yes" +"0xe1eaf4834316cc6d6c90cea7dfae52224664690c","4","150,000","150,000","3,604,500","3,600,000","19.2455","3.08","4.00","1.06","0.77","2.92","-0.92","2.02","No","Yes" +"0x34d3e737cc228aaebea03ec8e98426ee3748b30a","5","350,000","270,322.26","3,514,189.43","0","18.7633","3.00","8.00","2.11","0.38","1.42","-5.00","0.89","No","Yes" +"0x804acfdffdf8d09af6abf7b4c48ccc690a36fd29","4","150,000","140,502.36","3,372,056.63","0","18.0044","2.88","4.00","1.06","0.72","2.73","-1.12","1.82","No","Yes" +"0x1635ce4325eb96817610255fed3b39273deea95e","5","350,000","300,000.01","3,300,000.1","0","17.6196","2.82","8.00","2.11","0.35","1.33","-5.18","0.71","No","Yes" +"0xb84180c2d8ef3d07d2bf8e0a20960bd12a879c88","4","150,000","109,735","3,182,315","0","16.9913","2.72","4.00","1.06","0.68","2.57","-1.28","1.66","No","Yes" +"0xc16f48ce7c684c9f9801c536a9adaec82d22ffec","4","150,000","117,102.28","2,959,835.92","2,954,161.8","15.8034","2.53","4.00","1.06","0.63","2.39","-1.47","1.47","No","Yes" +"0xaa3c5ab4627d5114e1565d4b483a93c9b8925628","4","150,000","96,170.41","2,885,112.39","0","15.4044","2.46","4.00","1.06","0.62","2.33","-1.54","1.41","No","Yes" +"0x3dad445ebde7815fede16604f2d1e98dfa7c78f1","4","150,000","99,250.18","2,878,255.28","0","15.3678","2.46","4.00","1.06","0.61","2.33","-1.54","1.40","No","Yes" +"0x2ab9f95d1e1cf102785ea9b71c97ea9ae50ed763","4","150,000","91,000","2,736,122.33","2,732,548","14.6089","2.34","4.00","1.06","0.58","2.21","-1.66","1.28","No","Yes" +"0x83771c019a51462a3407c54345a02dc8c6a85108","4","150,000","119,911.84","2,638,060.55","0","14.0854","2.25","4.00","1.06","0.56","2.13","-1.75","1.20","No","Yes" +"0x632a8281c898ae05c33305fd5c1deccc21e2e10b","4","150,000","150,000","2,550,000","0","13.6152","2.18","4.00","1.06","0.54","2.06","-1.82","1.12","No","Yes" +"0x484464bf49f57b1a0d45621a631c8d2ee17035eb","3","60,000","60,000","1,839,326.05","1,836,014.03","9.8207","1.57","2.00","0.53","0.79","2.98","-0.43","1.04","No","Yes" +"0x0bf5f13833cb7d1c6c1399ea6c4ec8aaab4b5639","3","60,000","60,000","1,831,917.09","1,828,500.09","9.7811","1.56","2.00","0.53","0.78","2.96","-0.44","1.04","No","Yes" +"0xea11381ada3590103d756f01e1c492ffe94d9f2f","3","60,000","60,000","1,800,000","1,800,000","9.6107","1.54","2.00","0.53","0.77","2.91","-0.46","1.01","No","Yes" +"0xaa1b8e331c0177a0ec38827ea5ba015a41c3e341","3","60,000","60,000","1,800,000","0","9.6107","1.54","2.00","0.53","0.77","2.91","-0.46","1.01","No","Yes" +"0x9b29082e51e24dc8b91497cba7e5ac597b9aa7f6","3","60,000","60,000","1,800,000","0","9.6107","1.54","2.00","0.53","0.77","2.91","-0.46","1.01","No","Yes" +"0x3ae67635546101605e6e48ad74bf09c7fb4b0e78","7","1,800,000","1,800,000","1,800,000","1,800,000","9.6107","1.54","30.00","7.92","0.05","0.19","-28.46","-6.38","No","No" +"0xca54fa35a5b545c1564f9373255e29d30192f6e7","3","60,000","59,497.33","1,794,849.39","1,792,929.45","9.5832","1.53","2.00","0.53","0.77","2.90","-0.47","1.01","No","Yes" +"0xc8f8a1e764afaf012d296a60b32e0e17e1693a85","3","60,000","60,000","1,740,000","0","9.2904","1.49","2.00","0.53","0.74","2.81","-0.51","0.96","No","Yes" +"0x86a69e4fa797262e9cb539155adf1ae6681a9766","3","60,000","60,000","1,740,000","0","9.2904","1.49","2.00","0.53","0.74","2.81","-0.51","0.96","No","Yes" +"0x397fcacc9b35d464ed4ec2330d6b5172b61a5822","3","60,000","60,000","1,740,000","0","9.2904","1.49","2.00","0.53","0.74","2.81","-0.51","0.96","No","Yes" +"0x105156087fc2f383f5002465f0fdeb94da6c8a80","3","60,000","60,000","1,740,000","0","9.2904","1.49","2.00","0.53","0.74","2.81","-0.51","0.96","No","Yes" +"0xbe617e01a5cc450360a7dc27fe410557dab04769","3","60,000","60,000","1,620,360","1,620,000","8.6516","1.38","2.00","0.53","0.69","2.62","-0.62","0.86","No","Yes" +"0xb6ad6c7021bf0b3f250fb52e4b68f01cd31464e8","3","60,000","60,000","1,620,000","1,620,000","8.6496","1.38","2.00","0.53","0.69","2.62","-0.62","0.86","No","Yes" +"0xa2bff46104c5db0fceee9d11db0e5bf671d4f3bb","3","60,000","59,480","1,605,960","0","8.5747","1.37","2.00","0.53","0.69","2.60","-0.63","0.84","No","Yes" +"0x9bb72715c2a9edc1c453c076316fef90c9d462fd","3","60,000","60,000","1,528,901.87","1,526,448.98","8.1632","1.31","2.00","0.53","0.65","2.47","-0.69","0.78","No","Yes" +"0xb6f66338a50c9d8ab4e8cd516ad8aacce8b5028d","3","60,000","60,000","1,500,000","0","8.0089","1.28","2.00","0.53","0.64","2.43","-0.72","0.75","No","Yes" +"0x879ba6320c909ef3487ba6f5de7361299be78c9f","3","60,000","59,530.79","1,490,769.96","1,488,269.66","7.9596","1.27","2.00","0.53","0.64","2.41","-0.73","0.75","No","Yes" +"0x0a5dbaf976c91b12e448071316d89b215e318d70","3","60,000","52,512.05","1,480,673.19","1,477,822.56","7.9057","1.26","2.00","0.53","0.63","2.40","-0.74","0.74","No","Yes" +"0x90921efeb37a66ee59621fc196087cbf2c27618f","3","60,000","60,000","1,440,000","0","7.6886","1.23","2.00","0.53","0.62","2.33","-0.77","0.70","No","Yes" +"0xe614f620e1ad131d9ef45343548c064faeff25af","3","60,000","52,418.13","1,415,708.97","1,415,289.63","7.5589","1.21","2.00","0.53","0.60","2.29","-0.79","0.68","No","Yes" +"0xe505ca94809baf9340fe0af280ec7143d37b9ae4","3","60,000","44,535.49","1,301,932.72","1,299,511.83","6.9514","1.11","2.00","0.53","0.56","2.11","-0.89","0.58","No","Yes" +"0xab5a2d367a3ef6888caabe20c4b701badd87e58b","3","60,000","60,000","1,277,674.54","1,275,363.81","6.8219","1.09","2.00","0.53","0.55","2.07","-0.91","0.56","No","Yes" +"0x8b94627cf07aaedd57a6dea21fecf3ea533f29f1","3","60,000","36,105.12","1,105,496.84","1,102,510.91","5.9026","0.94","2.00","0.53","0.47","1.79","-1.06","0.42","No","Yes" +"0x67d6f5ad8e142f9b4907b19f680b8503c6893303","3","60,000","36,564.17","988,475.89","987,232.71","5.2778","0.84","2.00","0.53","0.42","1.60","-1.16","0.32","No","Yes" +"0x5224bfae51b4320b1207f7b059b10946ff4e9314","3","60,000","60,000","900,480","900,000","4.8079","0.77","2.00","0.53","0.38","1.46","-1.23","0.24","No","Yes" +"0x00c0118a4c8ceecc2453f2cae0e31ef35e752754","2","25,000","24,656.26","739,687.89","739,687.89","3.9494","0.63","1.00","0.26","0.63","2.39","-0.37","0.37","No","Yes" +"0xbfc246fc6cc9f0e7860c208bb6ea7c1c9003294d","2","25,000","24,184.51","738,502.65","737,173.41","3.9431","0.63","1.00","0.26","0.63","2.39","-0.37","0.37","No","Yes" +"0xb7f563b9660e4b0aa3729ba1e87d3cff0382816d","2","25,000","25,000","735,591.54","734,173.19","3.9275","0.63","1.00","0.26","0.63","2.38","-0.37","0.36","No","Yes" +"0xb847f453ec067377214f90a20826afddf0319eb2","2","25,000","24,173","701,017","0","3.7429","0.60","1.00","0.26","0.60","2.27","-0.40","0.33","No","Yes" +"0xaa5fbd4ffa50f8df3afea0ff936ee62485725554","2","25,000","25,000","700,000","0","3.7375","0.60","1.00","0.26","0.60","2.26","-0.40","0.33","No","Yes" +"0x063c2cb6aa70fcb1410f2f455f153d0664e92369","2","25,000","17,914.24","501,598.79","0","2.6782","0.43","1.00","0.26","0.43","1.62","-0.57","0.16","No","Yes" +"0x5cc65e0f2ed2997d4ff074942e4f56c20a519a1d","2","25,000","25,000","475,000","0","2.5362","0.41","1.00","0.26","0.41","1.54","-0.59","0.14","No","Yes" +"0xe3ee5c72b08c89eb79d9a3f144e3bbc63c388986","2","25,000","13,734.36","412,030.91","412,030.91","2.2000","0.35","1.00","0.26","0.35","1.33","-0.65","0.09","No","Yes" +"0xc0af8fc8d99452639201eda3adc3c997e7c6e7b7","2","25,000","18,766.78","399,470.78","398,785.81","2.1329","0.34","1.00","0.26","0.34","1.29","-0.66","0.08","No","Yes" +"0x1dad04c41f82b2cd932c2edf79e28d81bc57bc39","1","10,000","10,000","304,824.36","304,255.85","1.6275","0.26","0.50","0.13","0.52","1.97","-0.24","0.13","No","Yes" +"0x9a862c5cb00cd7bcf9e8f6b9b8506d117afaacab","2","25,000","11,674.72","303,542.67","0","1.6207","0.26","1.00","0.26","0.26","0.98","-0.74","-0.00","No","No" +"0xcdb40cfb1dff93b0904b46fe4db42d892205e1ae","1","10,000","10,000","300,480","300,000","1.6043","0.26","0.50","0.13","0.51","1.94","-0.24","0.12","No","Yes" +"0xb8423034aa5f0f4359228776275ba9e384c18a0c","1","10,000","10,000","300,000","300,000","1.6018","0.26","0.50","0.13","0.51","1.94","-0.24","0.12","No","Yes" +"0x335977b2165dabe24fa0acc284adee6bc2760e8f","1","10,000","10,000","300,000","0","1.6018","0.26","0.50","0.13","0.51","1.94","-0.24","0.12","No","Yes" +"0x160cf6551ee3d910f673af762d5a2f1bd4855be1","1","10,000","9,996.2","299,886.02","299,886.02","1.6012","0.26","0.50","0.13","0.51","1.94","-0.24","0.12","No","Yes" +"0x27a90a6825132eb88e8feaafe035658663c8944f","3","60,000","32,648.77","261,190.17","0","1.3946","0.22","2.00","0.53","0.11","0.42","-1.78","-0.30","No","No" +"0x084c058bad49a6382090cc5fdab4ab6f64c97349","1","10,000","10,000","240,000","120,000","1.2814","0.21","0.50","0.13","0.41","1.55","-0.29","0.07","No","Yes" +"0x043ed3a18e640e5cc6ec571db07fa7a440234d74","1","10,000","9,341","214,843","0","1.1471","0.18","0.50","0.13","0.37","1.39","-0.32","0.05","No","Yes" +"0xdbce6ced778e6ced746e7ede2bc1babe4de993d0","1","10,000","9,762.16","184,118.19","159,586.3","0.9831","0.16","0.50","0.13","0.31","1.19","-0.34","0.03","No","Yes" +"0xd8427794f8e9af9bc0e027eb9d4d3ee63b2491b3","0","5,000","5,000","150,350.24","150,120","0.8028","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x743fe0b59467e55224220ab61b69da821d09bd6e","0","5,000","5,000","150,200","150,000","0.8020","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xad65bba08c7fa4fd7590c052624dbd91c76fb2fe","0","5,000","5,000","150,070","150,000","0.8013","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf613419a0729d256ebedf4c0f6a4601b164c4f30","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf5b66164ea2b41cd831fd90a34a53a2c19f1ed8f","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xdc23d96c2288d2e8ec71a098469c63a688b1b916","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xce833bb28d15455af31af5a30c4626bf2939e389","0","5,000","5,000","150,000","150,000","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb72ad48aa021c977c9b6473002d2e07701629e66","0","5,000","5,000","150,000","150,000","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb264e63d5c3dc94a1fde625acff2d8b2ba684b8a","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x9de1925269f2c68a2a570647ecb170fc245db448","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8814391f0ecd57dc32166e42abfcbfb92db4b04a","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x77f62b2dd47520f0e29663c8f208a40682202936","0","5,000","5,000","150,000","150,000","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x69ee2db83fe529e1f3b684ace265dc9e8f3cda89","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x28d1c97a2c7e3e0698a06a814a4a9e1047cfc253","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0dcaa84602bdc605eaf5667f784266d20a7f91f2","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0bb4b0bf8d1dd7621f493f1a68ad0887d4e5b478","0","5,000","5,000","150,000","0","0.8009","0.13","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6bbe2a84895ca675b2bf8d3633e25118c12ef912","0","5,000","5,000","145,110","145,000","0.7748","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb555009df0dd3ba8e5c9ae74018dc16f3a14ecf3","0","5,000","5,000","145,000","0","0.7742","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x9c4b88fbe06b6b1e461d9d294ecb7fb0c841db4f","0","5,000","5,000","145,000","0","0.7742","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x93fe43db40c997ae784143f060032db16293d93f","0","5,000","5,000","145,000","0","0.7742","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6713ea196a67ddf7e698e0cbe9225b3649cd7431","0","5,000","5,000","145,000","0","0.7742","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xa61b22be6d93b2ddc184861a0d780acf7d4abaa3","0","5,000","5,000","135,000","243,001.78","0.7208","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1e050ca02787ab13d2006c9f06801789546a9eda","0","5,000","5,000","135,000","0","0.7208","0.12","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x68cb5757bcde51b25b936abcd4c4b02a6cfc2b2a","0","5,000","4,902","132,354","0","0.7067","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x3a50759e226d96f01d11e866e783553367f7ae66","0","5,000","5,000","130,000","0","0.6941","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x3208ca0f0d105082e0d7ba0d5a6158b0b190e08d","0","5,000","5,000","130,000","0","0.6941","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xd00ca4dea8adac3925e7695efd7015aafea898c8","0","5,000","4,392","128,915.51","128,675.72","0.6883","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe470c6e98382b5e1337c424e2f29eb44194c18dc","0","5,000","5,000","125,000","0","0.6674","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb06ee8f2b79d179ae004c2437614d56defba6eb8","0","5,000","5,000","125,000","0","0.6674","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x190a184701a3ab4d50375f3f443a205a4e147949","0","5,000","5,000","125,000","0","0.6674","0.11","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1b444446ec828a5cdc8f4c2ab92a9a0df2095fae","0","5,000","5,000","120,020","120,000","0.6408","0.10","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe832d1f23bcc355cfadc5950c3edcc210d91fa45","0","5,000","3,777.58","113,327.45","0","0.6051","0.10","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xff22a35a25865cc60f22adbf79acb3f42adee6b1","0","5,000","3,750.15","112,631.9","112,504.39","0.6014","0.10","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0ff6a7857a3f91c75f4cf2f33c4eb0ba0f27640c","0","5,000","4,000.07","108,001.78","243,001.78","0.5767","0.09","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8932afc812520dacfdcca38f037b6e80958f9e9a","0","5,000","5,000","105,000","0","0.5606","0.09","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x877e7fdaa8d76d20c41762d063c3b7947dac76bd","0","5,000","4,047.63","101,190.77","0","0.5403","0.09","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6d2c1e7a5325e1cffa2c2c52136f3ca206d5669e","0","5,000","5,000","100,000","0","0.5339","0.09","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xc0805e89313fe3251072016bb8d1c02a38aa5632","0","5,000","5,000","95,000","0","0.5072","0.08","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x40f91043ea8bc25c5d35123d11203b8be9dc65bf","0","5,000","5,000","90,010","90,000","0.4806","0.08","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x300f00437198cbe0f841c7db55a1fe970b6a5319","0","5,000","5,000","90,000","0","0.4805","0.08","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x659ebb7a0813ad2107592b3ec67be500e2792992","0","5,000","3,080.64","86,258.05","0","0.4606","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xeceb3bc3d347dd3a41a0c90223e9fe3952674d28","0","5,000","2,873.48","86,204.28","86,204.28","0.4603","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8c9e5391866e6e05d2d884e7970f0f0793277880","0","5,000","2,999","83,972","0","0.4484","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x2fd934f9920c9d2fab006e4ea9cb8357aefde3f0","0","5,000","3,065","80,411.05","80,256.67","0.4293","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf6878bc768d664afdf815898d1f908be54eedc52","0","5,000","5,000","80,000","0","0.4271","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xcc57971374fcdf76a73341a54996c4a6f8dde1c9","0","5,000","5,000","80,000","0","0.4271","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x08da821717d3a2436fbb56e1de9c421c001a9648","0","5,000","5,000","80,000","0","0.4271","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x03dae2b6ec973a97db36486c51914ddc8efe9048","0","5,000","5,000","80,000","0","0.4271","0.07","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1b1e4349d2af614904ee0ffafe19f95a45cdeb35","0","5,000","5,000","75,000","0","0.4004","0.06","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x3bc28cc96c8ae2eec361bc5e01c01e75f2c7b3d5","0","5,000","2,670.05","73,491.82","0","0.3924","0.06","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb4b107638cf0df8afb87e34ca31adfcb9f399e3d","0","5,000","2,432.91","72,987.16","72,987.16","0.3897","0.06","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1f1cfe5e8afd4106632548a9e67401ac28572e05","0","5,000","2,394.75","71,842.4","0","0.3836","0.06","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf0d7dffe65576d4328bd9eea58869d0387b0c005","0","5,000","1,963.12","58,893.66","0","0.3144","0.05","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x2a95913741cc5a3e812d9ec0c861d86e568ec284","0","5,000","1,885.3","52,788.4","0","0.2819","0.05","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x85b5a8344a1724cd534328e4006bfd517daeb503","0","5,000","5,000","45,000","45,000","0.2403","0.04","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x7fbfba8204c9c15d66fe1429a072752081a23ed7","0","5,000","5,000","45,000","45,000","0.2403","0.04","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xc67fbb1fd4dc8bccb340fde1737230e6d84a974d","0","5,000","5,000","30,060","110,060","0.1605","0.03","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x71e15cbb415ead455c86e5a11b07e5ec54512fb6","0","5,000","953.77","28,612.99","28,612.99","0.1528","0.02","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x43ae7aa991b61d4b6ae9b175f00c3c0abbb08f45","0","5,000","1,427","28,540","0","0.1524","0.02","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0bd5d4c398f7a58741f3befceec6b84730ec3b3e","0","5,000","5,000","25,020","25,000","0.1336","0.02","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xfc030e7d6edf79f19e722dee7fe83e9ffac9ce54","0","5,000","740.46","22,652.04","22,612.74","0.1209","0.02","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xfcc46b36098f6d2490097b0c6f0ac5c97b212d5e","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf78dad600e80716805bab5db735d9ff3ca966733","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf661459c9dc544a674104b3322957fb198907e0d","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xf338cc8098cb0f0b0b35ffc8aeeaf86fdecedbb7","0","5,000","0","0","216,005,077.82","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xede1b3fa24cd09be8263d8c6ab145234457b0982","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xedcba6be63ef49ea9422eaa82a94949e06754252","0","5,000","0","0","24,020,806.4","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xebd2ad98fcc53ee0c4e72adb4ea336a42fc250de","0","5,000","0","0","110,060","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xebbdc7ea2019adc3fe4326d88c597c0f093ce784","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe88c3ff1db5aa8b329e40a3f28257ba5eb69007d","0","5,000","0","0","1,299,511.83","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe81e09df966dd3a62e7bdf5a0e4b5bdb5603af35","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe53543563ff3df5b8399ef4d6eccf2b10b35ef82","0","5,000","0","0","24,020,806.4","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe3e863c282e3f1593796587301f14298e839466a","0","5,000","0","0","25,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe08e95f51e5f8eeaeb1ee6065ae2c16884943e12","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xe05e8c7e51478553878c2d7332de50e9e4f7286f","0","5,000","0","0","1,800,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xda4f874ece4f3910a4fdccde7fb649bea50c6291","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xd65cdb4051ad040e31ab2d4dbac6265f0fc2ee9b","0","5,000","0","0","23,617,453.74","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xd62d21d619b082b47bcb875603f06f121f00c941","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xca3be6c4b9336038dc01bf317c1288fc13edbdaa","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xc213ae792bc642cb8526aad91c7586e086b84eb5","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xbe5d979c964e5d7d6f9786ceb697216953a7ffe8","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xbe2aa3a87356f431de0a26f52dbd25b513bdd763","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xbcf507bf620c3bd65874feaa4400cd924e432a14","0","5,000","0","0","739,687.89","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb7faca3585241e899f3c96668bee199617b39332","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb4a280b84381c864b5c60bfbfd426fc53852be96","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xb0933e8b1d0559149b5edd8cb58e6e7bdbf6a15d","0","5,000","0","0","150,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xaf06b9c4cd3ff54de97bbeaf336fed0c47796c2c","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xaed7ec9b3e4e5f21ec5b44c7c1edb15f7be9bbea","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xacbf3bb1efd82640c43f93df145aa64f2b86f667","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xabdb06ac1bbd963097df3630b042a9a067feb976","0","5,000","0","0","211,462,432.6","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xaaf907387e561fbe0e36cce58ed602b2abc5b8cf","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0xaabcfd19a71ea44c639a988ad3357e4f4e5fc779","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x984becaf762a006552706f5cf0f58cce09675b70","0","5,000","0","0","135,117,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x94c740f171592fcc0b152d90a177bec88e541974","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x9418d21ce57ea6f2afb8429e640ce79830a04948","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x91c0762fe463fc72b0464e0b859ef639e801991a","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x904e60863ed6e4fc2fb4e26d9f3fe4079381d689","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8c39df93724f9057f083434e8b954370c7a830ed","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8a79dc25fbaf8643c22d961448fd76833b5e81a4","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x8a65e11fe169386718e1979043fc3a5126c8949a","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x86bb239d7f94cadf707f9ac52e932aa42371111b","0","5,000","0","0","1,620,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x864ea716df37cb55823681d04cf3332a851d54e0","0","5,000","0","0","24,020,806.4","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x86246bdca1750f0b2bbfe8b24da1ecb40d87fc66","0","5,000","0","0","211,462,432.6","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x83f3df36610f3a07304d246d197c5036ec11239b","0","5,000","0","0","299,886.02","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x80f7e693fc2920998b10571b420d8b9845b0afe4","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x7942fe304321342371c1d9b7da3ede4f292ca658","0","5,000","0","0","50,400,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x776819a6a003b208093ca944b34221ae59237d57","0","5,000","0","0","1,800,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x75a81fb04136ae22cc1dea7ef010d6e94dafcdf7","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x73bbdd988d9efa1043747b799e5119f0f79679e0","0","5,000","0","0","211,462,432.6","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6e8c3d389b30c522669548dd5c60aa26436442ac","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6a296ef4c5e716fd2bcaaff9041cc3e2ca54efec","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x6a26fe32cbc9c782fcfd33b5a5998d0631927a1d","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x695a078d7015986a14e0b29959b3c0777aea7a6d","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x68d27176a5a747b91854cb7e32313f958a814a4d","0","5,000","0","0","10,661,934.03","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x64284e30d519df74104341231728eeff17be2144","0","5,000","0","0","1,620,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x61f0420c8e792b28c61eb67dccad2defa5ba11a3","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x5e57624bf4f9041445911e8f5497b4eabad02a24","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x5e32d78031752af2b9b2ae6bebd4aa5ec1d2156a","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x5d79bf0111f178b7ca050ded0608e6693a45e8c5","0","5,000","0","0","1,800,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x58da399155cb7b41da4a2df9315c776790fee951","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x57db0ea93e1007de9758f05b99fa8f02f62b3230","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x57c0d8652b1055791563ba3ea341a31524bd84c3","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x56054523262f089b0ec202adfe63fee5a9bac5b8","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4fe70543947325393966e9f69847db40debbc4ec","0","5,000","0","0","150,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4b3b72e6cb646711a5744e8383a619114ec44f90","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4987b10eea5e453a9e9daec805f42f60ad38b0ce","0","5,000","0","0","23,617,453.74","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x48f8dc61316a7569bdce0d14a94884a27cd803e4","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x46973d7f1d38938211c296ff818070ff8c1b57a6","0","5,000","0","0","2,954,161.8","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x45b09f568a5333283ccabda649bd9a0ee53050a4","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4404f908e7ae121fca7a9ea9db6902d5e8624f07","0","5,000","0","0","234,606,938.3","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x44021db3162e5baac4637ae1520077473e25bd92","0","5,000","0","0","24,020,806.4","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x429c712d9aa50a93a07377e3aef081e9ef343312","0","5,000","0","0","7,392,119.31","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4233b033fc4348d14e9e81cd3d8f95ac51b0fcef","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x4095266532479952aaf9f31b247a44e6ed65ac26","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x3d1dedd0c9e64c82192f5eb4a17d03ac31738d88","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x3d0145bdc675fe89a1bc50ecb55c6be237568b70","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x34182508cb615a917f2ae185147b8125fbf54220","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x26d1b321729b6c021823e130d005f0f3bc9174ef","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x259f381b0d3e0cc60f9a83a8b6e973df36d80879","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1f4d5640f1b571a1136b48422ede81d00e5455c8","0","5,000","0","0","150,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1e2c2fd904276d2d56f485f47bcbe37898afafd0","0","5,000","0","0","24,655,918.85","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1dbf4ce8fc3874aa6143dcbe0ef6a0fc23e5a44f","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1bf2402db06b87513fa69cfd6ff16d970db4a62e","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x1bc719bca17f90944d420a7de9c85d2ca13d69d3","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x19dead03929743c097016fb3d2c24924d842e6ed","0","5,000","0","0","21,132,960","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x17650afea949f40f9abe05470e17d2d003377b37","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x163f6e3592fde1798c386692a918d87181ec0f7a","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x106299331ab5f33a1d862b7b2be7f3f824dcbccd","0","5,000","0","0","8,065,735.22","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0efc56448f39d84fd85e631dcc40fedac152c2d3","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0d1972fd5de4178b73571cd56c480ed4b7890020","0","5,000","0","0","0","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0b3f35d92fcf68e560e43dfce5b5309b8f9291c4","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0a386a16a851d476d1f6336d429f850f943a77c3","0","5,000","0","0","24,000,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x060f729a9d7471956d2516dc8cfed6589d4c6b32","0","5,000","0","0","1,620,000","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x0577f8438448a38db0e5b0abf49d1b8f3fd65c32","0","5,000","0","0","7,366,017.07","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" +"0x04ac91676d54c44f63270f872583a24660a5f566","0","5,000","0","0","159,586.3","0.0000","0.00","0.00","0.00","N/A","N/A","N/A","N/A","Free Tier","Free Tier" + +"SUMMARY STATISTICS" + +"Metric","Value" +"Season","30" +"VAPE Price at Season","$0.1600" +"Reference VAPE Price (Original Fee Design)","$0.6060" +"Price Multiplier","0.2640" + +"Total Users","267" +"Users with Paid Pass (Tier 1+)","112" +"Users on Free Tier (Tier 0)","155" + +"Total Original Fees Collected","$1305.00" +"Total Dynamic Fees (Proposed)","$344.55" +"Fee Reduction","73.6%" + +"Total VAPE Value Distributed","$2123.44" + +"PROFITABILITY ANALYSIS (Paid Pass Users Only)" +"Original Pricing - Profitable Users","33 / 112 (29.5%)" +"Dynamic Pricing - Profitable Users","109 / 112 (97.3%)" +"Improvement","+76 users (+67.9%)" + +"Average Original ROI","1.63x" +"Average Dynamic ROI","6.16x" + +"PRICING MODEL" +"Formula","Dynamic Fee = Original Fee Ɨ (Current VAPE Price / Reference VAPE Price)" +"Example (Tier 10)","$100 Ɨ ($0.16 / $0.606) = $26.40" + +"TIER FEE COMPARISON" +"Tier","Deposit Limit","Original Fee","Dynamic Fee","Reduction" +"0","5,000 VPND","$0.00","$0.00","N/A" +"1","10,000 VPND","$0.50","$0.13","74%" +"2","25,000 VPND","$1.00","$0.26","74%" +"3","60,000 VPND","$2.00","$0.53","74%" +"4","150,000 VPND","$4.00","$1.06","74%" +"5","350,000 VPND","$8.00","$2.11","74%" +"6","800,000 VPND","$15.00","$3.96","74%" +"7","1,800,000 VPND","$30.00","$7.92","74%" +"8","4,500,000 VPND","$50.00","$13.20","74%" +"9","12,000,000 VPND","$75.00","$19.80","74%" +"10","Unlimited VPND","$100.00","$26.40","74%" \ No newline at end of file diff --git a/scripts/simulation/analyzeUtilization.ts b/scripts/simulation/analyzeUtilization.ts new file mode 100644 index 0000000..9cdb2c1 --- /dev/null +++ b/scripts/simulation/analyzeUtilization.ts @@ -0,0 +1,69 @@ +import * as fs from 'fs' + +const csv = fs.readFileSync('scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv', 'utf-8') +const lines = csv.split('\n').slice(1) + +const tierLimits: Record = { + '5,000': 5000, + '10,000': 10000, + '25,000': 25000, + '60,000': 60000, + '150,000': 150000, + '350,000': 350000, + '800,000': 800000, + '1,800,000': 1800000, + '4,500,000': 4500000, + '12,000,000': 12000000, +} + +let notProfitableMaxed = 0 +let notProfitableNotMaxed = 0 +let profitableMaxed = 0 +let profitableNotMaxed = 0 + +console.log('USERS NOT PROFITABLE (Original Pricing):\n') +console.log('Wallet | Tier | Limit | Deposited | % of Limit | ROI') +console.log('-'.repeat(110)) + +for (const line of lines) { + if (!line.includes('0x')) continue + + const cols = line.match(/"([^"]*)"/g)?.map((c) => c.replace(/"/g, '')) || [] + if (cols.length < 16) continue + + const [wallet, tier, limitStr, depositedStr, , , , , , , origROI, , , , origProfitable] = cols + + if (tier === '0' || origProfitable === 'Free Tier') continue + + const limit = tierLimits[limitStr] || 0 + const deposited = parseFloat(depositedStr.replace(/,/g, '')) + const pctOfLimit = ((deposited / limit) * 100).toFixed(1) + const isMaxed = deposited >= limit * 0.95 + const isProfitable = origProfitable === 'Yes' + + if (!isProfitable) { + console.log( + `${wallet.padEnd(42)} | ${tier.padEnd(4)} | ${limitStr.padEnd(11)} | ${depositedStr.padEnd(15)} | ${pctOfLimit.padStart(6)}% | ${origROI}x` + ) + if (isMaxed) notProfitableMaxed++ + else notProfitableNotMaxed++ + } else { + if (isMaxed) profitableMaxed++ + else profitableNotMaxed++ + } +} + +console.log('\n' + '='.repeat(110)) +console.log('\nSUMMARY (Paid Pass Users Only):') +console.log('─'.repeat(50)) +console.log(`NOT Profitable + Maxed Deposit (≄95%): ${notProfitableMaxed}`) +console.log(`NOT Profitable + Under Deposit (<95%): ${notProfitableNotMaxed}`) +console.log(`Profitable + Maxed Deposit (≄95%): ${profitableMaxed}`) +console.log(`Profitable + Under Deposit (<95%): ${profitableNotMaxed}`) +console.log('─'.repeat(50)) +console.log(`\nTotal Not Profitable: ${notProfitableMaxed + notProfitableNotMaxed}`) +console.log(`Total Profitable: ${profitableMaxed + profitableNotMaxed}`) + +const totalNotProfit = notProfitableMaxed + notProfitableNotMaxed +const pctNotMaxed = ((notProfitableNotMaxed / totalNotProfit) * 100).toFixed(1) +console.log(`\nšŸ“Š Of ${totalNotProfit} unprofitable users, ${notProfitableNotMaxed} (${pctNotMaxed}%) did NOT max their tier limit`) diff --git a/scripts/simulation/exportSeasonAnalysis.ts b/scripts/simulation/exportSeasonAnalysis.ts new file mode 100644 index 0000000..d4b7cb5 --- /dev/null +++ b/scripts/simulation/exportSeasonAnalysis.ts @@ -0,0 +1,282 @@ +import { createPublicClient, http, formatUnits, parseUnits, type Address } from 'viem' +import { avalanche } from 'viem/chains' +import * as fs from 'fs' + +const LIQUID_MINING_DIAMOND = '0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B' as Address +const SUBGRAPH_URL = 'https://liquid-mining-indexer-production.up.railway.app/' + +const REFERENCE_VAPE_PRICE = 0.606 +const SEASON_ID = 30 +const VAPE_PRICE_AT_SEASON = 0.16 + +const TIER_DEPOSIT_LIMITS: Record = { + 0: parseUnits('5000', 18), + 1: parseUnits('10000', 18), + 2: parseUnits('25000', 18), + 3: parseUnits('60000', 18), + 4: parseUnits('150000', 18), + 5: parseUnits('350000', 18), + 6: parseUnits('800000', 18), + 7: parseUnits('1800000', 18), + 8: parseUnits('4500000', 18), + 9: parseUnits('12000000', 18), + 10: BigInt('115792089237316195423570985008687907853269984665640564039457584007913129639935'), +} + +const TIER_DEPOSIT_LIMITS_DISPLAY: Record = { + 0: '5,000', + 1: '10,000', + 2: '25,000', + 3: '60,000', + 4: '150,000', + 5: '350,000', + 6: '800,000', + 7: '1,800,000', + 8: '4,500,000', + 9: '12,000,000', + 10: 'Unlimited', +} + +const ORIGINAL_TIER_FEES_USDC: Record = { + 0: 0, + 1: 0.5, + 2: 1, + 3: 2, + 4: 4, + 5: 8, + 6: 15, + 7: 30, + 8: 50, + 9: 75, + 10: 100, +} + +interface SubgraphUser { + id: string + totalDeposited: string + walletPoints: string + totalClaimed: string + combinedPoints: string + seasonId: string +} + +async function fetchAllUsersForSeason(seasonId: number): Promise { + let allUsers: SubgraphUser[] = [] + let hasMore = true + let offset = 0 + const limit = 1000 + + while (hasMore) { + const query = ` + query Season { + users( + orderBy: "totalClaimed", + orderDirection: "desc", + where: {seasonId: "${seasonId}"}, + limit: ${limit}, + offset: ${offset} + ) { + items { + id + totalDeposited + walletPoints + totalClaimed + combinedPoints + seasonId + } + } + } + ` + + try { + const response = await fetch(SUBGRAPH_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ query }), + }) + const data = await response.json() + const users = data.data?.users?.items || [] + + if (users.length === 0) { + hasMore = false + } else { + allUsers = allUsers.concat(users) + offset += limit + if (users.length < limit) hasMore = false + } + } catch (e) { + console.log(`Failed to fetch users:`, e) + hasMore = false + } + } + + return allUsers +} + +function getTierFromDeposit(depositedVPND: bigint): number { + for (let tier = 0; tier <= 10; tier++) { + if (depositedVPND <= TIER_DEPOSIT_LIMITS[tier]) { + return tier + } + } + return 10 +} + +function calculateDynamicFee(tier: number, vapePrice: number): number { + const originalFee = ORIGINAL_TIER_FEES_USDC[tier] + const multiplier = vapePrice / REFERENCE_VAPE_PRICE + return Math.max(originalFee * multiplier, 0) +} + +async function main() { + console.log('šŸ“Š VaporFi Liquid Mining - Season 30 User Analysis') + console.log('═'.repeat(60)) + console.log(`\nFetching all users for Season ${SEASON_ID}...\n`) + + const users = await fetchAllUsersForSeason(SEASON_ID) + console.log(`Found ${users.length} total users\n`) + + const rows: string[][] = [] + + rows.push([ + 'Wallet Address', + 'Tier', + 'Tier Deposit Limit (VPND)', + 'Deposited VPND', + 'Wallet Points', + 'Combined Points', + 'VAPE Claimed', + 'VAPE Value (USD)', + 'Original Fee (USD)', + 'Dynamic Fee (USD)', + 'Original ROI (x)', + 'Dynamic ROI (x)', + 'Original Profit/Loss (USD)', + 'Dynamic Profit/Loss (USD)', + 'Original Profitable?', + 'Dynamic Profitable?', + ]) + + let totalOriginalFees = 0 + let totalDynamicFees = 0 + let totalVAPEValue = 0 + let usersWithPaidPass = 0 + let originalProfitable = 0 + let dynamicProfitable = 0 + + for (const user of users) { + const walletAddress = user.id.split('-')[0] + const depositedVPND = BigInt(user.totalDeposited || '0') + const walletPoints = BigInt(user.walletPoints || '0') + const combinedPoints = BigInt(user.combinedPoints || '0') + const claimedVAPE = Number(formatUnits(BigInt(user.totalClaimed || '0'), 18)) + + const tier = getTierFromDeposit(depositedVPND) + const originalFee = ORIGINAL_TIER_FEES_USDC[tier] + const dynamicFee = calculateDynamicFee(tier, VAPE_PRICE_AT_SEASON) + const vapeValueUSD = claimedVAPE * VAPE_PRICE_AT_SEASON + + const originalROI = originalFee > 0 ? vapeValueUSD / originalFee : 0 + const dynamicROI = dynamicFee > 0 ? vapeValueUSD / dynamicFee : 0 + + const originalProfitLoss = vapeValueUSD - originalFee + const dynamicProfitLoss = vapeValueUSD - dynamicFee + + const isOriginalProfitable = originalFee > 0 && originalROI >= 1 + const isDynamicProfitable = dynamicFee > 0 && dynamicROI >= 1 + + if (originalFee > 0) { + usersWithPaidPass++ + totalOriginalFees += originalFee + totalDynamicFees += dynamicFee + totalVAPEValue += vapeValueUSD + if (isOriginalProfitable) originalProfitable++ + if (isDynamicProfitable) dynamicProfitable++ + } + + rows.push([ + walletAddress, + tier.toString(), + TIER_DEPOSIT_LIMITS_DISPLAY[tier], + Number(formatUnits(depositedVPND, 18)).toLocaleString('en-US', { maximumFractionDigits: 2 }), + Number(formatUnits(walletPoints, 18)).toLocaleString('en-US', { maximumFractionDigits: 2 }), + Number(formatUnits(combinedPoints, 18)).toLocaleString('en-US', { maximumFractionDigits: 2 }), + claimedVAPE.toFixed(4), + vapeValueUSD.toFixed(2), + originalFee.toFixed(2), + dynamicFee.toFixed(2), + originalFee > 0 ? originalROI.toFixed(2) : 'N/A', + dynamicFee > 0 ? dynamicROI.toFixed(2) : 'N/A', + originalFee > 0 ? originalProfitLoss.toFixed(2) : 'N/A', + dynamicFee > 0 ? dynamicProfitLoss.toFixed(2) : 'N/A', + originalFee > 0 ? (isOriginalProfitable ? 'Yes' : 'No') : 'Free Tier', + dynamicFee > 0 ? (isDynamicProfitable ? 'Yes' : 'No') : 'Free Tier', + ]) + } + + rows.push([]) + rows.push(['SUMMARY STATISTICS']) + rows.push([]) + rows.push(['Metric', 'Value']) + rows.push(['Season', SEASON_ID.toString()]) + rows.push(['VAPE Price at Season', `$${VAPE_PRICE_AT_SEASON.toFixed(4)}`]) + rows.push(['Reference VAPE Price (Original Fee Design)', `$${REFERENCE_VAPE_PRICE.toFixed(4)}`]) + rows.push(['Price Multiplier', (VAPE_PRICE_AT_SEASON / REFERENCE_VAPE_PRICE).toFixed(4)]) + rows.push([]) + rows.push(['Total Users', users.length.toString()]) + rows.push(['Users with Paid Pass (Tier 1+)', usersWithPaidPass.toString()]) + rows.push(['Users on Free Tier (Tier 0)', (users.length - usersWithPaidPass).toString()]) + rows.push([]) + rows.push(['Total Original Fees Collected', `$${totalOriginalFees.toFixed(2)}`]) + rows.push(['Total Dynamic Fees (Proposed)', `$${totalDynamicFees.toFixed(2)}`]) + rows.push(['Fee Reduction', `${((1 - totalDynamicFees / totalOriginalFees) * 100).toFixed(1)}%`]) + rows.push([]) + rows.push(['Total VAPE Value Distributed', `$${totalVAPEValue.toFixed(2)}`]) + rows.push([]) + rows.push(['PROFITABILITY ANALYSIS (Paid Pass Users Only)']) + rows.push(['Original Pricing - Profitable Users', `${originalProfitable} / ${usersWithPaidPass} (${(originalProfitable / usersWithPaidPass * 100).toFixed(1)}%)`]) + rows.push(['Dynamic Pricing - Profitable Users', `${dynamicProfitable} / ${usersWithPaidPass} (${(dynamicProfitable / usersWithPaidPass * 100).toFixed(1)}%)`]) + rows.push(['Improvement', `+${dynamicProfitable - originalProfitable} users (+${((dynamicProfitable - originalProfitable) / usersWithPaidPass * 100).toFixed(1)}%)`]) + rows.push([]) + rows.push(['Average Original ROI', `${(totalVAPEValue / totalOriginalFees).toFixed(2)}x`]) + rows.push(['Average Dynamic ROI', `${(totalVAPEValue / totalDynamicFees).toFixed(2)}x`]) + rows.push([]) + rows.push(['PRICING MODEL']) + rows.push(['Formula', 'Dynamic Fee = Original Fee Ɨ (Current VAPE Price / Reference VAPE Price)']) + rows.push(['Example (Tier 10)', `$100 Ɨ ($${VAPE_PRICE_AT_SEASON} / $${REFERENCE_VAPE_PRICE}) = $${calculateDynamicFee(10, VAPE_PRICE_AT_SEASON).toFixed(2)}`]) + rows.push([]) + rows.push(['TIER FEE COMPARISON']) + rows.push(['Tier', 'Deposit Limit', 'Original Fee', 'Dynamic Fee', 'Reduction']) + + for (let tier = 0; tier <= 10; tier++) { + const origFee = ORIGINAL_TIER_FEES_USDC[tier] + const dynFee = calculateDynamicFee(tier, VAPE_PRICE_AT_SEASON) + const reduction = origFee > 0 ? `${((1 - dynFee / origFee) * 100).toFixed(0)}%` : 'N/A' + rows.push([ + tier.toString(), + TIER_DEPOSIT_LIMITS_DISPLAY[tier] + ' VPND', + `$${origFee.toFixed(2)}`, + `$${dynFee.toFixed(2)}`, + reduction, + ]) + } + + const csvContent = rows.map(row => row.map(cell => `"${cell}"`).join(',')).join('\n') + + const filename = `VaporFi_LiquidMining_Season${SEASON_ID}_Analysis_${new Date().toISOString().split('T')[0]}.csv` + const filepath = `scripts/simulation/${filename}` + + fs.writeFileSync(filepath, csvContent) + + console.log('āœ… Export Complete!') + console.log(`šŸ“ File saved: ${filepath}`) + console.log('') + console.log('Summary:') + console.log(` • Total Users: ${users.length}`) + console.log(` • Users with Paid Pass: ${usersWithPaidPass}`) + console.log(` • Original Profitable: ${originalProfitable}/${usersWithPaidPass} (${(originalProfitable / usersWithPaidPass * 100).toFixed(1)}%)`) + console.log(` • Dynamic Profitable: ${dynamicProfitable}/${usersWithPaidPass} (${(dynamicProfitable / usersWithPaidPass * 100).toFixed(1)}%)`) + console.log(` • Fee Reduction: ${((1 - totalDynamicFees / totalOriginalFees) * 100).toFixed(1)}%`) +} + +main().catch(console.error) diff --git a/scripts/simulation/miningPassPricing.ts b/scripts/simulation/miningPassPricing.ts new file mode 100644 index 0000000..b89abb2 --- /dev/null +++ b/scripts/simulation/miningPassPricing.ts @@ -0,0 +1,414 @@ +import { createPublicClient, http, formatUnits, parseUnits, type Address } from 'viem' +import { avalanche } from 'viem/chains' + +const LIQUID_MINING_DIAMOND = '0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B' as Address +const VAPE_TOKEN = '0x7bddaF6DbAB30224AA2116c4291521C7a60D5f55' as Address + +const REFERENCE_VAPE_PRICE = 0.606 + +const TIER_DEPOSIT_LIMITS: Record = { + 0: parseUnits('5000', 18), + 1: parseUnits('10000', 18), + 2: parseUnits('25000', 18), + 3: parseUnits('60000', 18), + 4: parseUnits('150000', 18), + 5: parseUnits('350000', 18), + 6: parseUnits('800000', 18), + 7: parseUnits('1800000', 18), + 8: parseUnits('4500000', 18), + 9: parseUnits('12000000', 18), + 10: BigInt('115792089237316195423570985008687907853269984665640564039457584007913129639935'), +} + +const ORIGINAL_TIER_FEES_USDC: Record = { + 0: 0, + 1: 0.5, + 2: 1, + 3: 2, + 4: 4, + 5: 8, + 6: 15, + 7: 30, + 8: 50, + 9: 75, + 10: 100, +} + +const diamondAbi = [ + { + inputs: [], + name: 'getCurrentSeasonId', + outputs: [{ type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ name: 'seasonId', type: 'uint256' }], + name: 'getSeasonData', + outputs: [ + { + components: [ + { name: 'id', type: 'uint256' }, + { name: 'startTimestamp', type: 'uint256' }, + { name: 'endTimestamp', type: 'uint256' }, + { name: 'rewardTokensToDistribute', type: 'uint256' }, + { name: 'rewardTokenBalance', type: 'uint256' }, + { name: 'totalDepositAmount', type: 'uint256' }, + { name: 'totalClaimAmount', type: 'uint256' }, + { name: 'totalPoints', type: 'uint256' }, + ], + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ name: 'seasonId', type: 'uint256' }], + name: 'getSeasonTotalPoints', + outputs: [{ type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ name: 'seasonId', type: 'uint256' }], + name: 'getTotalDepositAmountOfSeason', + outputs: [{ type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ name: 'seasonId', type: 'uint256' }], + name: 'getRewardTokensToDistribute', + outputs: [{ type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, +] as const + +interface SeasonData { + id: number + startTimestamp: number + endTimestamp: number + rewardTokensToDistribute: bigint + rewardTokenBalance: bigint + totalDepositAmount: bigint + totalClaimAmount: bigint + totalPoints: bigint + durationDays: number +} + +interface PriceSimulationResult { + tier: number + originalPriceUSDC: number + dynamicPriceUSDC: number + expectedVAPE: number + expectedValueUSD: number + estimatedROI: number + depositLimitVPND: string +} + +interface SeasonSimulation { + seasonId: number + seasonData: SeasonData + vapePrice: number + targetROI: number + historicalAvgPoints: bigint + tierPrices: PriceSimulationResult[] +} + +async function fetchVAPEPrice(): Promise { + try { + const response = await fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' + ) + const data = await response.json() + return data.vaporfi?.usd || 0.16 + } catch { + console.log('Failed to fetch VAPE price, using default $0.16') + return 0.16 + } +} + +async function fetchHistoricalVAPEPrice(timestamp: number): Promise { + try { + const date = new Date(timestamp * 1000) + const dateStr = `${date.getDate().toString().padStart(2, '0')}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getFullYear()}` + const response = await fetch( + `https://api.coingecko.com/api/v3/coins/vaporfi/history?date=${dateStr}` + ) + const data = await response.json() + return data.market_data?.current_price?.usd || 0.16 + } catch { + return 0.16 + } +} + +function calculateDynamicPrice( + tier: number, + vapePrice: number, + seasonVAPERewards: bigint, + historicalAvgPoints: bigint, + targetROI: number, + seasonDurationDays: number +): PriceSimulationResult { + const depositLimit = TIER_DEPOSIT_LIMITS[tier] + const originalPrice = ORIGINAL_TIER_FEES_USDC[tier] + + const maxPointsRaw = tier === 10 + ? parseUnits('50000000', 18) * BigInt(seasonDurationDays) + : depositLimit * BigInt(seasonDurationDays) + + const maxPoints = maxPointsRaw + + if (historicalAvgPoints === 0n) { + return { + tier, + originalPriceUSDC: originalPrice, + dynamicPriceUSDC: originalPrice, + expectedVAPE: 0, + expectedValueUSD: 0, + estimatedROI: 0, + depositLimitVPND: tier === 10 ? 'Unlimited' : formatUnits(depositLimit, 18), + } + } + + const shareNumerator = maxPoints * BigInt(1e18) + const shareDenominator = historicalAvgPoints + const expectedVAPE = (seasonVAPERewards * shareNumerator) / shareDenominator / BigInt(1e18) + + const expectedVAPENumber = Number(formatUnits(expectedVAPE, 18)) + const expectedValueUSD = expectedVAPENumber * vapePrice + + const dynamicPriceUSDC = expectedValueUSD / targetROI + + const actualROI = dynamicPriceUSDC > 0 ? expectedValueUSD / dynamicPriceUSDC : 0 + + return { + tier, + originalPriceUSDC: originalPrice, + dynamicPriceUSDC: Math.max(dynamicPriceUSDC, 0.01), + expectedVAPE: expectedVAPENumber, + expectedValueUSD, + estimatedROI: actualROI, + depositLimitVPND: tier === 10 ? 'Unlimited (using 50M for calc)' : formatUnits(depositLimit, 18), + } +} + +function calculateSimpleDynamicPrice( + tier: number, + vapePrice: number, + referenceVAPEPrice: number = 1.0 +): { originalPrice: number; dynamicPrice: number; multiplier: number } { + const originalPrice = ORIGINAL_TIER_FEES_USDC[tier] + const multiplier = vapePrice / referenceVAPEPrice + const dynamicPrice = originalPrice * multiplier + + return { + originalPrice, + dynamicPrice: Math.max(dynamicPrice, 0.01), + multiplier, + } +} + +async function main() { + const client = createPublicClient({ + chain: avalanche, + transport: http(), + }) + + console.log('šŸ” Fetching current season data...\n') + + const currentSeasonId = await client.readContract({ + address: LIQUID_MINING_DIAMOND, + abi: diamondAbi, + functionName: 'getCurrentSeasonId', + }) + + console.log(`Current Season ID: ${currentSeasonId}\n`) + + const seasons: SeasonData[] = [] + const maxSeasonsToFetch = Math.min(Number(currentSeasonId), 10) + + console.log('šŸ“Š Fetching historical season data...\n') + + for (let i = 1; i <= maxSeasonsToFetch; i++) { + try { + const seasonData = await client.readContract({ + address: LIQUID_MINING_DIAMOND, + abi: diamondAbi, + functionName: 'getSeasonData', + args: [BigInt(i)], + }) + + const durationSeconds = Number(seasonData.endTimestamp - seasonData.startTimestamp) + const durationDays = Math.ceil(durationSeconds / 86400) + + seasons.push({ + id: i, + startTimestamp: Number(seasonData.startTimestamp), + endTimestamp: Number(seasonData.endTimestamp), + rewardTokensToDistribute: seasonData.rewardTokensToDistribute, + rewardTokenBalance: seasonData.rewardTokenBalance, + totalDepositAmount: seasonData.totalDepositAmount, + totalClaimAmount: seasonData.totalClaimAmount, + totalPoints: seasonData.totalPoints, + durationDays, + }) + } catch (e) { + console.log(`Failed to fetch season ${i}`) + } + } + + console.log('═══════════════════════════════════════════════════════════════════') + console.log(' HISTORICAL SEASON DATA ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + for (const season of seasons) { + const startDate = new Date(season.startTimestamp * 1000).toISOString().split('T')[0] + const endDate = new Date(season.endTimestamp * 1000).toISOString().split('T')[0] + + console.log(`Season ${season.id}:`) + console.log(` Duration: ${startDate} to ${endDate} (${season.durationDays} days)`) + console.log(` VAPE Rewards: ${formatUnits(season.rewardTokensToDistribute, 18)} VAPE`) + console.log(` Total Deposits: ${formatUnits(season.totalDepositAmount, 18)} VPND`) + console.log(` Total Points: ${formatUnits(season.totalPoints, 18)}`) + console.log('') + } + + const currentVAPEPrice = await fetchVAPEPrice() + console.log(`\nšŸ’° Current VAPE Price: $${currentVAPEPrice.toFixed(4)}\n`) + + console.log('═══════════════════════════════════════════════════════════════════') + console.log(' SIMPLE DYNAMIC PRICING (VAPE MULTIPLIER) ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + console.log(`Formula: newPrice = originalPrice Ɨ (currentVAPEPrice / $${REFERENCE_VAPE_PRICE.toFixed(2)})\n`) + console.log(`Reference VAPE Price (Season 1 start, Jul 7 2023): $${REFERENCE_VAPE_PRICE.toFixed(2)}\n`) + + const simpleResults: { tier: number; original: number; dynamic: number }[] = [] + for (let tier = 0; tier <= 10; tier++) { + const result = calculateSimpleDynamicPrice(tier, currentVAPEPrice, REFERENCE_VAPE_PRICE) + simpleResults.push({ tier, original: result.originalPrice, dynamic: result.dynamicPrice }) + } + + console.log('Tier | Original ($) | Dynamic ($) | Reduction') + console.log('-----|--------------|-------------|----------') + for (const r of simpleResults) { + const reduction = r.original > 0 ? ((r.original - r.dynamic) / r.original * 100).toFixed(0) : 0 + console.log( + ` ${r.tier.toString().padStart(2)} | ${r.original.toFixed(2).padStart(12)} | ${r.dynamic.toFixed(2).padStart(11)} | ${reduction}%` + ) + } + + console.log('\n═══════════════════════════════════════════════════════════════════') + console.log(' ROI-CONTROLLED DYNAMIC PRICING ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + const completedSeasons = seasons.filter(s => s.totalPoints > 0n && s.endTimestamp < Date.now() / 1000) + + if (completedSeasons.length === 0) { + console.log('No completed seasons with data available for ROI-based simulation.\n') + } else { + const recentSeasons = completedSeasons.slice(-3) + const avgTotalPoints = recentSeasons.reduce((sum, s) => sum + s.totalPoints, 0n) / BigInt(recentSeasons.length) + + console.log(`Historical Average Total Points (last ${recentSeasons.length} seasons): ${formatUnits(avgTotalPoints, 18)}\n`) + + const targetROIs = [5, 10, 20] + const currentSeason = seasons[seasons.length - 1] + + for (const targetROI of targetROIs) { + console.log(`\nšŸ“ˆ TARGET ROI: ${targetROI}x (Mining pass = ${(100 / targetROI).toFixed(1)}% of expected value)`) + console.log('─'.repeat(70)) + + const tierResults: PriceSimulationResult[] = [] + for (let tier = 1; tier <= 10; tier++) { + const result = calculateDynamicPrice( + tier, + currentVAPEPrice, + currentSeason.rewardTokensToDistribute, + avgTotalPoints, + targetROI, + currentSeason.durationDays || 25 + ) + tierResults.push(result) + } + + console.log('\nTier | Orig($) | Dynamic($) | Exp.VAPE | Exp.Value($) | Est.ROI') + console.log('-----|---------|------------|------------|--------------|--------') + + for (const r of tierResults) { + console.log( + ` ${r.tier.toString().padStart(2)} | ${r.originalPriceUSDC.toFixed(2).padStart(7)} | ${r.dynamicPriceUSDC.toFixed(2).padStart(10)} | ${r.expectedVAPE.toFixed(0).padStart(10)} | ${r.expectedValueUSD.toFixed(2).padStart(12)} | ${r.estimatedROI.toFixed(1)}x` + ) + } + } + } + + console.log('\n═══════════════════════════════════════════════════════════════════') + console.log(' HISTORICAL SIMULATION - WHAT IF ANALYSIS ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + console.log('Simulating what prices WOULD HAVE BEEN if dynamic pricing was active:\n') + + for (let i = 1; i < completedSeasons.length; i++) { + const season = completedSeasons[i] + const prevSeasons = completedSeasons.slice(Math.max(0, i - 3), i) + const avgPoints = prevSeasons.reduce((sum, s) => sum + s.totalPoints, 0n) / BigInt(prevSeasons.length) + + const historicalPrice = await fetchHistoricalVAPEPrice(season.startTimestamp) + + console.log(`\nšŸ“… Season ${season.id} (started ${new Date(season.startTimestamp * 1000).toISOString().split('T')[0]})`) + console.log(` VAPE Price at start: $${historicalPrice.toFixed(4)}`) + console.log(` VAPE Rewards: ${formatUnits(season.rewardTokensToDistribute, 18)} VAPE`) + console.log(` Avg Historical Points: ${formatUnits(avgPoints, 18)}`) + console.log('') + + const targetROI = 10 + + console.log(` Tier | Original | Simple Dyn. | ROI-Based (${targetROI}x)`) + console.log(' -----|----------|-------------|---------------') + + for (const tier of [1, 5, 10]) { + const original = ORIGINAL_TIER_FEES_USDC[tier] + const simpleDynamic = calculateSimpleDynamicPrice(tier, historicalPrice, REFERENCE_VAPE_PRICE) + const roiBased = calculateDynamicPrice( + tier, + historicalPrice, + season.rewardTokensToDistribute, + avgPoints, + targetROI, + season.durationDays + ) + + console.log( + ` ${tier.toString().padStart(2)} | $${original.toFixed(2).padStart(7)} | $${simpleDynamic.dynamicPrice.toFixed(2).padStart(10)} | $${roiBased.dynamicPriceUSDC.toFixed(2).padStart(13)}` + ) + } + } + + console.log('\n═══════════════════════════════════════════════════════════════════') + console.log(' SUMMARY ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + console.log('Two pricing strategies available:\n') + + console.log('1ļøāƒ£ SIMPLE VAPE MULTIPLIER:') + console.log(` - Formula: price = originalPrice Ɨ (vapePrice / $${REFERENCE_VAPE_PRICE.toFixed(2)})`) + console.log(' - Pros: Simple, predictable, same formula for all tiers') + console.log(' - Cons: Doesn\'t account for participation levels or expected rewards') + console.log('') + + console.log('2ļøāƒ£ ROI-CONTROLLED PRICING:') + console.log(' - Formula: price = expectedRewardValue / targetROI') + console.log(' - Uses historical average points to estimate user\'s share') + console.log(' - Pros: Guarantees target ROI, adapts to participation') + console.log(' - Cons: More complex, prices vary significantly by tier') + console.log('') + + console.log('šŸ“Œ Recommendation: Start with Simple VAPE Multiplier for quick deployment,') + console.log(' then consider ROI-Controlled for long-term if more precision needed.\n') +} + +main().catch(console.error) diff --git a/scripts/simulation/miningPassROIAnalysis.ts b/scripts/simulation/miningPassROIAnalysis.ts new file mode 100644 index 0000000..84c8d06 --- /dev/null +++ b/scripts/simulation/miningPassROIAnalysis.ts @@ -0,0 +1,426 @@ +import { createPublicClient, http, formatUnits, parseUnits, type Address } from 'viem' +import { avalanche } from 'viem/chains' + +const LIQUID_MINING_DIAMOND = '0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B' as Address +const SUBGRAPH_URL = 'https://liquid-mining-indexer-production.up.railway.app/' + +const REFERENCE_VAPE_PRICE = 0.606 + +const TIER_DEPOSIT_LIMITS: Record = { + 0: parseUnits('5000', 18), + 1: parseUnits('10000', 18), + 2: parseUnits('25000', 18), + 3: parseUnits('60000', 18), + 4: parseUnits('150000', 18), + 5: parseUnits('350000', 18), + 6: parseUnits('800000', 18), + 7: parseUnits('1800000', 18), + 8: parseUnits('4500000', 18), + 9: parseUnits('12000000', 18), + 10: BigInt('115792089237316195423570985008687907853269984665640564039457584007913129639935'), +} + +const ORIGINAL_TIER_FEES_USDC: Record = { + 0: 0, + 1: 0.5, + 2: 1, + 3: 2, + 4: 4, + 5: 8, + 6: 15, + 7: 30, + 8: 50, + 9: 75, + 10: 100, +} + +interface SubgraphUser { + id: string + totalDeposited: string + walletPoints: string + totalClaimed: string + combinedPoints: string + seasonId: string +} + +interface UserAnalysis { + address: string + seasonId: number + depositedVPND: number + tier: number + originalFee: number + dynamicFee: number + claimedVAPE: number + claimedValueUSD: number + originalROI: number + dynamicROI: number +} + +interface SeasonSummary { + seasonId: number + userCount: number + totalDeposited: number + totalClaimed: number + avgOriginalROI: number + avgDynamicROI: number + medianOriginalROI: number + medianDynamicROI: number + positiveROICountOriginal: number + positiveROICountDynamic: number + vapePrice: number +} + +const diamondAbi = [ + { + inputs: [], + name: 'getCurrentSeasonId', + outputs: [{ type: 'uint256' }], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [{ name: 'seasonId', type: 'uint256' }], + name: 'getSeasonData', + outputs: [ + { + components: [ + { name: 'id', type: 'uint256' }, + { name: 'startTimestamp', type: 'uint256' }, + { name: 'endTimestamp', type: 'uint256' }, + { name: 'rewardTokensToDistribute', type: 'uint256' }, + { name: 'rewardTokenBalance', type: 'uint256' }, + { name: 'totalDepositAmount', type: 'uint256' }, + { name: 'totalClaimAmount', type: 'uint256' }, + { name: 'totalPoints', type: 'uint256' }, + ], + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, +] as const + +async function fetchUsersForSeason(seasonId: number): Promise { + const query = ` + query Season { + users(orderBy: "walletPoints", orderDirection: "desc", where: {seasonId: "${seasonId}"}, limit: 1000) { + items { + id + totalDeposited + walletPoints + totalClaimed + combinedPoints + seasonId + } + } + } + ` + + try { + const response = await fetch(SUBGRAPH_URL, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ query }), + }) + const data = await response.json() + return data.data?.users?.items || [] + } catch (e) { + console.log(`Failed to fetch users for season ${seasonId}:`, e) + return [] + } +} + +async function fetchVAPEPrice(): Promise { + try { + const response = await fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' + ) + const data = await response.json() + return data.vaporfi?.usd || 0.16 + } catch { + return 0.16 + } +} + +function getTierFromDeposit(depositedVPND: bigint): number { + for (let tier = 0; tier <= 10; tier++) { + if (depositedVPND <= TIER_DEPOSIT_LIMITS[tier]) { + return tier + } + } + return 10 +} + +function calculateDynamicFee(tier: number, vapePrice: number): number { + const originalFee = ORIGINAL_TIER_FEES_USDC[tier] + const multiplier = vapePrice / REFERENCE_VAPE_PRICE + return Math.max(originalFee * multiplier, 0.01) +} + +function median(values: number[]): number { + if (values.length === 0) return 0 + const sorted = [...values].sort((a, b) => a - b) + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 !== 0 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 +} + +async function analyzeSeasonROI( + seasonId: number, + vapePrice: number +): Promise<{ users: UserAnalysis[]; summary: SeasonSummary }> { + const subgraphUsers = await fetchUsersForSeason(seasonId) + + if (subgraphUsers.length === 0) { + return { + users: [], + summary: { + seasonId, + userCount: 0, + totalDeposited: 0, + totalClaimed: 0, + avgOriginalROI: 0, + avgDynamicROI: 0, + medianOriginalROI: 0, + medianDynamicROI: 0, + positiveROICountOriginal: 0, + positiveROICountDynamic: 0, + vapePrice, + }, + } + } + + const userAnalyses: UserAnalysis[] = [] + + for (const user of subgraphUsers) { + const depositedVPND = BigInt(user.totalDeposited || '0') + const claimedVAPE = Number(formatUnits(BigInt(user.totalClaimed || '0'), 18)) + + if (depositedVPND === 0n) continue + + const tier = getTierFromDeposit(depositedVPND) + const originalFee = ORIGINAL_TIER_FEES_USDC[tier] + const dynamicFee = calculateDynamicFee(tier, vapePrice) + const claimedValueUSD = claimedVAPE * vapePrice + + const originalROI = originalFee > 0 ? claimedValueUSD / originalFee : Infinity + const dynamicROI = dynamicFee > 0 ? claimedValueUSD / dynamicFee : Infinity + + userAnalyses.push({ + address: user.id.split('-')[0], + seasonId, + depositedVPND: Number(formatUnits(depositedVPND, 18)), + tier, + originalFee, + dynamicFee, + claimedVAPE, + claimedValueUSD, + originalROI: isFinite(originalROI) ? originalROI : 0, + dynamicROI: isFinite(dynamicROI) ? dynamicROI : 0, + }) + } + + const validUsers = userAnalyses.filter(u => u.originalFee > 0 && u.claimedVAPE > 0) + + const originalROIs = validUsers.map(u => u.originalROI) + const dynamicROIs = validUsers.map(u => u.dynamicROI) + + const summary: SeasonSummary = { + seasonId, + userCount: validUsers.length, + totalDeposited: userAnalyses.reduce((sum, u) => sum + u.depositedVPND, 0), + totalClaimed: userAnalyses.reduce((sum, u) => sum + u.claimedVAPE, 0), + avgOriginalROI: originalROIs.length > 0 ? originalROIs.reduce((a, b) => a + b, 0) / originalROIs.length : 0, + avgDynamicROI: dynamicROIs.length > 0 ? dynamicROIs.reduce((a, b) => a + b, 0) / dynamicROIs.length : 0, + medianOriginalROI: median(originalROIs), + medianDynamicROI: median(dynamicROIs), + positiveROICountOriginal: originalROIs.filter(r => r >= 1).length, + positiveROICountDynamic: dynamicROIs.filter(r => r >= 1).length, + vapePrice, + } + + return { users: userAnalyses, summary } +} + +function printTierBreakdown(users: UserAnalysis[], vapePrice: number) { + const tierStats: Record = {} + + for (let tier = 0; tier <= 10; tier++) { + tierStats[tier] = { count: 0, totalOriginalROI: 0, totalDynamicROI: 0, users: [] } + } + + for (const user of users) { + if (user.originalFee > 0 && user.claimedVAPE > 0) { + tierStats[user.tier].count++ + tierStats[user.tier].totalOriginalROI += user.originalROI + tierStats[user.tier].totalDynamicROI += user.dynamicROI + tierStats[user.tier].users.push(user) + } + } + + console.log('\n Tier | Users | Orig Fee | Dyn Fee | Avg Orig ROI | Avg Dyn ROI | Profitable (Orig→Dyn)') + console.log(' -----|-------|----------|----------|--------------|-------------|----------------------') + + for (let tier = 1; tier <= 10; tier++) { + const stats = tierStats[tier] + if (stats.count === 0) continue + + const avgOrigROI = stats.totalOriginalROI / stats.count + const avgDynROI = stats.totalDynamicROI / stats.count + const origFee = ORIGINAL_TIER_FEES_USDC[tier] + const dynFee = calculateDynamicFee(tier, vapePrice) + const profitableOrig = stats.users.filter(u => u.originalROI >= 1).length + const profitableDyn = stats.users.filter(u => u.dynamicROI >= 1).length + + console.log( + ` ${tier.toString().padStart(2)} | ${stats.count.toString().padStart(5)} | $${origFee.toFixed(2).padStart(7)} | $${dynFee.toFixed(2).padStart(7)} | ${avgOrigROI.toFixed(2).padStart(12)}x | ${avgDynROI.toFixed(2).padStart(11)}x | ${profitableOrig}→${profitableDyn} (${((profitableDyn - profitableOrig) / stats.count * 100).toFixed(0)}%↑)` + ) + } +} + +async function main() { + const client = createPublicClient({ + chain: avalanche, + transport: http(), + }) + + console.log('šŸ” Mining Pass ROI Analysis with Real User Data\n') + console.log(`Reference VAPE Price (when fees were set): $${REFERENCE_VAPE_PRICE.toFixed(4)}`) + console.log(`Formula: dynamicFee = originalFee Ɨ (currentVAPEPrice / $${REFERENCE_VAPE_PRICE.toFixed(2)})\n`) + + const currentSeasonId = await client.readContract({ + address: LIQUID_MINING_DIAMOND, + abi: diamondAbi, + functionName: 'getCurrentSeasonId', + }) + + console.log(`Current Season: ${currentSeasonId}\n`) + + const currentVAPEPrice = await fetchVAPEPrice() + console.log(`šŸ’° Current VAPE Price: $${currentVAPEPrice.toFixed(4)}\n`) + + const seasonsToAnalyze = [15, 20, 25, 30] + const allSummaries: SeasonSummary[] = [] + + const historicalVAPEPrices: Record = { + 15: 0.18, + 20: 0.15, + 25: 0.14, + 30: 0.16, + } + + console.log('═══════════════════════════════════════════════════════════════════') + console.log(' SEASON-BY-SEASON ANALYSIS ') + console.log('═══════════════════════════════════════════════════════════════════') + + for (const seasonId of seasonsToAnalyze) { + console.log(`\nšŸ“Š Fetching data for Season ${seasonId}...`) + + const vapePrice = historicalVAPEPrices[seasonId] || currentVAPEPrice + const { users, summary } = await analyzeSeasonROI(seasonId, vapePrice) + + if (summary.userCount === 0) { + console.log(` No user data found for season ${seasonId}`) + continue + } + + allSummaries.push(summary) + + console.log(`\n Season ${seasonId} Summary (VAPE Price: $${vapePrice.toFixed(4)}):`) + console.log(` ā”œā”€ Total Users with Paid Pass: ${summary.userCount}`) + console.log(` ā”œā”€ Total Deposited: ${summary.totalDeposited.toLocaleString()} VPND`) + console.log(` ā”œā”€ Total Claimed: ${summary.totalClaimed.toLocaleString()} VAPE`) + console.log(` │`) + console.log(` ā”œā”€ Original Pricing:`) + console.log(` │ ā”œā”€ Avg ROI: ${summary.avgOriginalROI.toFixed(2)}x`) + console.log(` │ ā”œā”€ Median ROI: ${summary.medianOriginalROI.toFixed(2)}x`) + console.log(` │ └─ Users with ROI ≄ 1x: ${summary.positiveROICountOriginal}/${summary.userCount} (${(summary.positiveROICountOriginal / summary.userCount * 100).toFixed(1)}%)`) + console.log(` │`) + console.log(` └─ Dynamic Pricing:`) + console.log(` ā”œā”€ Avg ROI: ${summary.avgDynamicROI.toFixed(2)}x`) + console.log(` ā”œā”€ Median ROI: ${summary.medianDynamicROI.toFixed(2)}x`) + console.log(` └─ Users with ROI ≄ 1x: ${summary.positiveROICountDynamic}/${summary.userCount} (${(summary.positiveROICountDynamic / summary.userCount * 100).toFixed(1)}%)`) + + printTierBreakdown(users, vapePrice) + + console.log('\n Top 5 Users by Claimed VAPE:') + const topUsers = users + .filter(u => u.claimedVAPE > 0) + .sort((a, b) => b.claimedVAPE - a.claimedVAPE) + .slice(0, 5) + + console.log(' Address | Tier | Deposited VPND | Claimed VAPE | Orig Fee | Dyn Fee | Orig ROI | Dyn ROI') + console.log(' -------------|------|----------------|--------------|----------|---------|----------|--------') + for (const u of topUsers) { + console.log( + ` ${u.address.slice(0, 10)}.. | ${u.tier.toString().padStart(4)} | ${u.depositedVPND.toLocaleString().padStart(14)} | ${u.claimedVAPE.toFixed(2).padStart(12)} | $${u.originalFee.toFixed(2).padStart(6)} | $${u.dynamicFee.toFixed(2).padStart(5)} | ${u.originalROI.toFixed(2).padStart(8)}x | ${u.dynamicROI.toFixed(2).padStart(6)}x` + ) + } + + console.log('\n Bottom 5 Users by ROI (paid pass, got rewards):') + const bottomUsers = users + .filter(u => u.claimedVAPE > 0 && u.originalFee > 0) + .sort((a, b) => a.originalROI - b.originalROI) + .slice(0, 5) + + for (const u of bottomUsers) { + console.log( + ` ${u.address.slice(0, 10)}.. | ${u.tier.toString().padStart(4)} | ${u.depositedVPND.toLocaleString().padStart(14)} | ${u.claimedVAPE.toFixed(2).padStart(12)} | $${u.originalFee.toFixed(2).padStart(6)} | $${u.dynamicFee.toFixed(2).padStart(5)} | ${u.originalROI.toFixed(2).padStart(8)}x | ${u.dynamicROI.toFixed(2).padStart(6)}x` + ) + } + } + + console.log('\n═══════════════════════════════════════════════════════════════════') + console.log(' OVERALL SUMMARY ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + if (allSummaries.length > 0) { + const totalUsers = allSummaries.reduce((sum, s) => sum + s.userCount, 0) + const avgOrigROI = allSummaries.reduce((sum, s) => sum + s.avgOriginalROI, 0) / allSummaries.length + const avgDynROI = allSummaries.reduce((sum, s) => sum + s.avgDynamicROI, 0) / allSummaries.length + const totalProfitableOrig = allSummaries.reduce((sum, s) => sum + s.positiveROICountOriginal, 0) + const totalProfitableDyn = allSummaries.reduce((sum, s) => sum + s.positiveROICountDynamic, 0) + + console.log(`Total Users Analyzed: ${totalUsers}`) + console.log(`Seasons Analyzed: ${allSummaries.map(s => s.seasonId).join(', ')}\n`) + + console.log('Comparison:') + console.log('ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”') + console.log('│ Metric │ Original Fees │ Dynamic Fees │') + console.log('ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤') + console.log(`│ Avg ROI │ ${avgOrigROI.toFixed(2).padStart(13)}x │ ${avgDynROI.toFixed(2).padStart(13)}x │`) + console.log(`│ Profitable Users │ ${totalProfitableOrig.toString().padStart(14)} │ ${totalProfitableDyn.toString().padStart(14)} │`) + console.log(`│ Profitable Rate │ ${(totalProfitableOrig / totalUsers * 100).toFixed(1).padStart(13)}% │ ${(totalProfitableDyn / totalUsers * 100).toFixed(1).padStart(13)}% │`) + console.log('ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”“ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜\n') + + const improvement = ((totalProfitableDyn - totalProfitableOrig) / totalProfitableOrig * 100).toFixed(1) + console.log(`šŸ“ˆ Dynamic pricing would increase profitable user rate by ${improvement}%`) + console.log(` (${totalProfitableDyn - totalProfitableOrig} more users would have broken even or profited)\n`) + } + + console.log('═══════════════════════════════════════════════════════════════════') + console.log(' FEE COMPARISON TABLE ') + console.log('═══════════════════════════════════════════════════════════════════\n') + + console.log(`At current VAPE price ($${currentVAPEPrice.toFixed(4)}):\n`) + console.log('Tier | Deposit Limit | Original Fee | Dynamic Fee | Reduction') + console.log('-----|------------------|--------------|-------------|----------') + + for (let tier = 1; tier <= 10; tier++) { + const limit = tier === 10 ? 'Unlimited' : `${Number(formatUnits(TIER_DEPOSIT_LIMITS[tier], 18)).toLocaleString()} VPND` + const origFee = ORIGINAL_TIER_FEES_USDC[tier] + const dynFee = calculateDynamicFee(tier, currentVAPEPrice) + const reduction = ((origFee - dynFee) / origFee * 100).toFixed(0) + + console.log( + ` ${tier.toString().padStart(2)} | ${limit.padStart(16)} | $${origFee.toFixed(2).padStart(10)} | $${dynFee.toFixed(2).padStart(9)} | ${reduction}%` + ) + } + + console.log('\nšŸ“Œ Recommendation:') + console.log(' The dynamic pricing model significantly improves user ROI by reducing') + console.log(' fees proportionally to VAPE price decline. This maintains the original') + console.log(' value proposition established when fees were set.\n') +} + +main().catch(console.error) diff --git a/scripts/simulation/unprofitableAnalysis.ts b/scripts/simulation/unprofitableAnalysis.ts new file mode 100644 index 0000000..0c73a8c --- /dev/null +++ b/scripts/simulation/unprofitableAnalysis.ts @@ -0,0 +1,206 @@ +import * as fs from 'fs' + +const csv = fs.readFileSync('scripts/simulation/VaporFi_LiquidMining_Season30_Analysis_2026-01-30.csv', 'utf-8') +const lines = csv.split('\n').slice(1) + +const tierLimits: Record = { + '5,000': 5000, + '10,000': 10000, + '25,000': 25000, + '60,000': 60000, + '150,000': 150000, + '350,000': 350000, + '800,000': 800000, + '1,800,000': 1800000, + '4,500,000': 4500000, + '12,000,000': 12000000, +} + +interface UnprofitableUser { + wallet: string + tier: number + tierLimit: string + deposited: number + depositedStr: string + utilization: number + vapeValueUSD: number + originalFee: number + roi: number + loss: number +} + +const unprofitableUsers: UnprofitableUser[] = [] + +for (const line of lines) { + if (!line.includes('0x')) continue + + const cols = line.match(/"([^"]*)"/g)?.map((c) => c.replace(/"/g, '')) || [] + if (cols.length < 16) continue + + const [wallet, tier, limitStr, depositedStr, , , , vapeValueStr, origFeeStr, , origROI, , origProfitLoss, , origProfitable] = cols + + if (tier === '0' || origProfitable === 'Free Tier') continue + if (origProfitable === 'Yes') continue + + const limit = tierLimits[limitStr] || 0 + const deposited = parseFloat(depositedStr.replace(/,/g, '')) + const utilization = (deposited / limit) * 100 + const vapeValueUSD = parseFloat(vapeValueStr) + const originalFee = parseFloat(origFeeStr) + const roi = parseFloat(origROI) + const loss = parseFloat(origProfitLoss) + + unprofitableUsers.push({ + wallet, + tier: parseInt(tier), + tierLimit: limitStr, + deposited, + depositedStr, + utilization, + vapeValueUSD, + originalFee, + roi, + loss, + }) +} + +console.log('═'.repeat(80)) +console.log('šŸ“Š UNPROFITABLE USERS ANALYSIS - SEASON 30') +console.log('═'.repeat(80)) + +console.log(`\nTotal Unprofitable Users: ${unprofitableUsers.length}`) + +// Tier breakdown +console.log('\n' + '─'.repeat(80)) +console.log('BREAKDOWN BY TIER') +console.log('─'.repeat(80)) + +const tierStats: Record = {} + +for (const user of unprofitableUsers) { + if (!tierStats[user.tier]) { + tierStats[user.tier] = { count: 0, totalLoss: 0, avgROI: 0, avgUtil: 0, rois: [], utils: [] } + } + tierStats[user.tier].count++ + tierStats[user.tier].totalLoss += Math.abs(user.loss) + tierStats[user.tier].rois.push(user.roi) + tierStats[user.tier].utils.push(user.utilization) +} + +console.log('\nTier | Users | Total Loss | Avg Loss | Avg ROI | Avg Utilization') +console.log('─'.repeat(70)) + +let grandTotalLoss = 0 +for (const tier of Object.keys(tierStats).map(Number).sort((a, b) => a - b)) { + const stats = tierStats[tier] + const avgROI = (stats.rois.reduce((a, b) => a + b, 0) / stats.count).toFixed(2) + const avgUtil = (stats.utils.reduce((a, b) => a + b, 0) / stats.count).toFixed(1) + const avgLoss = (stats.totalLoss / stats.count).toFixed(2) + grandTotalLoss += stats.totalLoss + console.log(` ${tier} | ${String(stats.count).padStart(2)} | $${stats.totalLoss.toFixed(2).padStart(7)} | $${avgLoss.padStart(5)} | ${avgROI}x | ${avgUtil}%`) +} + +console.log('─'.repeat(70)) +console.log(`TOTAL | ${unprofitableUsers.length} | $${grandTotalLoss.toFixed(2).padStart(7)} | $${(grandTotalLoss / unprofitableUsers.length).toFixed(2).padStart(5)} |`) + +// Utilization breakdown +console.log('\n' + '─'.repeat(80)) +console.log('BREAKDOWN BY UTILIZATION') +console.log('─'.repeat(80)) + +const utilizationBuckets = { + '100% (maxed)': unprofitableUsers.filter(u => u.utilization >= 99), + '90-99%': unprofitableUsers.filter(u => u.utilization >= 90 && u.utilization < 99), + '75-90%': unprofitableUsers.filter(u => u.utilization >= 75 && u.utilization < 90), + '50-75%': unprofitableUsers.filter(u => u.utilization >= 50 && u.utilization < 75), + '<50%': unprofitableUsers.filter(u => u.utilization < 50), +} + +console.log('\nUtilization | Users | % of Total | Total Loss | Avg ROI') +console.log('─'.repeat(65)) + +for (const [bucket, users] of Object.entries(utilizationBuckets)) { + if (users.length === 0) continue + const totalLoss = users.reduce((sum, u) => sum + Math.abs(u.loss), 0) + const avgROI = (users.reduce((sum, u) => sum + u.roi, 0) / users.length).toFixed(2) + const pct = ((users.length / unprofitableUsers.length) * 100).toFixed(1) + console.log(`${bucket.padEnd(12)} | ${String(users.length).padStart(2)} | ${pct.padStart(5)}% | $${totalLoss.toFixed(2).padStart(7)} | ${avgROI}x`) +} + +// ROI breakdown +console.log('\n' + '─'.repeat(80)) +console.log('BREAKDOWN BY ROI (How close to break-even)') +console.log('─'.repeat(80)) + +const roiBuckets = { + '0.9-0.99x (very close)': unprofitableUsers.filter(u => u.roi >= 0.9), + '0.7-0.89x (moderate)': unprofitableUsers.filter(u => u.roi >= 0.7 && u.roi < 0.9), + '0.5-0.69x (significant)': unprofitableUsers.filter(u => u.roi >= 0.5 && u.roi < 0.7), + '0.3-0.49x (heavy)': unprofitableUsers.filter(u => u.roi >= 0.3 && u.roi < 0.5), + '<0.3x (severe)': unprofitableUsers.filter(u => u.roi < 0.3), +} + +console.log('\nROI Range | Users | % of Total | Avg Loss | Would be profitable w/ dynamic?') +console.log('─'.repeat(85)) + +const VAPE_PRICE = 0.16 +const REF_PRICE = 0.606 + +for (const [bucket, users] of Object.entries(roiBuckets)) { + if (users.length === 0) continue + const avgLoss = (users.reduce((sum, u) => sum + Math.abs(u.loss), 0) / users.length).toFixed(2) + const pct = ((users.length / unprofitableUsers.length) * 100).toFixed(1) + + // Check how many would be profitable with dynamic pricing + const wouldBeProfit = users.filter(u => { + const dynamicFee = u.originalFee * (VAPE_PRICE / REF_PRICE) + return u.vapeValueUSD >= dynamicFee + }).length + + console.log(`${bucket.padEnd(20)} | ${String(users.length).padStart(2)} | ${pct.padStart(5)}% | $${avgLoss.padStart(5)} | ${wouldBeProfit}/${users.length} (${((wouldBeProfit / users.length) * 100).toFixed(0)}%)`) +} + +// Worst losses +console.log('\n' + '─'.repeat(80)) +console.log('TOP 10 BIGGEST LOSSES') +console.log('─'.repeat(80)) + +const sorted = [...unprofitableUsers].sort((a, b) => a.loss - b.loss) +console.log('\nWallet | Tier | Deposited | VAPE Value | Fee | Loss | ROI') +console.log('─'.repeat(105)) + +for (const user of sorted.slice(0, 10)) { + console.log( + `${user.wallet.slice(0, 42)} | ${String(user.tier).padStart(4)} | ${user.depositedStr.padStart(15)} | $${user.vapeValueUSD.toFixed(2).padStart(7)} | $${user.originalFee.toFixed(2).padStart(5)} | -$${Math.abs(user.loss).toFixed(2).padStart(5)} | ${user.roi.toFixed(2)}x` + ) +} + +// Summary +console.log('\n' + '═'.repeat(80)) +console.log('KEY INSIGHTS') +console.log('═'.repeat(80)) + +const maxedUsers = unprofitableUsers.filter(u => u.utilization >= 95) +const underUsers = unprofitableUsers.filter(u => u.utilization < 95) +const wouldBeProfitDynamic = unprofitableUsers.filter(u => { + const dynamicFee = u.originalFee * (VAPE_PRICE / REF_PRICE) + return u.vapeValueUSD >= dynamicFee +}).length + +console.log(` +1. UTILIZATION IS NOT THE PROBLEM + • ${maxedUsers.length}/${unprofitableUsers.length} (${((maxedUsers.length / unprofitableUsers.length) * 100).toFixed(0)}%) unprofitable users MAXED their tier deposit + • Even 100% utilization doesn't guarantee profit at current VAPE price + +2. LOWER TIERS HIT HARDEST + • Tier 1-4 account for ${unprofitableUsers.filter(u => u.tier <= 4).length}/${unprofitableUsers.length} unprofitable users + • These users pay $0.50-$4 fees for small deposits that can't generate enough rewards + +3. DYNAMIC PRICING WOULD FIX ${((wouldBeProfitDynamic / unprofitableUsers.length) * 100).toFixed(0)}% OF CASES + • ${wouldBeProfitDynamic}/${unprofitableUsers.length} unprofitable users would become profitable + • Only ${unprofitableUsers.length - wouldBeProfitDynamic} would remain unprofitable (very low engagement) + +4. TOTAL LOSSES: $${grandTotalLoss.toFixed(2)} + • Average loss per user: $${(grandTotalLoss / unprofitableUsers.length).toFixed(2)} + • This is money users lost to fees they couldn't recover +`) diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 36b86ad..142c61f 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -1,11 +1,11 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.18; -import { LDiamond } from "clouds/diamond/LDiamond.sol"; -import { IERC20 } from "openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {LDiamond} from "clouds/diamond/LDiamond.sol"; +import {IERC20} from "openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { AppStorage, UserData, Season } from "../libraries/AppStorage.sol"; -import { IEmissionsManager } from "../interfaces/IEmissionsManager.sol"; +import {AppStorage, UserData, Season} from "../libraries/AppStorage.sol"; +import {IEmissionsManager} from "../interfaces/IEmissionsManager.sol"; error DiamondManagerFacet__Not_Owner(); error DiamondManagerFacet__Invalid_Address(); @@ -14,6 +14,8 @@ error DiamondManagerFacet__Season_Not_Finished(); error DiamondManagerFacet_InvalidArgs_ChangeBoostPoints(); error DiamondManagerFacet__NotGelatoExecutor(); error DiamondManagerFacet__NotAuthorized(); +error DiamondManagerFacet__FeeBelowFloor(); +error DiamondManagerFacet__InvalidTier(); contract DiamondManagerFacet { AppStorage s; @@ -38,6 +40,8 @@ contract DiamondManagerFacet { event SeasonStarted(uint256 indexed seasonId, uint256 rewardTokenToDistribute); event SeasonEnded(uint256 indexed seasonId, uint256 rewardTokenDistributed); event MiningPassFeeReceiversSet(address[] receivers, uint256[] proportion); + event MiningPassFeesUpdated(uint256[] fees); + event MiningPassFeeFloorUpdated(uint256 floorBps); modifier onlyOwner() { if (msg.sender != LDiamond.contractOwner()) { @@ -128,6 +132,68 @@ contract DiamondManagerFacet { emit MiningPassFeeReceiversSet(receivers, proportion); } + /// @notice Update mining pass fees for all tiers (dynamic pricing) + /// @dev Fees must be >= floor price (25% of base fee by default) + /// @param fees Array of 11 fees for tiers 0-10 (in USDC with 6 decimals) + function setMiningPassFees(uint256[] calldata fees) external onlyOwner { + if (fees.length != 11) { + revert DiamondManagerFacet__Invalid_Input(); + } + + uint256 floorBps = s.miningPassFeeFloorBps; + + for (uint256 i; i < 11;) { + uint256 baseFee = s.baseMiningPassTierToFee[i]; + uint256 floorFee = (baseFee * floorBps) / TOTAL_SHARES; + + // Fee must be >= floor price (but tier 0 is always free) + if (i > 0 && fees[i] < floorFee) { + revert DiamondManagerFacet__FeeBelowFloor(); + } + + s.miningPassTierToFee[i] = fees[i]; + + unchecked { + i++; + } + } + + emit MiningPassFeesUpdated(fees); + } + + /// @notice Update a single mining pass tier fee + /// @param tier The tier to update (0-10) + /// @param fee The new fee in USDC (6 decimals) + function setMiningPassTierFee(uint256 tier, uint256 fee) external onlyOwner { + if (tier > 10) { + revert DiamondManagerFacet__InvalidTier(); + } + + uint256 baseFee = s.baseMiningPassTierToFee[tier]; + uint256 floorFee = (baseFee * s.miningPassFeeFloorBps) / TOTAL_SHARES; + + // Fee must be >= floor price (but tier 0 is always free) + if (tier > 0 && fee < floorFee) { + revert DiamondManagerFacet__FeeBelowFloor(); + } + + s.miningPassTierToFee[tier] = fee; + + uint256[] memory fees = new uint256[](1); + fees[0] = fee; + emit MiningPassFeesUpdated(fees); + } + + /// @notice Update the floor price percentage for mining pass fees + /// @param floorBps Floor price in basis points (e.g., 2500 = 25%) + function setMiningPassFeeFloor(uint256 floorBps) external onlyOwner { + if (floorBps > TOTAL_SHARES) { + revert DiamondManagerFacet__Invalid_Input(); + } + s.miningPassFeeFloorBps = floorBps; + emit MiningPassFeeFloorUpdated(floorBps); + } + function setRewardToken(address token) external validAddress(token) onlyOwner { s.rewardToken = token; } @@ -166,10 +232,10 @@ contract DiamondManagerFacet { emit SeasonStarted(s.currentSeasonId, _rewardTokenToDistribute); } - function startNewSeasonWithEndTimestamp( - uint256 _rewardTokenToDistribute, - uint256 _endTimestamp - ) external onlyAuthorized { + function startNewSeasonWithEndTimestamp(uint256 _rewardTokenToDistribute, uint256 _endTimestamp) + external + onlyAuthorized + { uint256 _currentSeason = s.currentSeasonId; if (_currentSeason != 0 && s.seasons[_currentSeason].endTimestamp >= block.timestamp) { revert DiamondManagerFacet__Season_Not_Finished(); @@ -219,10 +285,10 @@ contract DiamondManagerFacet { emit EmissionsManagerSet(_emissionManager); } - function setUnlockTimestampDiscountForStratosphereMember( - uint256 tier, - uint256 discountBasisPoints - ) external onlyOwner { + function setUnlockTimestampDiscountForStratosphereMember(uint256 tier, uint256 discountBasisPoints) + external + onlyOwner + { s.unlockTimestampDiscountForStratosphereMembers[tier] = discountBasisPoints; emit UnlockTimestampDiscountForStratosphereMemberSet(tier, discountBasisPoints); } @@ -365,9 +431,11 @@ contract DiamondManagerFacet { return s.seasons[seasonId].rewardTokensToDistribute; } - function getCurrentSeasonUserDetails( - address _account - ) external view returns (uint256 depositAmount, uint256 poolShareBips, uint256 estimatedRewards) { + function getCurrentSeasonUserDetails(address _account) + external + view + returns (uint256 depositAmount, uint256 poolShareBips, uint256 estimatedRewards) + { uint256 _currentSeasonId = s.currentSeasonId; UserData memory _userData = s.usersData[_currentSeasonId][_account]; Season memory _season = s.seasons[_currentSeasonId]; @@ -381,4 +449,52 @@ contract DiamondManagerFacet { function getSeasonIsClaimed(uint256 seasonId) external view returns (bool) { return s.isSeasonClaimed[seasonId]; } + + /// @notice Get the current mining pass fee for a tier + /// @param tier The tier to query (0-10) + /// @return fee The current fee in USDC (6 decimals) + function getMiningPassTierFee(uint256 tier) external view returns (uint256) { + return s.miningPassTierToFee[tier]; + } + + /// @notice Get the base (original) mining pass fee for a tier + /// @param tier The tier to query (0-10) + /// @return fee The base fee in USDC (6 decimals) + function getBaseMiningPassTierFee(uint256 tier) external view returns (uint256) { + return s.baseMiningPassTierToFee[tier]; + } + + /// @notice Get the floor price for a tier + /// @param tier The tier to query (0-10) + /// @return floorFee The minimum allowed fee in USDC (6 decimals) + function getMiningPassTierFloorFee(uint256 tier) external view returns (uint256) { + uint256 baseFee = s.baseMiningPassTierToFee[tier]; + return (baseFee * s.miningPassFeeFloorBps) / TOTAL_SHARES; + } + + /// @notice Get the floor price percentage + /// @return floorBps Floor price in basis points (e.g., 2500 = 25%) + function getMiningPassFeeFloorBps() external view returns (uint256) { + return s.miningPassFeeFloorBps; + } + + /// @notice Get all current mining pass fees + /// @return fees Array of 11 fees for tiers 0-10 + function getAllMiningPassFees() external view returns (uint256[] memory) { + uint256[] memory fees = new uint256[](11); + for (uint256 i; i < 11;) { + fees[i] = s.miningPassTierToFee[i]; + unchecked { + i++; + } + } + return fees; + } + + /// @notice Get deposit limit for a mining pass tier + /// @param tier The tier to query (0-10) + /// @return limit The deposit limit in VPND (18 decimals) + function getMiningPassTierDepositLimit(uint256 tier) external view returns (uint256) { + return s.miningPassTierToDepositLimit[tier]; + } } diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index 408ed7c..c65667f 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -77,6 +77,10 @@ struct AppStorage { mapping(uint256 => uint256) miningPassTierToDepositLimit; address[] miningPassFeeReceivers; uint256[] miningPassFeeReceiversShares; + /// @dev Base fees (original fees set at deployment, used for floor price calculation) + mapping(uint256 => uint256) baseMiningPassTierToFee; + /// @dev Floor price percentage in basis points (e.g., 2500 = 25%) + uint256 miningPassFeeFloorBps; /////////////// /// GENERAL /// /////////////// diff --git a/src/upgradeInitializers/DiamondInit.sol b/src/upgradeInitializers/DiamondInit.sol index 83d7a86..89e47f1 100644 --- a/src/upgradeInitializers/DiamondInit.sol +++ b/src/upgradeInitializers/DiamondInit.sol @@ -8,12 +8,12 @@ pragma solidity 0.8.18; * Implementation of a diamond. /******************************************************************************/ -import { LDiamond } from "clouds/diamond/LDiamond.sol"; -import { IDiamondLoupe } from "clouds/interfaces/IDiamondLoupe.sol"; -import { IDiamondCut } from "clouds/interfaces/IDiamondCut.sol"; -import { IERC173 } from "clouds/interfaces/IERC173.sol"; -import { IERC165 } from "clouds/interfaces/IERC165.sol"; -import { AppStorage } from "../libraries/AppStorage.sol"; +import {LDiamond} from "clouds/diamond/LDiamond.sol"; +import {IDiamondLoupe} from "clouds/interfaces/IDiamondLoupe.sol"; +import {IDiamondCut} from "clouds/interfaces/IDiamondCut.sol"; +import {IERC173} from "clouds/interfaces/IERC173.sol"; +import {IERC165} from "clouds/interfaces/IERC165.sol"; +import {AppStorage} from "../libraries/AppStorage.sol"; // It is expected that this contract is customized if you want to deploy your diamond // with data from a deployment script. Use the init function to initialize state variables @@ -119,6 +119,19 @@ contract DiamondInit { // MiningPassFacet /// @dev fee is paid in USDC + /// @dev Base fees (original fees, used for floor price calculation) + s.baseMiningPassTierToFee[0] = 0; + s.baseMiningPassTierToFee[1] = 0.5 * 1e6; + s.baseMiningPassTierToFee[2] = 1 * 1e6; + s.baseMiningPassTierToFee[3] = 2 * 1e6; + s.baseMiningPassTierToFee[4] = 4 * 1e6; + s.baseMiningPassTierToFee[5] = 8 * 1e6; + s.baseMiningPassTierToFee[6] = 15 * 1e6; + s.baseMiningPassTierToFee[7] = 30 * 1e6; + s.baseMiningPassTierToFee[8] = 50 * 1e6; + s.baseMiningPassTierToFee[9] = 75 * 1e6; + s.baseMiningPassTierToFee[10] = 100 * 1e6; + /// @dev Current fees (can be updated for dynamic pricing) s.miningPassTierToFee[0] = 0; s.miningPassTierToFee[1] = 0.5 * 1e6; s.miningPassTierToFee[2] = 1 * 1e6; @@ -130,6 +143,8 @@ contract DiamondInit { s.miningPassTierToFee[8] = 50 * 1e6; s.miningPassTierToFee[9] = 75 * 1e6; s.miningPassTierToFee[10] = 100 * 1e6; + /// @dev Floor price is 25% of base fee (2500 basis points) + s.miningPassFeeFloorBps = 2500; /// @dev deposit limit is in VPND s.miningPassTierToDepositLimit[0] = 5_000 * 1e18; s.miningPassTierToDepositLimit[1] = 10_000 * 1e18; diff --git a/test/foundry/Facets/MiningPassDynamicPricing.t.sol b/test/foundry/Facets/MiningPassDynamicPricing.t.sol new file mode 100644 index 0000000..9cced2e --- /dev/null +++ b/test/foundry/Facets/MiningPassDynamicPricing.t.sol @@ -0,0 +1,392 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import "forge-std/Test.sol"; +import {DiamondTest, LiquidMiningDiamond} from "../utils/DiamondTest.sol"; +import {DiamondManagerFacet} from "src/facets/DiamondManagerFacet.sol"; +import "src/facets/MiningPassFacet.sol"; + +error DiamondManagerFacet__Not_Owner(); +error DiamondManagerFacet__Invalid_Input(); +error DiamondManagerFacet__FeeBelowFloor(); +error DiamondManagerFacet__InvalidTier(); + +contract MiningPassDynamicPricingTest is DiamondTest { + LiquidMiningDiamond internal diamond; + DiamondManagerFacet internal diamondManagerFacet; + MiningPassFacet internal miningPassFacet; + + address internal owner = makeAddr("diamondOwner"); + address internal user = makeAddr("user"); + + // Original fees in USDC (6 decimals) + uint256[] internal originalFees = [ + 0, // Tier 0 + 0.5 * 1e6, // Tier 1 + 1 * 1e6, // Tier 2 + 2 * 1e6, // Tier 3 + 4 * 1e6, // Tier 4 + 8 * 1e6, // Tier 5 + 15 * 1e6, // Tier 6 + 30 * 1e6, // Tier 7 + 50 * 1e6, // Tier 8 + 75 * 1e6, // Tier 9 + 100 * 1e6 // Tier 10 + ]; + + function setUp() public { + vm.startPrank(owner); + + diamond = createDiamond(); + diamondManagerFacet = DiamondManagerFacet(address(diamond)); + miningPassFacet = MiningPassFacet(address(diamond)); + + diamondManagerFacet.setCurrentSeasonId(1); + diamondManagerFacet.setSeasonEndTimestamp(1, block.timestamp + 30 days); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // GETTER TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_GetBaseMiningPassTierFee() public { + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getBaseMiningPassTierFee(i), originalFees[i]); + } + } + + function test_GetMiningPassTierFee() public { + // Initially, current fees should equal base fees + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getMiningPassTierFee(i), originalFees[i]); + } + } + + function test_GetMiningPassFeeFloorBps() public { + // Default floor is 25% = 2500 bps + assertEq(diamondManagerFacet.getMiningPassFeeFloorBps(), 2500); + } + + function test_GetMiningPassTierFloorFee() public { + // Floor fee = baseFee * 25% = baseFee / 4 + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(0), 0); + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(1), 0.125 * 1e6); // 0.5 * 0.25 + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(5), 2 * 1e6); // 8 * 0.25 + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(10), 25 * 1e6); // 100 * 0.25 + } + + function test_GetAllMiningPassFees() public { + uint256[] memory fees = diamondManagerFacet.getAllMiningPassFees(); + assertEq(fees.length, 11); + for (uint256 i; i < 11; i++) { + assertEq(fees[i], originalFees[i]); + } + } + + function test_GetMiningPassTierDepositLimit() public { + assertEq(diamondManagerFacet.getMiningPassTierDepositLimit(0), 5_000 * 1e18); + assertEq(diamondManagerFacet.getMiningPassTierDepositLimit(1), 10_000 * 1e18); + assertEq(diamondManagerFacet.getMiningPassTierDepositLimit(10), type(uint256).max); + } + + // ═══════════════════════════════════════════════════════════════════ + // SET FEES TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_SetMiningPassFees() public { + vm.startPrank(owner); + + // Simulate dynamic pricing: fees at 50% of original (above 25% floor) + uint256[] memory newFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + newFees[i] = originalFees[i] / 2; // 50% of original + } + + diamondManagerFacet.setMiningPassFees(newFees); + + // Verify fees were updated + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getMiningPassTierFee(i), newFees[i]); + } + + // Base fees should remain unchanged + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getBaseMiningPassTierFee(i), originalFees[i]); + } + + vm.stopPrank(); + } + + function test_SetMiningPassFees_AtFloor() public { + vm.startPrank(owner); + + // Set fees exactly at floor (25% of original) + uint256[] memory floorFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + floorFees[i] = (originalFees[i] * 2500) / 10000; // 25% of original + } + + diamondManagerFacet.setMiningPassFees(floorFees); + + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getMiningPassTierFee(i), floorFees[i]); + } + + vm.stopPrank(); + } + + function test_SetMiningPassFees_RevertIf_BelowFloor() public { + vm.startPrank(owner); + + // Try to set fees below floor (24% of original) + uint256[] memory lowFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + lowFees[i] = (originalFees[i] * 2400) / 10000; // 24% of original + } + + vm.expectRevert(DiamondManagerFacet__FeeBelowFloor.selector); + diamondManagerFacet.setMiningPassFees(lowFees); + + vm.stopPrank(); + } + + function test_SetMiningPassFees_RevertIf_InvalidLength() public { + vm.startPrank(owner); + + uint256[] memory shortFees = new uint256[](5); + + vm.expectRevert(DiamondManagerFacet__Invalid_Input.selector); + diamondManagerFacet.setMiningPassFees(shortFees); + + vm.stopPrank(); + } + + function test_SetMiningPassFees_RevertIf_NotOwner() public { + vm.startPrank(user); + + uint256[] memory newFees = new uint256[](11); + + vm.expectRevert(DiamondManagerFacet__Not_Owner.selector); + diamondManagerFacet.setMiningPassFees(newFees); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // SET SINGLE TIER FEE TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_SetMiningPassTierFee() public { + vm.startPrank(owner); + + // Update tier 5 to 50% of original + uint256 newFee = originalFees[5] / 2; // $4 instead of $8 + diamondManagerFacet.setMiningPassTierFee(5, newFee); + + assertEq(diamondManagerFacet.getMiningPassTierFee(5), newFee); + // Other tiers unchanged + assertEq(diamondManagerFacet.getMiningPassTierFee(4), originalFees[4]); + assertEq(diamondManagerFacet.getMiningPassTierFee(6), originalFees[6]); + + vm.stopPrank(); + } + + function test_SetMiningPassTierFee_RevertIf_BelowFloor() public { + vm.startPrank(owner); + + // Try to set tier 5 below floor + uint256 belowFloorFee = 1.9 * 1e6; // Below $2 floor (25% of $8) + + vm.expectRevert(DiamondManagerFacet__FeeBelowFloor.selector); + diamondManagerFacet.setMiningPassTierFee(5, belowFloorFee); + + vm.stopPrank(); + } + + function test_SetMiningPassTierFee_RevertIf_InvalidTier() public { + vm.startPrank(owner); + + vm.expectRevert(DiamondManagerFacet__InvalidTier.selector); + diamondManagerFacet.setMiningPassTierFee(11, 1e6); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // SET FLOOR TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_SetMiningPassFeeFloor() public { + vm.startPrank(owner); + + // Change floor to 50% + diamondManagerFacet.setMiningPassFeeFloor(5000); + assertEq(diamondManagerFacet.getMiningPassFeeFloorBps(), 5000); + + // Verify floor fee calculation changed + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(10), 50 * 1e6); // 50% of $100 + + vm.stopPrank(); + } + + function test_SetMiningPassFeeFloor_RevertIf_InvalidValue() public { + vm.startPrank(owner); + + // Cannot exceed 100% + vm.expectRevert(DiamondManagerFacet__Invalid_Input.selector); + diamondManagerFacet.setMiningPassFeeFloor(10001); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // PURCHASE WITH DYNAMIC FEES TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_Purchase_WithDynamicFees() public { + vm.startPrank(owner); + + // Set fees to 50% of original + uint256[] memory newFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + newFees[i] = originalFees[i] / 2; + } + diamondManagerFacet.setMiningPassFees(newFees); + + vm.stopPrank(); + + vm.startPrank(user); + _approveAndMintFeeToken(100 * 1e6); + + // Purchase tier 1 - should cost $0.25 instead of $0.50 + miningPassFacet.purchase(1); + + (uint256 _passTier,) = miningPassFacet.miningPassOf(user); + assertEq(_passTier, 1); + assertEq(feeToken.balanceOf(address(diamond)), 0.25 * 1e6); + + vm.stopPrank(); + } + + function test_Purchase_WithDynamicFees_Upgrade() public { + vm.startPrank(owner); + + // Set fees to 50% of original + uint256[] memory newFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + newFees[i] = originalFees[i] / 2; + } + diamondManagerFacet.setMiningPassFees(newFees); + + vm.stopPrank(); + + vm.startPrank(user); + _approveAndMintFeeToken(100 * 1e6); + + // Purchase tier 1 then upgrade to tier 2 + miningPassFacet.purchase(1); + miningPassFacet.purchase(2); + + (uint256 _passTier,) = miningPassFacet.miningPassOf(user); + assertEq(_passTier, 2); + + // Total paid: $0.25 (tier 1) + $0.25 (upgrade to tier 2) = $0.50 + assertEq(feeToken.balanceOf(address(diamond)), 0.5 * 1e6); + + vm.stopPrank(); + } + + function test_Purchase_AtFloorPrice() public { + vm.startPrank(owner); + + // Set fees at floor (25% of original) + uint256[] memory floorFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + floorFees[i] = (originalFees[i] * 2500) / 10000; + } + diamondManagerFacet.setMiningPassFees(floorFees); + + vm.stopPrank(); + + vm.startPrank(user); + _approveAndMintFeeToken(100 * 1e6); + + // Purchase tier 10 at floor price - should cost $25 instead of $100 + miningPassFacet.purchase(10); + + (uint256 _passTier,) = miningPassFacet.miningPassOf(user); + assertEq(_passTier, 10); + assertEq(feeToken.balanceOf(address(diamond)), 25 * 1e6); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // DYNAMIC PRICING SIMULATION + // ═══════════════════════════════════════════════════════════════════ + + function test_DynamicPricing_SimulateVAPEPriceChange() public { + vm.startPrank(owner); + + // Simulate VAPE price drop: $0.606 -> $0.16 (26.4% of original) + // Formula: newFee = originalFee * (currentVAPEPrice / referenceVAPEPrice) + // At floor (25%), fees would be capped + + uint256 referenceVAPEPrice = 606; // $0.606 scaled by 1000 + uint256 currentVAPEPrice = 160; // $0.16 scaled by 1000 + + uint256[] memory dynamicFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + uint256 calculatedFee = (originalFees[i] * currentVAPEPrice) / referenceVAPEPrice; + uint256 floorFee = (originalFees[i] * 2500) / 10000; + // Apply floor + dynamicFees[i] = calculatedFee > floorFee ? calculatedFee : floorFee; + } + + diamondManagerFacet.setMiningPassFees(dynamicFees); + + // Verify tier 10: (100 * 1e6 * 160) / 606 = 26402640 (integer division) + // This is above floor (25 * 1e6), so dynamic price applies + uint256 expectedTier10Fee = (100 * 1e6 * currentVAPEPrice) / referenceVAPEPrice; + assertEq(diamondManagerFacet.getMiningPassTierFee(10), expectedTier10Fee); + assertTrue(expectedTier10Fee > 25 * 1e6, "Fee should be above floor"); + + vm.stopPrank(); + } + + function test_DynamicPricing_FloorProtection() public { + vm.startPrank(owner); + + // Simulate extreme VAPE price drop: $0.606 -> $0.10 (16.5% of original) + // This is below floor (25%), so fees should be capped at floor + + uint256 referenceVAPEPrice = 606; + uint256 currentVAPEPrice = 100; // $0.10 + + uint256[] memory dynamicFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + uint256 calculatedFee = (originalFees[i] * currentVAPEPrice) / referenceVAPEPrice; + uint256 floorFee = (originalFees[i] * 2500) / 10000; + // Apply floor + dynamicFees[i] = calculatedFee > floorFee ? calculatedFee : floorFee; + } + + diamondManagerFacet.setMiningPassFees(dynamicFees); + + // All fees should be at floor (25% of original) + assertEq(diamondManagerFacet.getMiningPassTierFee(10), 25 * 1e6); // Floor: $25 + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // HELPERS + // ═══════════════════════════════════════════════════════════════════ + + function _approveAndMintFeeToken(uint256 _amount) internal { + feeToken.mint(user, _amount); + feeToken.increaseAllowance(address(miningPassFacet), _amount); + } +} diff --git a/test/foundry/utils/DiamondTest.sol b/test/foundry/utils/DiamondTest.sol index df06cfa..5ff37df 100644 --- a/test/foundry/utils/DiamondTest.sol +++ b/test/foundry/utils/DiamondTest.sol @@ -19,8 +19,8 @@ import "src/facets/WithdrawFacet.sol"; import "src/facets/FeeCollectorFacet.sol"; import "src/facets/MiningPassFacet.sol"; import "src/upgradeInitializers/DiamondInit.sol"; -import { ERC20Mock } from "test/foundry/mocks/ERC20Mock.sol"; -import { StratosphereMock } from "test/foundry/mocks/StratosphereMock.sol"; +import {ERC20Mock} from "test/foundry/mocks/ERC20Mock.sol"; +import {StratosphereMock} from "test/foundry/mocks/StratosphereMock.sol"; contract DiamondTest is Test { IDiamondCut.FacetCut[] internal cut; @@ -178,7 +178,7 @@ contract DiamondTest is Test { function setDiamondManagerFacet() private { DiamondManagerFacet diamondManager = new DiamondManagerFacet(); bytes4[] memory functionSelectors; - functionSelectors = new bytes4[](29); + functionSelectors = new bytes4[](38); functionSelectors[0] = diamondManager.setDepositToken.selector; functionSelectors[1] = diamondManager.setCurrentSeasonId.selector; functionSelectors[2] = diamondManager.setStratosphereAddress.selector; @@ -208,6 +208,16 @@ contract DiamondTest is Test { functionSelectors[26] = diamondManager.setBoostFeeReceivers.selector; functionSelectors[27] = diamondManager.setUnlockFeeReceivers.selector; functionSelectors[28] = diamondManager.getUserLastBoostClaimedAmount.selector; + // Mining pass dynamic pricing + functionSelectors[29] = diamondManager.setMiningPassFees.selector; + functionSelectors[30] = diamondManager.setMiningPassTierFee.selector; + functionSelectors[31] = diamondManager.setMiningPassFeeFloor.selector; + functionSelectors[32] = diamondManager.getMiningPassTierFee.selector; + functionSelectors[33] = diamondManager.getBaseMiningPassTierFee.selector; + functionSelectors[34] = diamondManager.getMiningPassTierFloorFee.selector; + functionSelectors[35] = diamondManager.getMiningPassFeeFloorBps.selector; + functionSelectors[36] = diamondManager.getAllMiningPassFees.selector; + functionSelectors[37] = diamondManager.getMiningPassTierDepositLimit.selector; cut.push( IDiamondCut.FacetCut({ diff --git a/yarn.lock b/yarn.lock index 6ef8483..979ad56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316" integrity sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg== +"@adraffy/ens-normalize@^1.11.0": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz#6c2d657d4b2dfb37f8ea811dcb3e60843d4ac24a" + integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== + "@babel/code-frame@^7.0.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" @@ -447,6 +452,11 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + "@noble/curves@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" @@ -454,6 +464,20 @@ dependencies: "@noble/hashes" "1.3.2" +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/hashes@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" @@ -469,6 +493,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@noble/hashes@^1.3.3": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" @@ -791,6 +820,11 @@ resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + "@scure/bip32@1.1.5": version "1.1.5" resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" @@ -800,6 +834,15 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.7.0", "@scure/bip32@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== + dependencies: + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" @@ -808,6 +851,14 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.6.0", "@scure/bip39@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== + dependencies: + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -1072,6 +1123,11 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== +abitype@1.2.3, abitype@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.2.3.tgz#bec3e09dea97d99ef6c719140bee663a329ad1f4" + integrity sha512-Ofer5QUnuUdTFsBRwARMoWKOH1ND5ehwYhJ3OJ/BQO+StkwQjHw0XyVh4vDttzHB7QOFhPHa/o413PJ82gU/Tg== + abitype@^1.0.2: version "1.0.5" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" @@ -2450,6 +2506,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" @@ -3516,6 +3577,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -4271,6 +4337,20 @@ os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +ox@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.11.3.tgz#f50be1cae88822f5111b1e3f4a324c4c07eed422" + integrity sha512-1bWYGk/xZel3xro3l8WGg6eq4YEKlaqvyMtVhfMFpbJzK2F6rj4EDRtqDCWVEJMkzcmEi9uW2QxsqELokOlarw== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.2.3" + eventemitter3 "5.0.1" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -5613,6 +5693,20 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +viem@2.45.1: + version "2.45.1" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.45.1.tgz#c1c373efcf2a0b30f5e454cfb4a9c18ac5bb5452" + integrity sha512-LN6Pp7vSfv50LgwhkfSbIXftAM5J89lP9x8TeDa8QM7o41IxlHrDh0F9X+FfnCWtsz11pEVV5sn+yBUoOHNqYA== + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.2.3" + isows "1.0.7" + ox "0.11.3" + ws "8.18.3" + web3-utils@^1.3.6: version "1.10.0" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.0.tgz#ca4c1b431a765c14ac7f773e92e0fd9377ccf578" @@ -5750,6 +5844,11 @@ ws@8.17.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@8.18.3: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + ws@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" From 4622bf9178c9a0f5bd7e7c1b127c156e2e14ea88 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Mon, 16 Feb 2026 23:00:50 +0530 Subject: [PATCH 27/34] fix: storage collision in fuji --- deployments/AuthorizationFacet.json | 8 +- deployments/BoostFacet.json | 10 +- deployments/ClaimFacet.json | 8 +- deployments/DepositFacet.json | 13 +- deployments/DiamondManagerFacet.json | 406 ++++++++++++++---- deployments/FeeCollectorFacet.json | 13 +- deployments/MiningPassFacet.json | 35 +- deployments/OwnershipFacet.json | 8 +- deployments/PausationFacet.json | 8 +- deployments/UnlockFacet.json | 6 +- deployments/WithdrawFacet.json | 6 +- hardhat.config.ts | 2 + scripts/initDynamicPricing.ts | 54 +++ src/facets/DiamondManagerFacet.sol | 20 + src/libraries/AppStorage.sol | 81 ++-- tasks/diamondInfo.ts | 163 +++++++ tasks/startSeason.ts | 134 ++++++ .../Facets/MiningPassDynamicPricing.t.sol | 53 +++ test/foundry/fork/FujiForkMiningPass.t.sol | 200 +++++++++ test/foundry/utils/DiamondTest.sol | 3 +- 20 files changed, 1067 insertions(+), 164 deletions(-) create mode 100644 scripts/initDynamicPricing.ts create mode 100644 tasks/diamondInfo.ts create mode 100644 tasks/startSeason.ts create mode 100644 test/foundry/fork/FujiForkMiningPass.t.sol diff --git a/deployments/AuthorizationFacet.json b/deployments/AuthorizationFacet.json index 804ca6c..af0394f 100644 --- a/deployments/AuthorizationFacet.json +++ b/deployments/AuthorizationFacet.json @@ -56,17 +56,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea26469706673582212206954ab9119fc8a5f453dab97d517d060dbd2057b1ce9fdc4e29f59584dc0a74e64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea26469706673582212206954ab9119fc8a5f453dab97d517d060dbd2057b1ce9fdc4e29f59584dc0a74e64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220e69d9fcd8693fd2077284a7845242557f17631c80d796b01e59d083d5fe481b664736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220e69d9fcd8693fd2077284a7845242557f17631c80d796b01e59d083d5fe481b664736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0x0B88CA7B50aBb560A70c24c84Ff88d46Fd2634A2" + "address": "0xfd27E4e7730B8B636377974db80E9635b9583D3a" }, "hardhat": { "artifact": { diff --git a/deployments/BoostFacet.json b/deployments/BoostFacet.json index 8ac5936..8fee60c 100644 --- a/deployments/BoostFacet.json +++ b/deployments/BoostFacet.json @@ -72,7 +72,7 @@ "inputs": [ { "internalType": "uint256", - "name": "boostLevel", + "name": "_boostLevel", "type": "uint256" } ], @@ -82,17 +82,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061075c806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e3660046105d9565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be9190610621565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806101066000336102d4565b60ff16915091508115801561011b5750600086115b15610152576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561016a576000868152600f602052604090205492505b426004850155600082156101985750600081815260106020908152604080832089845290915290205461019d565b50600e545b60006101aa868389610419565b9050808660030160008282546101c09190610634565b909155505060058601819055841561027e576101db856104bc565b601b546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027c9190610647565b505b604080518981526020810183905290810186905260608101849052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610669565b90508015610410576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040d9190610682565b92505b50509250929050565b60008260000361042b575060006104b5565b600082815260046020526040812060028101549091906201518090610451904290610621565b61045b91906106a5565b905080600003610470576000925050506104b5565b85546000906104809083906106e0565b876002015461048f9190610621565b9050806000036104a557600093505050506104b5565b6104af81876105b7565b93505050505b9392505050565b601180546012805490919081146104ff576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b057600061053286858481548110610522576105226106f7565b90600052602060002001546105b7565b9050806000601601600087858154811061054e5761054e6106f7565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601b54909416825292909252812080549091906105a2908490610634565b909155505050600101610502565b5050505050565b60006127106105c683856106e0565b6105d091906106a5565b90505b92915050565b6000602082840312156105eb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105d3576105d36105f2565b808201808211156105d3576105d36105f2565b60006020828403121561065957600080fd5b815180151581146104b557600080fd5b60006020828403121561067b57600080fd5b5051919050565b60006020828403121561069457600080fd5b815160ff811681146104b557600080fd5b6000826106db577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105d3576105d36105f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212202b54a505a8ba39762f11fea82f1fa07b296dc8e0f45dc083bf3074ffc3e8923e64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e3660046105d9565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be9190610621565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080806101066000336102d4565b60ff16915091508115801561011b5750600086115b15610152576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b811561016a576000868152600f602052604090205492505b426004850155600082156101985750600081815260106020908152604080832089845290915290205461019d565b50600e545b60006101aa868389610419565b9050808660030160008282546101c09190610634565b909155505060058601819055841561027e576101db856104bc565b601b546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af1158015610258573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027c9190610647565b505b604080518981526020810183905290810186905260608101849052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610669565b90508015610410576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040d9190610682565b92505b50509250929050565b60008260000361042b575060006104b5565b600082815260046020526040812060028101549091906201518090610451904290610621565b61045b91906106a5565b905080600003610470576000925050506104b5565b85546000906104809083906106e0565b876002015461048f9190610621565b9050806000036104a557600093505050506104b5565b6104af81876105b7565b93505050505b9392505050565b601180546012805490919081146104ff576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105b057600061053286858481548110610522576105226106f7565b90600052602060002001546105b7565b9050806000601601600087858154811061054e5761054e6106f7565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601b54909416825292909252812080549091906105a2908490610634565b909155505050600101610502565b5050505050565b60006127106105c683856106e0565b6105d091906106a5565b90505b92915050565b6000602082840312156105eb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156105d3576105d36105f2565b808201808211156105d3576105d36105f2565b60006020828403121561065957600080fd5b815180151581146104b557600080fd5b60006020828403121561067b57600080fd5b5051919050565b60006020828403121561069457600080fd5b815160ff811681146104b557600080fd5b6000826106db577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105d3576105d36105f2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea26469706673582212202b54a505a8ba39762f11fea82f1fa07b296dc8e0f45dc083bf3074ffc3e8923e64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b506106fc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6019546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206019549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220316babebf3d79b80a3c96e3cac17864ac7ec9a492f0315c3d77f5b194a0e443064736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6019546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206019549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220316babebf3d79b80a3c96e3cac17864ac7ec9a492f0315c3d77f5b194a0e443064736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0xa6781ae4Ea2E3fCe3f78d6e1198D2F3d79fCE831" + "address": "0x536BECeD986BD133Be29b1914A754388ac62B375" }, "hardhat": { "artifact": { diff --git a/deployments/ClaimFacet.json b/deployments/ClaimFacet.json index c0c3aad..0119aa8 100644 --- a/deployments/ClaimFacet.json +++ b/deployments/ClaimFacet.json @@ -93,17 +93,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220e396becb510c318f885d10710b6056aad850051dc5552e85dca360c145c977c964736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b9091555050601a546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220e396becb510c318f885d10710b6056aad850051dc5552e85dca360c145c977c964736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220da59b4c12674f0b8d1bd46712009a318fb17ec59602f240f461eb3c41e6ebc9564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220da59b4c12674f0b8d1bd46712009a318fb17ec59602f240f461eb3c41e6ebc9564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0xbCE10F19C19151036E32Ae0087F51afAc24f3D5A" + "address": "0xc9068e2CfCA201717D5ACc1E990365600bAc919b" }, "hardhat": { "artifact": { diff --git a/deployments/DepositFacet.json b/deployments/DepositFacet.json index bc7d179..4a43c7e 100644 --- a/deployments/DepositFacet.json +++ b/deployments/DepositFacet.json @@ -10,6 +10,11 @@ "name": "DepositFacet__InvalidMiningPass", "type": "error" }, + { + "inputs": [], + "name": "DepositFacet__Less_Than_One_Day", + "type": "error" + }, { "inputs": [], "name": "DepositFacet__NotEnoughTokenBalance", @@ -64,17 +69,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610699806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e366004610538565b610045565b005b601d54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601d81905560195490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610551565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601890925290912054815461018d908690610599565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b336000818152600b6020526040812084905590819081906101f7908290610304565b60ff169150915081156102165760008181526009602052604090205492505b610221878686610449565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905273ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af115801561029a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102be91906105b2565b50604051878152339086907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601d555050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610551565b90508015610440576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906105db565b92505b50509250929050565b60008281526004602052604090206002810154421115610495576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620151804283600201546104ab91906105fe565b6104b59190610611565b9050848360000160008282546104cb9190610599565b909155506104db9050818661064c565b8360020160008282546104ee9190610599565b92505081905550848260050160008282546105099190610599565b909155506105199050818661064c565b82600701600082825461052c9190610599565b90915550505050505050565b60006020828403121561054a57600080fd5b5035919050565b60006020828403121561056357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ac576105ac61056a565b92915050565b6000602082840312156105c457600080fd5b815180151581146105d457600080fd5b9392505050565b6000602082840312156105ed57600080fd5b815160ff811681146105d457600080fd5b818103818111156105ac576105ac61056a565b600082610647577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105ac576105ac61056a56fea2646970667358221220e78cdebd3a758342d53bb6925fb89bd5c78d7c014844b8cd64301774804df7e564736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e366004610538565b610045565b005b601d54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601d81905560195490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610551565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601890925290912054815461018d908690610599565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b336000818152600b6020526040812084905590819081906101f7908290610304565b60ff169150915081156102165760008181526009602052604090205492505b610221878686610449565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810188905273ffffffffffffffffffffffffffffffffffffffff8716906323b872dd906064016020604051808303816000875af115801561029a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102be91906105b2565b50604051878152339086907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601d555050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561037e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a29190610551565b90508015610440576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906105db565b92505b50509250929050565b60008281526004602052604090206002810154421115610495576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000620151804283600201546104ab91906105fe565b6104b59190610611565b9050848360000160008282546104cb9190610599565b909155506104db9050818661064c565b8360020160008282546104ee9190610599565b92505081905550848260050160008282546105099190610599565b909155506105199050818661064c565b82600701600082825461052c9190610599565b90915550505050505050565b60006020828403121561054a57600080fd5b5035919050565b60006020828403121561056357600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156105ac576105ac61056a565b92915050565b6000602082840312156105c457600080fd5b815180151581146105d457600080fd5b9392505050565b6000602082840312156105ed57600080fd5b815160ff811681146105d457600080fd5b818103818111156105ac576105ac61056a565b600082610647577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b80820281158282048414176105ac576105ac61056a56fea2646970667358221220e78cdebd3a758342d53bb6925fb89bd5c78d7c014844b8cd64301774804df7e564736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601b54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601b81905560175490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601b555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220dd66ee540c1842bcce6c3ecbdb2ad13b5f82196a13c81cf4d7dd4bd9d6f83c6f64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601b54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601b81905560175490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601b555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220dd66ee540c1842bcce6c3ecbdb2ad13b5f82196a13c81cf4d7dd4bd9d6f83c6f64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0xAdFc5fDE2f393aF1FD6476B306e65B9588233eC0" + "address": "0xf52265Beab3CcC21143a59926Fbd51528D9b70e8" }, "hardhat": { "artifact": { diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 22c18ac..8e7a3b6 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -5,6 +5,21 @@ "contractName": "DiamondManagerFacet", "sourceName": "src/facets/DiamondManagerFacet.sol", "abi": [ + { + "inputs": [], + "name": "DiamondManagerFacet_InvalidArgs_ChangeBoostPoints", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__FeeBelowFloor", + "type": "error" + }, + { + "inputs": [], + "name": "DiamondManagerFacet__InvalidTier", + "type": "error" + }, { "inputs": [], "name": "DiamondManagerFacet__Invalid_Address", @@ -15,6 +30,11 @@ "name": "DiamondManagerFacet__Invalid_Input", "type": "error" }, + { + "inputs": [], + "name": "DiamondManagerFacet__NotAuthorized", + "type": "error" + }, { "inputs": [], "name": "DiamondManagerFacet__Not_Owner", @@ -25,6 +45,19 @@ "name": "DiamondManagerFacet__Season_Not_Finished", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "fees", + "type": "uint256[]" + } + ], + "name": "BaseMiningPassFeesUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -82,25 +115,6 @@ "name": "ClaimFeeReceiversSet", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "discountPoints", - "type": "uint256" - } - ], - "name": "DepositDiscountForStratosphereMemberSet", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -162,20 +176,14 @@ { "anonymous": false, "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, { "indexed": false, "internalType": "uint256", - "name": "discountPoints", + "name": "floorBps", "type": "uint256" } ], - "name": "RestakeDiscountForStratosphereMemberSet", + "name": "MiningPassFeeFloorUpdated", "type": "event" }, { @@ -194,7 +202,7 @@ "type": "uint256[]" } ], - "name": "RestakeFeeReceiversSet", + "name": "MiningPassFeeReceiversSet", "type": "event" }, { @@ -202,12 +210,31 @@ "inputs": [ { "indexed": false, - "internalType": "uint256", - "name": "fee", - "type": "uint256" + "internalType": "uint256[]", + "name": "fees", + "type": "uint256[]" } ], - "name": "RestakeFeeSet", + "name": "MiningPassFeesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "receivers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" + } + ], + "name": "RestakeFeeReceiversSet", "type": "event" }, { @@ -306,25 +333,6 @@ "name": "StratosphereAddressSet", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "discountPoints", - "type": "uint256" - } - ], - "name": "UnlockFeeDiscountForStratosphereMemberSet", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -402,6 +410,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "addresses", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "newBoostPoints", + "type": "uint256[]" + } + ], + "name": "changeBoostPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "claimTokensForSeason", @@ -409,6 +435,38 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "getAllMiningPassFees", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "getBaseMiningPassTierFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getCurrentSeasonData", @@ -477,6 +535,35 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "getCurrentSeasonUserDetails", + "outputs": [ + { + "internalType": "uint256", + "name": "depositAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "poolShareBips", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "estimatedRewards", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -525,6 +612,76 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "getMiningPassFeeFloorBps", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "getMiningPassTierDepositLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "getMiningPassTierFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + } + ], + "name": "getMiningPassTierFloorFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -686,6 +843,25 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "seasonId", + "type": "uint256" + } + ], + "name": "getSeasonIsClaimed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1134,6 +1310,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "fees", + "type": "uint256[]" + } + ], + "name": "setBaseMiningPassFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1209,17 +1398,12 @@ { "inputs": [ { - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "discountBasisPoints", - "type": "uint256" + "internalType": "address", + "name": "token", + "type": "address" } ], - "name": "setDepositDiscountForStratosphereMember", + "name": "setDepositToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1228,11 +1412,11 @@ "inputs": [ { "internalType": "address", - "name": "token", + "name": "_emissionManager", "type": "address" } ], - "name": "setDepositToken", + "name": "setEmissionsManager", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1241,11 +1425,11 @@ "inputs": [ { "internalType": "address", - "name": "_emissionManager", + "name": "executor", "type": "address" } ], - "name": "setEmissionsManager", + "name": "setGelatoExecutor", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1254,29 +1438,60 @@ "inputs": [ { "internalType": "uint256", - "name": "tier", + "name": "floorBps", "type": "uint256" + } + ], + "name": "setMiningPassFeeFloor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "receivers", + "type": "address[]" }, { - "internalType": "uint256", - "name": "discountBasisPoints", - "type": "uint256" + "internalType": "uint256[]", + "name": "proportion", + "type": "uint256[]" } ], - "name": "setRestakeDiscountForStratosphereMember", + "name": "setMiningPassFeeReceivers", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "fees", + "type": "uint256[]" + } + ], + "name": "setMiningPassFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ + { + "internalType": "uint256", + "name": "tier", + "type": "uint256" + }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], - "name": "setRestakeFee", + "name": "setMiningPassTierFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1294,6 +1509,13 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "setSeasonClaimed", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1338,24 +1560,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tier", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "discountBasisPoints", - "type": "uint256" - } - ], - "name": "setUnlockFeeDiscountForStratosphereMember", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -1422,19 +1626,37 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_rewardTokenToDistribute", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_endTimestamp", + "type": "uint256" + } + ], + "name": "startNewSeasonWithEndTimestamp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506125f6806100206000396000f3fe608060405234801561001057600080fd5b50600436106102ff5760003560e01c80638aee81271161019c578063bc67f25f116100ee578063df40958911610097578063e98519a311610071578063e98519a3146108b3578063f55484ac146108c6578063fca7129f146108d957600080fd5b8063df4095891461088d578063e5ea3fdc1461045d578063e8566118146108a057600080fd5b8063d2b291d1116100c8578063d2b291d114610821578063d822bb8714610867578063dbcbb9a31461087a57600080fd5b8063bc67f25f1461077c578063c4882ed714610784578063d18b3d90146107c957600080fd5b80639d6c100f11610150578063b15038791161012a578063b1503879146106d7578063b3afe4961461071c578063b5e007901461076957600080fd5b80639d6c100f1461065b578063a07693eb1461067f578063ae178fda1461069257600080fd5b806398fd006e1161018157806398fd006e146106355780639a56f4e4146104e75780639d0b7d5a1461064857600080fd5b80638aee8127146105dd57806395e2de33146105f057600080fd5b80634dc0cd2b116102555780636bb70f6a11610209578063820d0ad7116101e3578063820d0ad7146105b957806385e3f997146105c15780638a91af17146105ca57600080fd5b80636bb70f6a1461050a5780636e06c64d1461053257806373ad27b01461054557600080fd5b80635e75a6c31161023a5780635e75a6c31461048057806361ccdfba1461048857806366e017c3146104e757600080fd5b80634dc0cd2b1461041b578063562b71531461045d57600080fd5b80633175cbe8116102b75780633d55b37b116102915780633d55b37b146103d25780634784f6bc146103f55780634a477b141461040857600080fd5b80633175cbe81461037b5780633361e38b146103ac57806336a4a844146103bf57600080fd5b806326e74503116102e857806326e745031461032c578063275b629e1461033f5780632c5682eb1461035257600080fd5b80630c4ed799146103045780630fd68c7214610319575b600080fd5b6103176103123660046120db565b6108fc565b005b6103176103273660046120f6565b610a2a565b61031761033a3660046120f6565b610aeb565b61031761034d3660046120f6565b610ba0565b6103656103603660046120db565b610c58565b6040516103729190612118565b60405180910390f35b61039e61038936600461219f565b60009081526004602052604090206005015490565b604051908152602001610372565b6103176103ba3660046122c5565b610d6b565b6103176103cd366004612385565b610efe565b61039e6103e036600461219f565b60009081526004602052604090206002015490565b61031761040336600461219f565b611060565b61039e6104163660046123bb565b611103565b61039e6104293660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61039e61046b36600461219f565b60009081526004602052604090206003015490565b60025461039e565b6104d26104963660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610372565b61039e6104f536600461219f565b60009081526004602052604090206007015490565b601c5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610372565b6103176105403660046122c5565b61113d565b61055861055336600461219f565b6112c3565b6040516103729190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610558611378565b61039e61271081565b6103176105d836600461219f565b61142f565b6103176105eb3660046120db565b611517565b61039e6105fe3660046123bb565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61031761064336600461219f565b61161d565b6103176106563660046120f6565b6116fe565b61039e61066936600461219f565b6000908152600460208190526040909120015490565b61036561068d3660046123bb565b6117bc565b61039e6106a03660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b61039e6106e53660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104d261072a3660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103176107773660046123e5565b6118ce565b61031761195a565b61039e6107923660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6108116107d73660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610372565b61039e61082f366004612411565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260166020908152604080832093909416825291909152205490565b61039e610875366004612444565b611a7e565b6103176108883660046120f6565b611ac9565b61031761089b36600461219f565b611b7e565b6103176108ae3660046120db565b611cc9565b6103176108c13660046120f6565b611df5565b6103176108d43660046120db565b611eaa565b61039e6108e736600461219f565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff811661094a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109ba576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a9a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260096020526040908190208290555182907f9c01e5dd1de30d8a56e80595af0414f6b6e41d6e76edc2582cbb0ce06af56d4d90610adf9084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a6020526040908190208290555182907f4b84f2712b43755e8b18d3d12be201e874c14fe1412df46adc670ffa787ff2d990610adf9084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c10576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610adf9084815260200190565b610cb7604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ddb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e16576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610e5c57828181518110610e3557610e35612467565b602002602001015182610e4891906124c5565b915080610e54816124d8565b915050610e1a565b506127108114610e98576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610eab90600c906020860190611fd8565b508151610ebf90600d906020850190612062565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610ef1929190612510565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f6e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610f9157506000818152600460205260409020600201544211155b15610fc8576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd38160016124c5565b60028190556000818152600460205260409020908155426001820155610fff60ff8416620151806125a1565b61100e9062ffffff16426124c5565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110d0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146111ad576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146111e8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561122e5782818151811061120757611207612467565b60200260200101518261121a91906124c5565b915080611226816124d8565b9150506111ec565b50612710811461126a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825161127d906011906020860190611fd8565b508151611291906012906020850190612062565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610ef1929190612510565b61130b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6113c060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461149f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156114db576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611565576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115d5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461168d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156116c9576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60138190556040518181527f3ec9282d6ba02f8ec41d078f3734895f058773279f3a7ec54944968c2751fb589060200161150c565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461176e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156117aa576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600f602052604090912055565b61181b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461193e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352601060209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146119ca576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611a3657600080fd5b505af1158015611a4a573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611ac291906124c5565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611b39576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610adf9084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bee576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611c1157506000818152600460205260409020600201544211155b15611c48576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c558260016124c5565b60028190556000818152600460205260409020818155426001820181905591925090611c84906220f5806124c5565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611052565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d39576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611d86576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260086020526040908190208290555182907f3e3c2c66fc8844a1c34617affd4950ec87cb291ae81938c9b4a0370ab78dd86e90610adf9084815260200190565b8073ffffffffffffffffffffffffffffffffffffffff8116611ef8576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f68576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612052579160200282015b8281111561205257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ff8565b5061205e92915061209d565b5090565b828054828255906000526020600020908101928215612052579160200282015b82811115612052578251825591602001919060010190612082565b5b8082111561205e576000815560010161209e565b803573ffffffffffffffffffffffffffffffffffffffff811681146120d657600080fd5b919050565b6000602082840312156120ed57600080fd5b611ac2826120b2565b6000806040838503121561210957600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516121978285018215159052565b505092915050565b6000602082840312156121b157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561222e5761222e6121b8565b604052919050565b600067ffffffffffffffff821115612250576122506121b8565b5060051b60200190565b600082601f83011261226b57600080fd5b8135602061228061227b83612236565b6121e7565b82815260059290921b8401810191818101908684111561229f57600080fd5b8286015b848110156122ba57803583529183019183016122a3565b509695505050505050565b600080604083850312156122d857600080fd5b823567ffffffffffffffff808211156122f057600080fd5b818501915085601f83011261230457600080fd5b8135602061231461227b83612236565b82815260059290921b8401810191818101908984111561233357600080fd5b948201945b8386101561235857612349866120b2565b82529482019490820190612338565b9650508601359250508082111561236e57600080fd5b5061237b8582860161225a565b9150509250929050565b6000806040838503121561239857600080fd5b82359150602083013560ff811681146123b057600080fd5b809150509250929050565b600080604083850312156123ce57600080fd5b6123d7836120b2565b946020939093013593505050565b6000806000606084860312156123fa57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561242457600080fd5b61242d836120b2565b915061243b602084016120b2565b90509250929050565b6000806040838503121561245757600080fd5b8235915061243b602084016120b2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561113757611137612496565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250957612509612496565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561255f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161252d565b5050508381038285015284518082528583019183019060005b8181101561259457835183529284019291840191600101612578565b5090979650505050505050565b62ffffff8181168382160280821691908281146121975761219761249656fea264697066735822122087e01047a067c0da9944601c264c83c01a5b8d34f651910c836958eebc5a5cca64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102ff5760003560e01c80638aee81271161019c578063bc67f25f116100ee578063df40958911610097578063e98519a311610071578063e98519a3146108b3578063f55484ac146108c6578063fca7129f146108d957600080fd5b8063df4095891461088d578063e5ea3fdc1461045d578063e8566118146108a057600080fd5b8063d2b291d1116100c8578063d2b291d114610821578063d822bb8714610867578063dbcbb9a31461087a57600080fd5b8063bc67f25f1461077c578063c4882ed714610784578063d18b3d90146107c957600080fd5b80639d6c100f11610150578063b15038791161012a578063b1503879146106d7578063b3afe4961461071c578063b5e007901461076957600080fd5b80639d6c100f1461065b578063a07693eb1461067f578063ae178fda1461069257600080fd5b806398fd006e1161018157806398fd006e146106355780639a56f4e4146104e75780639d0b7d5a1461064857600080fd5b80638aee8127146105dd57806395e2de33146105f057600080fd5b80634dc0cd2b116102555780636bb70f6a11610209578063820d0ad7116101e3578063820d0ad7146105b957806385e3f997146105c15780638a91af17146105ca57600080fd5b80636bb70f6a1461050a5780636e06c64d1461053257806373ad27b01461054557600080fd5b80635e75a6c31161023a5780635e75a6c31461048057806361ccdfba1461048857806366e017c3146104e757600080fd5b80634dc0cd2b1461041b578063562b71531461045d57600080fd5b80633175cbe8116102b75780633d55b37b116102915780633d55b37b146103d25780634784f6bc146103f55780634a477b141461040857600080fd5b80633175cbe81461037b5780633361e38b146103ac57806336a4a844146103bf57600080fd5b806326e74503116102e857806326e745031461032c578063275b629e1461033f5780632c5682eb1461035257600080fd5b80630c4ed799146103045780630fd68c7214610319575b600080fd5b6103176103123660046120db565b6108fc565b005b6103176103273660046120f6565b610a2a565b61031761033a3660046120f6565b610aeb565b61031761034d3660046120f6565b610ba0565b6103656103603660046120db565b610c58565b6040516103729190612118565b60405180910390f35b61039e61038936600461219f565b60009081526004602052604090206005015490565b604051908152602001610372565b6103176103ba3660046122c5565b610d6b565b6103176103cd366004612385565b610efe565b61039e6103e036600461219f565b60009081526004602052604090206002015490565b61031761040336600461219f565b611060565b61039e6104163660046123bb565b611103565b61039e6104293660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b61039e61046b36600461219f565b60009081526004602052604090206003015490565b60025461039e565b6104d26104963660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b60408051928352602083019190915201610372565b61039e6104f536600461219f565b60009081526004602052604090206007015490565b601c5460405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610372565b6103176105403660046122c5565b61113d565b61055861055336600461219f565b6112c3565b6040516103729190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b610558611378565b61039e61271081565b6103176105d836600461219f565b61142f565b6103176105eb3660046120db565b611517565b61039e6105fe3660046123bb565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b61031761064336600461219f565b61161d565b6103176106563660046120f6565b6116fe565b61039e61066936600461219f565b6000908152600460208190526040909120015490565b61036561068d3660046123bb565b6117bc565b61039e6106a03660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b61039e6106e53660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6104d261072a3660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103176107773660046123e5565b6118ce565b61031761195a565b61039e6107923660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b6108116107d73660046123bb565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6040519015158152602001610372565b61039e61082f366004612411565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260166020908152604080832093909416825291909152205490565b61039e610875366004612444565b611a7e565b6103176108883660046120f6565b611ac9565b61031761089b36600461219f565b611b7e565b6103176108ae3660046120db565b611cc9565b6103176108c13660046120f6565b611df5565b6103176108d43660046120db565b611eaa565b61039e6108e736600461219f565b60009081526004602052604090206006015490565b8073ffffffffffffffffffffffffffffffffffffffff811661094a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146109ba576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610a9a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260096020526040908190208290555182907f9c01e5dd1de30d8a56e80595af0414f6b6e41d6e76edc2582cbb0ce06af56d4d90610adf9084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b5b576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152600a6020526040908190208290555182907f4b84f2712b43755e8b18d3d12be201e874c14fe1412df46adc670ffa787ff2d990610adf9084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610c10576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610adf9084815260200190565b610cb7604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ddb576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114610e16576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015610e5c57828181518110610e3557610e35612467565b602002602001015182610e4891906124c5565b915080610e54816124d8565b915050610e1a565b506127108114610e98576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251610eab90600c906020860190611fd8565b508151610ebf90600d906020850190612062565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a9558383604051610ef1929190612510565b60405180910390a1505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f6e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590610f9157506000818152600460205260409020600201544211155b15610fc8576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fd38160016124c5565b60028190556000818152600460205260409020908155426001820155610fff60ff8416620151806125a1565b61100e9062ffffff16426124c5565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146110d0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146111ad576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146111e8576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561122e5782818151811061120757611207612467565b60200260200101518261121a91906124c5565b915080611226816124d8565b9150506111ec565b50612710811461126a576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825161127d906011906020860190611fd8565b508151611291906012906020850190612062565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df8383604051610ef1929190612510565b61130b60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b6113c060405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461149f576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156114db576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116611565576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115d5576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461168d576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156116c9576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60138190556040518181527f3ec9282d6ba02f8ec41d078f3734895f058773279f3a7ec54944968c2751fb589060200161150c565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461176e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156117aa576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600f602052604090912055565b61181b604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461193e576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352601060209081526040808520938552929052912055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146119ca576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b158015611a3657600080fd5b505af1158015611a4a573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154611ac291906124c5565b9392505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611b39576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610adf9084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611bee576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002548015801590611c1157506000818152600460205260409020600201544211155b15611c48576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611c558260016124c5565b60028190556000818152600460205260409020818155426001820181905591925090611c84906220f5806124c5565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611052565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611d39576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116611d86576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611e65576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260086020526040908190208290555182907f3e3c2c66fc8844a1c34617affd4950ec87cb291ae81938c9b4a0370ab78dd86e90610adf9084815260200190565b8073ffffffffffffffffffffffffffffffffffffffff8116611ef8576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f68576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b828054828255906000526020600020908101928215612052579160200282015b8281111561205257825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190611ff8565b5061205e92915061209d565b5090565b828054828255906000526020600020908101928215612052579160200282015b82811115612052578251825591602001919060010190612082565b5b8082111561205e576000815560010161209e565b803573ffffffffffffffffffffffffffffffffffffffff811681146120d657600080fd5b919050565b6000602082840312156120ed57600080fd5b611ac2826120b2565b6000806040838503121561210957600080fd5b50508035926020909101359150565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401516121978285018215159052565b505092915050565b6000602082840312156121b157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561222e5761222e6121b8565b604052919050565b600067ffffffffffffffff821115612250576122506121b8565b5060051b60200190565b600082601f83011261226b57600080fd5b8135602061228061227b83612236565b6121e7565b82815260059290921b8401810191818101908684111561229f57600080fd5b8286015b848110156122ba57803583529183019183016122a3565b509695505050505050565b600080604083850312156122d857600080fd5b823567ffffffffffffffff808211156122f057600080fd5b818501915085601f83011261230457600080fd5b8135602061231461227b83612236565b82815260059290921b8401810191818101908984111561233357600080fd5b948201945b8386101561235857612349866120b2565b82529482019490820190612338565b9650508601359250508082111561236e57600080fd5b5061237b8582860161225a565b9150509250929050565b6000806040838503121561239857600080fd5b82359150602083013560ff811681146123b057600080fd5b809150509250929050565b600080604083850312156123ce57600080fd5b6123d7836120b2565b946020939093013593505050565b6000806000606084860312156123fa57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561242457600080fd5b61242d836120b2565b915061243b602084016120b2565b90509250929050565b6000806040838503121561245757600080fd5b8235915061243b602084016120b2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561113757611137612496565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361250957612509612496565b5060010190565b604080825283519082018190526000906020906060840190828701845b8281101561255f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161252d565b5050508381038285015284518082528583019183019060005b8181101561259457835183529284019291840191600101612578565b5090979650505050505050565b62ffffff8181168382160280821691908281146121975761219761249656fea264697066735822122087e01047a067c0da9944601c264c83c01a5b8d34f651910c836958eebc5a5cca64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b5061336a806100206000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b6016546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b601a5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b60009081526015602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b60008181526015602052604081205460165461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60165460005b600b8110156110a75760008181526015602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b600084815260156020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526015602052604081205460165490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60168190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220a7bbf270b56dceb25cc72e77dbea001cc2115d4f67bed66b6a1492e299e8629d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b6016546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b601a5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b60009081526015602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b60008181526015602052604081205460165461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60165460005b600b8110156110a75760008181526015602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b600084815260156020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526015602052604081205460165490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60168190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220a7bbf270b56dceb25cc72e77dbea001cc2115d4f67bed66b6a1492e299e8629d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0x41D4845bFFd43C4dB447a9F819d52Bc2876B9238" + "address": "0x0F24f5B58B5c9a06305BE1e3a2Ac3CbE46A5eDc4" }, "hardhat": { "artifact": { diff --git a/deployments/FeeCollectorFacet.json b/deployments/FeeCollectorFacet.json index caf86c5..515ff00 100644 --- a/deployments/FeeCollectorFacet.json +++ b/deployments/FeeCollectorFacet.json @@ -10,6 +10,11 @@ "name": "FeeCollectorFacet__Only_Owner", "type": "error" }, + { + "inputs": [], + "name": "LAuthorizable__OnlyAuthorized", + "type": "error" + }, { "inputs": [], "name": "collectBoostFees", @@ -25,17 +30,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061058a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610278565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c805460195473ffffffffffffffffffffffffffffffffffffffff1660005b828110156102725760008060160160008684815481106100ff576100ff61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209387168252929092528120548654909250601690829088908690811061015d5761015d61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209388168083529390522091909155855463a9059cbb908790859081106101bb576101bb61049d565b60009182526020909120015460405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d91906104cc565b5050808061026a906104f5565b9150506100dd565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146102e8576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60118054601b5473ffffffffffffffffffffffffffffffffffffffff1660005b8281101561027257600080601601600086848154811061032a5761032a61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220938716825292909252812054865490925060169082908890869081106103885761038861049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209388168083529390522091909155855463a9059cbb908790859081106103e6576103e661049d565b60009182526020909120015460405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610464573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048891906104cc565b50508080610495906104f5565b915050610308565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156104de57600080fd5b815180151581146104ee57600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361054d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220c290cfe042c38279fc9f9c85b16e47acf4bfc0430bcc683257b585f20a0672f264736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b610043610278565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146100bd576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c805460195473ffffffffffffffffffffffffffffffffffffffff1660005b828110156102725760008060160160008684815481106100ff576100ff61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209387168252929092528120548654909250601690829088908690811061015d5761015d61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209388168083529390522091909155855463a9059cbb908790859081106101bb576101bb61049d565b60009182526020909120015460405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025d91906104cc565b5050808061026a906104f5565b9150506100dd565b50505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146102e8576040517f117239d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60118054601b5473ffffffffffffffffffffffffffffffffffffffff1660005b8281101561027257600080601601600086848154811061032a5761032a61049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220938716825292909252812054865490925060169082908890869081106103885761038861049d565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182209388168083529390522091909155855463a9059cbb908790859081106103e6576103e661049d565b60009182526020909120015460405160e083901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018490526044016020604051808303816000875af1158015610464573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061048891906104cc565b50508080610495906104f5565b915050610308565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156104de57600080fd5b815180151581146104ee57600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361054d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220c290cfe042c38279fc9f9c85b16e47acf4bfc0430bcc683257b585f20a0672f264736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b506106f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516019549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220774cf0d06b84ab9ac34a7a54f8fbea51f4647defb8c7192b22d230618d4075f764736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516019549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220774cf0d06b84ab9ac34a7a54f8fbea51f4647defb8c7192b22d230618d4075f764736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0xB9fE7D7BFDD8f8F22d7148715273f5044b3eA111" + "address": "0x115A70C959aabCD71ac2086940985Aeb1e1a6BbF" }, "hardhat": { "artifact": { diff --git a/deployments/MiningPassFacet.json b/deployments/MiningPassFacet.json index 24d5295..874f904 100644 --- a/deployments/MiningPassFacet.json +++ b/deployments/MiningPassFacet.json @@ -10,6 +10,11 @@ "name": "MiningPassFacet__InsufficientBalance", "type": "error" }, + { + "inputs": [], + "name": "MiningPassFacet__InvalidFeeReceivers", + "type": "error" + }, { "inputs": [], "name": "MiningPassFacet__InvalidTier", @@ -51,6 +56,30 @@ "name": "MiningPassPurchase", "type": "event" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tier", + "type": "uint256" + } + ], + "name": "getMiningPassFee", + "outputs": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -89,8 +118,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506104f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046103f2565b610139565b005b61012061005e36600461040b565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601890925291909120549091565b6040805192835260208301919091520160405180910390f35b601b546002546000818152600560209081526040808320338452909152902073ffffffffffffffffffffffffffffffffffffffff90921691831580610182575080600901548411155b156101b9576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600981015460009081526017602052604080822054868352908220546101df9190610448565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561024e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102729190610488565b10156102aa576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526004602052604090206002015442106102f4576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018590556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af1158015610374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039891906104a1565b50843373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103e391815260200190565b60405180910390a45050505050565b60006020828403121561040457600080fd5b5035919050565b60006020828403121561041d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044157600080fd5b9392505050565b81810381811115610482577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561049a57600080fd5b5051919050565b6000602082840312156104b357600080fd5b8151801515811461044157600080fdfea2646970667358221220beceeef332c731595ea3ed6b8a05d6adc8a5d2a7e13c45c5723c0028bf05648064736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063efef39a11461003b578063fe315a1314610050575b600080fd5b61004e6100493660046103f2565b610139565b005b61012061005e36600461040b565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601890925291909120549091565b6040805192835260208301919091520160405180910390f35b601b546002546000818152600560209081526040808320338452909152902073ffffffffffffffffffffffffffffffffffffffff90921691831580610182575080600901548411155b156101b9576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600981015460009081526017602052604080822054868352908220546101df9190610448565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190602401602060405180830381865afa15801561024e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102729190610488565b10156102aa576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526004602052604090206002015442106102f4576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982018590556040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906064016020604051808303816000875af1158015610374573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039891906104a1565b50843373ffffffffffffffffffffffffffffffffffffffff16847fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f404846040516103e391815260200190565b60405180910390a45050505050565b60006020828403121561040457600080fd5b5035919050565b60006020828403121561041d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461044157600080fd5b9392505050565b81810381811115610482577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b60006020828403121561049a57600080fd5b5051919050565b6000602082840312156104b357600080fd5b8151801515811461044157600080fdfea2646970667358221220beceeef332c731595ea3ed6b8a05d6adc8a5d2a7e13c45c5723c0028bf05648064736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b5061091b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601954600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060195490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea264697066735822122040e9f993341ab255cf589a16f2bfcfc747fbe9f7437ee081ec4668700b5f570264736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601954600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060195490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea264697066735822122040e9f993341ab255cf589a16f2bfcfc747fbe9f7437ee081ec4668700b5f570264736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -99,7 +128,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x924b44ddFc90Cc8354bF9182849F5eaeE64e2351" + "address": "0x51bdc4B651764384cC94772EE75858Ef80Df046B" }, "hardhat": { "artifact": { diff --git a/deployments/OwnershipFacet.json b/deployments/OwnershipFacet.json index 3690084..0ba6c66 100644 --- a/deployments/OwnershipFacet.json +++ b/deployments/OwnershipFacet.json @@ -56,17 +56,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610279806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610206565b6100c6565b005b60006100c17fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b6100ce6100da565b6100d78161014c565b50565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461014a576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020828403121561021857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461023c57600080fd5b939250505056fea2646970667358221220affce807ff96489143dff38247e51b574bafeff2102a0616906d7deb68d588fb64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610206565b6100c6565b005b60006100c17fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b6100ce6100da565b6100d78161014c565b50565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461014a576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020828403121561021857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461023c57600080fd5b939250505056fea2646970667358221220affce807ff96489143dff38247e51b574bafeff2102a0616906d7deb68d588fb64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b50610279806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610206565b6100c6565b005b60006100c17fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b6100ce6100da565b6100d78161014c565b50565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461014a576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020828403121561021857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461023c57600080fd5b939250505056fea2646970667358221220644c35e9c8aab8f5ad10908a5cef6c01db0f0fe0ded158947d5ecf48df354c5464736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80638da5cb5b1461003b578063f2fde38b1461006c575b600080fd5b610043610081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f61007a366004610206565b6100c6565b005b60006100c17fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b6100ce6100da565b6100d78161014c565b50565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff16331461014a576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60006020828403121561021857600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461023c57600080fd5b939250505056fea2646970667358221220644c35e9c8aab8f5ad10908a5cef6c01db0f0fe0ded158947d5ecf48df354c5464736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0x738839153C291e67656094c0C745F7b9AfEaa444" + "address": "0x71a882132249EF8ED2cA12Dd2b8Db55B43e7C24a" }, "hardhat": { "artifact": { diff --git a/deployments/PausationFacet.json b/deployments/PausationFacet.json index 70f3f7c..3c2c27f 100644 --- a/deployments/PausationFacet.json +++ b/deployments/PausationFacet.json @@ -48,17 +48,17 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220229ba32873f355f6c676c7c7849160330d8205c03b5a4d898271a1c42238d88564736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220229ba32873f355f6c676c7c7849160330d8205c03b5a4d898271a1c42238d88564736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220993ab0929e9f4f1176ab40db2b06179c0bd75f2e98859abbabcd45fda7e0afa364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220993ab0929e9f4f1176ab40db2b06179c0bd75f2e98859abbabcd45fda7e0afa364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, "options": { "args": [], "log": true, - "skipIfAlreadyDeployed": false + "skipIfAlreadyDeployed": true }, - "address": "0xb91A405ae45fD9915D302748439Fc243241237F8" + "address": "0xC307958eFE78D781ec1B4E3B96FfAb7E33C6ac24" }, "hardhat": { "artifact": { diff --git a/deployments/UnlockFacet.json b/deployments/UnlockFacet.json index f409467..3099f65 100644 --- a/deployments/UnlockFacet.json +++ b/deployments/UnlockFacet.json @@ -83,8 +83,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106b1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610549565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361042a565b90506101678161044c565b60006127106101796203f48088610591565b61018391906105a8565b6101906203f480426105e3565b61019a91906105f6565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c6105f6565b8960060160008282546101f291906105e3565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b60006201518061025842866105f6565b61026291906105a8565b90508483600001600082825461027891906105f6565b9091555061028890508186610591565b83600201600082825461029b91906105f6565b92505081905550848260050160008282546102b691906105f6565b909155506102c690508186610591565b8260070160008282546102d991906105f6565b90915550505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610609565b90508015610421576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041e9190610622565b92505b50509250929050565b60006127106104398385610591565b61044391906105a8565b90505b92915050565b600d54600c5414610489576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460005b818110156105445760006104c3846000600d0184815481106104b3576104b361064c565b906000526020600020015461042a565b9050806000601601600080600c0185815481106104e2576104e261064c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601954909416825292909252812080549091906105369084906105e3565b90915550505060010161048f565b505050565b60006020828403121561055b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761044657610446610562565b6000826105de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561044657610446610562565b8181038181111561044657610446610562565b60006020828403121561061b57600080fd5b5051919050565b60006020828403121561063457600080fd5b815160ff8116811461064557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a3d83a9ae701b6f34058dd65c4f29d1e41c4b02edde46e7d61d5559cbbb5da4f64736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610549565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361042a565b90506101678161044c565b60006127106101796203f48088610591565b61018391906105a8565b6101906203f480426105e3565b61019a91906105f6565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c6105f6565b8960060160008282546101f291906105e3565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b60006201518061025842866105f6565b61026291906105a8565b90508483600001600082825461027891906105f6565b9091555061028890508186610591565b83600201600082825461029b91906105f6565b92505081905550848260050160008282546102b691906105f6565b909155506102c690508186610591565b8260070160008282546102d991906105f6565b90915550505050505050565b601c8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610609565b90508015610421576040517f53f96df2000000000000000000000000000000000000000000000000000000008152600481018290526001945073ffffffffffffffffffffffffffffffffffffffff8316906353f96df290602401602060405180830381865afa1580156103fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041e9190610622565b92505b50509250929050565b60006127106104398385610591565b61044391906105a8565b90505b92915050565b600d54600c5414610489576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c5460005b818110156105445760006104c3846000600d0184815481106104b3576104b361064c565b906000526020600020015461042a565b9050806000601601600080600c0185815481106104e2576104e261064c565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff90811684528382019490945260409283018220601954909416825292909252812080549091906105369084906105e3565b90915550505060010161048f565b505050565b60006020828403121561055b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808202811582820484141761044657610446610562565b6000826105de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082018082111561044657610446610562565b8181038181111561044657610446610562565b60006020828403121561061b57600080fd5b5051919050565b60006020828403121561063457600080fd5b815160ff8116811461064557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a3d83a9ae701b6f34058dd65c4f29d1e41c4b02edde46e7d61d5559cbbb5da4f64736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601754909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220518c44086e5ed5c7474cae50e537dd7b66d2f0f520948168b90a10d70015f3eb64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601754909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220518c44086e5ed5c7474cae50e537dd7b66d2f0f520948168b90a10d70015f3eb64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -93,7 +93,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xe263a2a3B66308655f1571c340fcffD444Be75f3" + "address": "0x60B3cd74058FE140a6D3EE244A3D77a50d100572" }, "hardhat": { "artifact": { diff --git a/deployments/WithdrawFacet.json b/deployments/WithdrawFacet.json index 135908c..f7a7198 100644 --- a/deployments/WithdrawFacet.json +++ b/deployments/WithdrawFacet.json @@ -48,8 +48,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b336000818152600b6020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea26469706673582212205bfd0e9b469678294db1020ea214974b1266815e644ccb7a29bcd98a37afa60864736f6c63430008110033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b336000818152600b6020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556019546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea26469706673582212205bfd0e9b469678294db1020ea214974b1266815e644ccb7a29bcd98a37afa60864736f6c63430008110033", + "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220e55ccbbe089f538220d6f8c0201126a45b6901bf9a007237645bc76ed1c429bb64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220e55ccbbe089f538220d6f8c0201126a45b6901bf9a007237645bc76ed1c429bb64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -58,7 +58,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xFFa49d87CC6c6EB5044657c9257E1a0E3d4258Fd" + "address": "0x0be993dA67E862da6179640aDEBEE36dc4C028F9" }, "hardhat": { "artifact": { diff --git a/hardhat.config.ts b/hardhat.config.ts index 86c74b2..32d6593 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -9,6 +9,8 @@ import '@nomicfoundation/hardhat-toolbox' import './tasks/verify' import './tasks/automatedClaim' import './tasks/season' +import './tasks/startSeason' +import './tasks/diamondInfo' import './tasks/admin' import { formatUnits, parseUnits } from 'ethers' diff --git a/scripts/initDynamicPricing.ts b/scripts/initDynamicPricing.ts new file mode 100644 index 0000000..da82e39 --- /dev/null +++ b/scripts/initDynamicPricing.ts @@ -0,0 +1,54 @@ +import { ethers, network } from 'hardhat' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { logTx } from '../utils' + +const BASE_FEES = [ + 0, // Tier 0 + 0.5 * 1e6, // Tier 1 + 1 * 1e6, // Tier 2 + 2 * 1e6, // Tier 3 + 4 * 1e6, // Tier 4 + 8 * 1e6, // Tier 5 + 15 * 1e6, // Tier 6 + 30 * 1e6, // Tier 7 + 50 * 1e6, // Tier 8 + 75 * 1e6, // Tier 9 + 100 * 1e6, // Tier 10 +] + +async function main() { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + + console.log(`šŸ’Ž Diamond: ${diamondAddress} on ${network.name}`) + + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + // Set base fees + console.log('ā³ Setting base mining pass fees...') + const baseFeeTx = await manager.setBaseMiningPassFees(BASE_FEES) + await logTx(baseFeeTx) + + // Set floor + console.log('ā³ Setting mining pass fee floor to 25%...') + const floorTx = await manager.setMiningPassFeeFloor(2500) + await logTx(floorTx) + + // Verify + const baseFee10 = await manager.getBaseMiningPassTierFee(10) + const floorBps = await manager.getMiningPassFeeFloorBps() + console.log(`\nāœ… Verified:`) + console.log(` Base fee tier 10: $${Number(baseFee10) / 1e6}`) + console.log(` Floor: ${Number(floorBps) / 100}%`) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error) + process.exit(1) + }) diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 142c61f..183b35b 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -41,6 +41,7 @@ contract DiamondManagerFacet { event SeasonEnded(uint256 indexed seasonId, uint256 rewardTokenDistributed); event MiningPassFeeReceiversSet(address[] receivers, uint256[] proportion); event MiningPassFeesUpdated(uint256[] fees); + event BaseMiningPassFeesUpdated(uint256[] fees); event MiningPassFeeFloorUpdated(uint256 floorBps); modifier onlyOwner() { @@ -184,6 +185,25 @@ contract DiamondManagerFacet { emit MiningPassFeesUpdated(fees); } + /// @notice Update base mining pass fees for all tiers + /// @dev Base fees are used as the reference for floor price calculation + /// @param fees Array of 11 base fees for tiers 0-10 (in USDC with 6 decimals) + function setBaseMiningPassFees(uint256[] calldata fees) external onlyOwner { + if (fees.length != 11) { + revert DiamondManagerFacet__Invalid_Input(); + } + + for (uint256 i; i < 11;) { + s.baseMiningPassTierToFee[i] = fees[i]; + + unchecked { + i++; + } + } + + emit BaseMiningPassFeesUpdated(fees); + } + /// @notice Update the floor price percentage for mining pass fees /// @param floorBps Floor price in basis points (e.g., 2500 = 25%) function setMiningPassFeeFloor(uint256 floorBps) external onlyOwner { diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index c65667f..c2e93b7 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -32,67 +32,82 @@ struct AppStorage { ///////////////////// /// AUTHORIZATION /// ///////////////////// - mapping(address => bool) authorized; + mapping(address => bool) authorized; // slot 0 ///////////////// /// PAUSATION /// ///////////////// - bool paused; + bool paused; // slot 1 ////////////// /// SEASON /// ////////////// - uint256 currentSeasonId; - uint256 seasonsCount; - mapping(uint256 => Season) seasons; + uint256 currentSeasonId; // slot 2 + uint256 seasonsCount; // slot 3 + mapping(uint256 => Season) seasons; // slot 4 // nested mapping: seasonId => userAddress => UserData - mapping(uint256 => mapping(address => UserData)) usersData; + mapping(uint256 => mapping(address => UserData)) usersData; // slot 5 /////////////// /// UNLOCK /// /////////////// - uint256 unlockFee; + uint256 unlockFee; // slot 6 // mapping: tier => discount percentage - mapping(uint256 => uint256) unlockTimestampDiscountForStratosphereMembers; + mapping(uint256 => uint256) unlockTimestampDiscountForStratosphereMembers; // slot 7 + /// @dev deprecated - preserved for storage layout compatibility with 14f06c0 deployment + mapping(uint256 => uint256) __deprecated_unlockFeeDiscount; // slot 8 + mapping(uint256 => uint256) __deprecated_depositDiscount; // slot 9 + mapping(uint256 => uint256) __deprecated_restakeDiscount; // slot 10 // mapping: user => lastSeasonParticipated - mapping(address => uint256) addressToLastSeasonId; - address[] unlockFeeReceivers; - uint256[] unlockFeeReceiversShares; + mapping(address => uint256) addressToLastSeasonId; // slot 11 + address[] unlockFeeReceivers; // slot 12 + uint256[] unlockFeeReceiversShares; // slot 13 //////////////// /// BOOST /// //////////////// - uint256 boostForNonStratMembers; + uint256 boostForNonStratMembers; // slot 14 //mapping: level => USDC fee - mapping(uint256 => uint256) boostLevelToFee; + mapping(uint256 => uint256) boostLevelToFee; // slot 15 // nested mapping: tier => boostlevel => boost enhance points - mapping(uint256 => mapping(uint256 => uint256)) boostPercentFromTierToLevel; - address[] boostFeeReceivers; - uint256[] boostFeeReceiversShares; + mapping(uint256 => mapping(uint256 => uint256)) boostPercentFromTierToLevel; // slot 16 + address[] boostFeeReceivers; // slot 17 + uint256[] boostFeeReceiversShares; // slot 18 + /////////////// + /// RESTAKE (deprecated) /// + /////////////// + /// @dev deprecated - preserved for storage layout compatibility with 14f06c0 deployment + uint256 __deprecated_restakeFee; // slot 19 + mapping(uint256 => mapping(address => uint256)) __deprecated_claimAmounts; // slot 20 + mapping(uint256 => uint256) __deprecated_totalClaimAmounts; // slot 21 //////////////// /// WITHDRAW /// //////////////// // nested mapping: userAddress => tokenAddress => amount - mapping(address => mapping(address => uint256)) pendingWithdrawals; + mapping(address => mapping(address => uint256)) pendingWithdrawals; // slot 22 /////////////////// /// MINING PASS /// /////////////////// - mapping(uint256 => uint256) miningPassTierToFee; - mapping(uint256 => uint256) miningPassTierToDepositLimit; - address[] miningPassFeeReceivers; - uint256[] miningPassFeeReceiversShares; - /// @dev Base fees (original fees set at deployment, used for floor price calculation) - mapping(uint256 => uint256) baseMiningPassTierToFee; - /// @dev Floor price percentage in basis points (e.g., 2500 = 25%) - uint256 miningPassFeeFloorBps; + //mapping: level => USDC fee + mapping(uint256 => uint256) miningPassTierToFee; // slot 23 + mapping(uint256 => uint256) miningPassTierToDepositLimit; // slot 24 /////////////// /// GENERAL /// /////////////// - address depositToken; - address rewardToken; - address feeToken; - address stratosphereAddress; - uint256 reentrancyGuardStatus; - address emissionsManager; + address depositToken; // slot 25 + address rewardToken; // slot 26 + address feeToken; // slot 27 + address stratosphereAddress; // slot 28 + uint256 reentrancyGuardStatus; // slot 29 + address emissionsManager; // slot 30 + ///////////////////////////////////////// + /// MINING PASS (extended) - appended /// + ///////////////////////////////////////// + address[] miningPassFeeReceivers; // slot 31 + uint256[] miningPassFeeReceiversShares; // slot 32 + /// @dev Base fees (original fees set at deployment, used for floor price calculation) + mapping(uint256 => uint256) baseMiningPassTierToFee; // slot 33 + /// @dev Floor price percentage in basis points (e.g., 2500 = 25%) + uint256 miningPassFeeFloorBps; // slot 34 ////////////////// /// AUTOMATION /// ////////////////// - address gelatoExecutor; - mapping(uint256 => bool) isSeasonClaimed; + address gelatoExecutor; // slot 35 + mapping(uint256 => bool) isSeasonClaimed; // slot 36 } diff --git a/tasks/diamondInfo.ts b/tasks/diamondInfo.ts new file mode 100644 index 0000000..b8cbb1a --- /dev/null +++ b/tasks/diamondInfo.ts @@ -0,0 +1,163 @@ +import { task } from 'hardhat/config' +import { formatEther, formatUnits } from 'ethers' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' + +task( + 'diamond:info', + 'Read and display all key parameters from the DiamondManagerFacet' +) + .addOptionalParam('user', 'Address to query user-specific data for') + .setAction(async ({ user }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + + const dm = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + console.log(`\nšŸ’Ž Diamond: ${diamondAddress} (${network.name})`) + + // ── General ──────────────────────────────────────────────────────── + const stratAddress = await dm.getStratosphereAddress() + console.log(`\n═══ General ═══`) + console.log(` Stratosphere: ${stratAddress}`) + + // ── Current Season ───────────────────────────────────────────────── + const seasonId = await dm.getCurrentSeasonId() + const seasonData = await dm.getSeasonData(seasonId) + const seasonEnd = await dm.getSeasonEndTimestamp(seasonId) + const isClaimed = await dm.getSeasonIsClaimed(seasonId) + + const endDate = new Date(Number(seasonEnd) * 1000) + const now = new Date() + const daysLeft = Math.max( + 0, + Math.ceil((endDate.getTime() - now.getTime()) / 86400000) + ) + + console.log(`\n═══ Current Season (${seasonId}) ═══`) + console.log( + ` End: ${endDate.toISOString().split('T')[0]} (${daysLeft} days left)` + ) + console.log( + ` Rewards: ${formatEther(seasonData.rewardTokensToDistribute)} VAPE` + ) + console.log( + ` Reward Balance: ${formatEther(seasonData.rewardTokenBalance)} VAPE` + ) + console.log( + ` Total Deposits: ${formatEther(seasonData.totalDepositAmount)} VPND` + ) + console.log( + ` Total Points: ${formatEther(seasonData.totalPoints)}` + ) + console.log( + ` Total Claimed: ${formatEther(seasonData.totalClaimAmount)} VAPE` + ) + console.log(` Season Claimed: ${isClaimed}`) + + // ── Mining Pass Fees ─────────────────────────────────────────────── + const floorBps = await dm.getMiningPassFeeFloorBps() + + console.log(`\n═══ Mining Pass Fees (Floor: ${Number(floorBps) / 100}%) ═══`) + console.log( + 'Tier | Base Fee ($) | Current ($) | Floor ($) | Deposit Limit' + ) + console.log( + '-----|-------------|-------------|------------|------------------' + ) + + for (let i = 0; i <= 10; i++) { + const baseFee = await dm.getBaseMiningPassTierFee(i) + const currentFee = await dm.getMiningPassTierFee(i) + const floorFee = await dm.getMiningPassTierFloorFee(i) + const depositLimit = await dm.getMiningPassTierDepositLimit(i) + + const limitStr = + depositLimit === BigInt(2) ** BigInt(256) - BigInt(1) + ? 'Unlimited' + : `${formatEther(depositLimit)} VPND` + + console.log( + ` ${i.toString().padStart(2)} | ${(Number(baseFee) / 1e6).toFixed(2).padStart(11)} | ${(Number(currentFee) / 1e6).toFixed(2).padStart(11)} | ${(Number(floorFee) / 1e6).toFixed(2).padStart(10)} | ${limitStr}` + ) + } + + // ── Historical Seasons ───────────────────────────────────────────── + const numSeasons = Number(seasonId) + if (numSeasons > 1) { + console.log(`\n═══ Season History ═══`) + console.log( + 'Season | Rewards (VAPE) | Deposits (VPND) | Total Points' + ) + console.log( + '-------|----------------|-------------------|------------------' + ) + for ( + let i = Math.max(1, numSeasons - 4); + i <= numSeasons; + i++ + ) { + const sd = await dm.getSeasonData(i) + console.log( + ` ${i.toString().padStart(2)} | ${formatEther(sd.rewardTokensToDistribute).padStart(14)} | ${formatEther(sd.totalDepositAmount).padStart(17)} | ${formatEther(sd.totalPoints)}` + ) + } + } + + // ── User Data (optional) ─────────────────────────────────────────── + if (user) { + console.log(`\n═══ User: ${user} ═══`) + const userData = await dm.getUserDataForCurrentSeason(user) + const [depositAmount, depositTimestamp] = await dm.getUserDepositAmount( + user, + seasonId + ) + const [depositPoints, boostPoints] = await dm.getUserPoints( + user, + seasonId + ) + const claimedRewards = await dm.getUserClaimedRewards(user, seasonId) + const unlockAmount = await dm.getUnlockAmountOfUser(user, seasonId) + const unlockTimestamp = await dm.getUnlockTimestampOfUser(user, seasonId) + const restakeStatus = await dm.getWithdrawRestakeStatus(user, seasonId) + + console.log( + ` Deposit: ${formatEther(depositAmount)} VPND` + ) + console.log( + ` Deposit Points: ${formatEther(depositPoints)}` + ) + console.log( + ` Boost Points: ${formatEther(boostPoints)}` + ) + console.log( + ` Claimed Rewards: ${formatEther(claimedRewards)} VAPE` + ) + console.log( + ` Unlock Amount: ${formatEther(unlockAmount)} VPND` + ) + if (Number(unlockTimestamp) > 0) { + console.log( + ` Unlock Time: ${new Date(Number(unlockTimestamp) * 1000).toISOString()}` + ) + } + console.log(` Restake Status: ${restakeStatus}`) + + try { + const details = await dm.getCurrentSeasonUserDetails(user) + console.log( + ` Pool Share: ${(Number(details.poolShareBips) / 100).toFixed(2)}%` + ) + console.log( + ` Est. Rewards: ${formatEther(details.estimatedRewards)} VAPE` + ) + } catch { + // totalPoints may be 0 + } + } + + console.log('') + }) diff --git a/tasks/startSeason.ts b/tasks/startSeason.ts new file mode 100644 index 0000000..ad0f13d --- /dev/null +++ b/tasks/startSeason.ts @@ -0,0 +1,134 @@ +import { task } from 'hardhat/config' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { calculateReward, getNextMonthTimestamp, logTx } from '../utils' + +const REFERENCE_VAPE_PRICE = 0.606 +const FLOOR_BPS = 2500 // 25% +const NUM_TIERS = 11 + +async function fetchVAPEPrice(): Promise { + const response = await fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' + ) + const data = (await response.json()) as { vaporfi?: { usd?: number } } + const price = data.vaporfi?.usd + if (!price) throw new Error('Failed to fetch VAPE price from CoinGecko') + return price +} + +function calculateDynamicFees( + baseFees: bigint[], + vapePrice: number, + floorBps: number +): bigint[] { + const multiplierBps = Math.floor((vapePrice / REFERENCE_VAPE_PRICE) * 10000) + + return baseFees.map((baseFee) => { + const floorFee = (baseFee * BigInt(floorBps)) / 10000n + const dynamicFee = (baseFee * BigInt(multiplierBps)) / 10000n + return dynamicFee > floorFee ? dynamicFee : floorFee + }) +} + +task( + 'season:start', + 'Update mining pass prices based on VAPE price, then start a new season' +) + .addOptionalParam('vapePrice', 'Override VAPE price (USD) instead of fetching') + .addOptionalParam('endTimestamp', 'Custom season end timestamp') + .addFlag('dryRun', 'Print what would happen without sending transactions') + .addFlag('skipClaim', 'Skip the claimTokensForSeason step (useful for testnet)') + .setAction(async ({ vapePrice, endTimestamp, dryRun, skipClaim }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + // ── 1. Fetch VAPE price ────────────────────────────────────────── + const currentVAPEPrice = vapePrice + ? parseFloat(vapePrice) + : await fetchVAPEPrice() + + console.log(`\nšŸ’° VAPE Price: $${currentVAPEPrice.toFixed(4)}`) + console.log( + `šŸ“ Multiplier: ${((currentVAPEPrice / REFERENCE_VAPE_PRICE) * 100).toFixed(1)}% of reference ($${REFERENCE_VAPE_PRICE})` + ) + + // ── 2. Read base fees from contract ────────────────────────────── + const baseFees: bigint[] = [] + for (let i = 0; i < NUM_TIERS; i++) { + const fee = await DiamondManagerFacet.getBaseMiningPassTierFee(i) + baseFees.push(fee) + } + + // ── 3. Calculate dynamic fees ──────────────────────────────────── + const dynamicFees = calculateDynamicFees( + baseFees, + currentVAPEPrice, + FLOOR_BPS + ) + + console.log('\nšŸ“‹ Mining Pass Fee Update:') + console.log('Tier | Base Fee ($) | New Fee ($) | Change') + console.log('-----|-------------|-------------|-------') + for (let i = 0; i < NUM_TIERS; i++) { + const base = Number(baseFees[i]) / 1e6 + const dynamic = Number(dynamicFees[i]) / 1e6 + const change = + base > 0 ? `${(((dynamic - base) / base) * 100).toFixed(0)}%` : '-' + console.log( + ` ${i.toString().padStart(2)} | ${base.toFixed(2).padStart(11)} | ${dynamic.toFixed(2).padStart(11)} | ${change}` + ) + } + + // ── 4. Calculate season rewards ────────────────────────────────── + const currentSeasonId = await DiamondManagerFacet.getCurrentSeasonId() + const nextSeasonId = Number(currentSeasonId) + 1 + const rewards = calculateReward(nextSeasonId) + const parsedRewards = ethers.parseEther(rewards.toString()) + const seasonEnd = endTimestamp + ? parseInt(endTimestamp) + : getNextMonthTimestamp() + + console.log(`\nšŸ”„ Season ${nextSeasonId}:`) + console.log(` Rewards: ${rewards.toFixed(2)} VAPE`) + console.log( + ` End: ${new Date(seasonEnd * 1000).toISOString().split('T')[0]}` + ) + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + // ── 5. Update mining pass fees ─────────────────────────────────── + console.log('\nā³ Updating mining pass fees...') + const feesTx = await DiamondManagerFacet.setMiningPassFees(dynamicFees) + await logTx(feesTx) + console.log('āœ… Mining pass fees updated') + + // ── 6. Start new season ────────────────────────────────────────── + console.log('ā³ Starting new season...') + const startTx = await DiamondManagerFacet.startNewSeasonWithEndTimestamp( + parsedRewards.toString(), + seasonEnd + ) + await logTx(startTx) + console.log('āœ… New season started') + + // ── 7. Claim tokens for season ─────────────────────────────────── + if (skipClaim) { + console.log('ā­ļø Skipping claimTokensForSeason (--skip-claim)') + } else { + console.log('ā³ Claiming VAPE tokens for season...') + const claimTx = await DiamondManagerFacet.claimTokensForSeason() + await logTx(claimTx) + console.log('āœ… VAPE minted') + } + + console.log('\nšŸŽ‰ All done!') + }) diff --git a/test/foundry/Facets/MiningPassDynamicPricing.t.sol b/test/foundry/Facets/MiningPassDynamicPricing.t.sol index 9cced2e..fb84f62 100644 --- a/test/foundry/Facets/MiningPassDynamicPricing.t.sol +++ b/test/foundry/Facets/MiningPassDynamicPricing.t.sol @@ -381,6 +381,59 @@ contract MiningPassDynamicPricingTest is DiamondTest { vm.stopPrank(); } + // ═══════════════════════════════════════════════════════════════════ + // SET BASE FEES TESTS + // ═══════════════════════════════════════════════════════════════════ + + function test_SetBaseMiningPassFees() public { + vm.startPrank(owner); + + uint256[] memory newBaseFees = new uint256[](11); + newBaseFees[0] = 0; + newBaseFees[1] = 1 * 1e6; + newBaseFees[2] = 2 * 1e6; + newBaseFees[3] = 4 * 1e6; + newBaseFees[4] = 8 * 1e6; + newBaseFees[5] = 16 * 1e6; + newBaseFees[6] = 30 * 1e6; + newBaseFees[7] = 60 * 1e6; + newBaseFees[8] = 100 * 1e6; + newBaseFees[9] = 150 * 1e6; + newBaseFees[10] = 200 * 1e6; + + diamondManagerFacet.setBaseMiningPassFees(newBaseFees); + + // Verify base fees updated + for (uint256 i; i < 11; i++) { + assertEq(diamondManagerFacet.getBaseMiningPassTierFee(i), newBaseFees[i]); + } + + // Floor fee should reflect new base + assertEq(diamondManagerFacet.getMiningPassTierFloorFee(10), 50 * 1e6); // 25% of $200 + + vm.stopPrank(); + } + + function test_SetBaseMiningPassFees_RevertIf_InvalidLength() public { + vm.startPrank(owner); + + uint256[] memory shortFees = new uint256[](5); + vm.expectRevert(DiamondManagerFacet__Invalid_Input.selector); + diamondManagerFacet.setBaseMiningPassFees(shortFees); + + vm.stopPrank(); + } + + function test_SetBaseMiningPassFees_RevertIf_NotOwner() public { + vm.startPrank(user); + + uint256[] memory newFees = new uint256[](11); + vm.expectRevert(DiamondManagerFacet__Not_Owner.selector); + diamondManagerFacet.setBaseMiningPassFees(newFees); + + vm.stopPrank(); + } + // ═══════════════════════════════════════════════════════════════════ // HELPERS // ═══════════════════════════════════════════════════════════════════ diff --git a/test/foundry/fork/FujiForkMiningPass.t.sol b/test/foundry/fork/FujiForkMiningPass.t.sol new file mode 100644 index 0000000..44ab2d8 --- /dev/null +++ b/test/foundry/fork/FujiForkMiningPass.t.sol @@ -0,0 +1,200 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import "forge-std/Test.sol"; +import {IERC20} from "openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {IDiamondCut} from "clouds/interfaces/IDiamondCut.sol"; +import {IDiamondLoupe} from "clouds/interfaces/IDiamondLoupe.sol"; +import {DiamondManagerFacet} from "src/facets/DiamondManagerFacet.sol"; +import {MiningPassFacet} from "src/facets/MiningPassFacet.sol"; + +/// @title FujiForkMiningPassTest +/// @notice Fork test against the real Fuji diamond to verify storage layout fix. +/// The diamond was deployed at commit 14f06c0 which placed GENERAL fields +/// (depositToken, rewardToken, feeToken, ...) at slots 25-30. A prior +/// upgrade shifted those fields causing feeToken (slot 25 in broken HEAD) +/// to read depositToken data (VPND). The fixed AppStorage restores the +/// original slot layout with deprecated gap fields. +contract FujiForkMiningPassTest is Test { + // ──── Real Fuji addresses ──── + address constant DIAMOND = 0xEd98549D4dE52811b3b417A717E3d74AC90F9Ffe; + address constant VPND = 0x096F22B7891DeA0e9340365Be2021eEa562D0b55; + address constant USDC = 0xeA42E3030ab1406a0b6aAd077Caa927673a2c302; + address constant VAPE = 0x0914aFfEbBAe91fB410A3Cd85a0C7AC740b030cF; + address constant STRATOSPHERE = 0x26b794235422e7c6f3ac6c717b10598C2a144203; + + DiamondManagerFacet diamond; + MiningPassFacet miningPass; + IDiamondLoupe loupe; + address owner; + address user; + + function setUp() public { + vm.createSelectFork("fuji"); + + diamond = DiamondManagerFacet(DIAMOND); + miningPass = MiningPassFacet(DIAMOND); + loupe = IDiamondLoupe(DIAMOND); + user = makeAddr("testUser"); + + // Read the owner from the OwnershipFacet + (bool ok, bytes memory data) = DIAMOND.staticcall(abi.encodeWithSignature("owner()")); + require(ok, "owner() call failed"); + owner = abi.decode(data, (address)); + } + + // ═══════════════════════════════════════════════════════════════════ + // STORAGE LAYOUT VERIFICATION + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Verify raw storage slots 25-28 hold the original 14f06c0 token addresses + function test_Fork_VerifyStorageLayout() public { + address slot25 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(25)))))); + address slot26 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(26)))))); + address slot27 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(27)))))); + address slot28 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(28)))))); + + console.log("Raw storage:"); + console.log(" slot 25 (depositToken):", slot25); + console.log(" slot 26 (rewardToken):", slot26); + console.log(" slot 27 (feeToken):", slot27); + console.log(" slot 28 (stratosphere):", slot28); + + assertEq(slot25, VPND, "slot 25 should be VPND (depositToken)"); + assertEq(slot26, VAPE, "slot 26 should be VAPE (rewardToken)"); + assertEq(slot27, USDC, "slot 27 should be USDC (feeToken)"); + assertEq(slot28, STRATOSPHERE, "slot 28 should be stratosphere"); + } + + /// @notice After upgrading facets on the fork, feeToken should be USDC + function test_Fork_AfterUpgrade_FeeTokenIsUSDC() public { + _upgradeFacets(); + _reinitializeMiningPassData(); + + // feeToken at slot 27 = USDC (from original 14f06c0 init) + assertEq(diamond.getStratosphereAddress(), STRATOSPHERE, "stratosphere should be correct"); + + uint256 tier1Fee = diamond.getMiningPassTierFee(1); + console.log("Tier 1 fee:", tier1Fee); + assertTrue(tier1Fee > 0, "tier 1 fee should be non-zero after reinit"); + + uint256 floorBps = diamond.getMiningPassFeeFloorBps(); + assertEq(floorBps, 2500, "floor should be 2500 bps"); + } + + /// @notice Full end-to-end: upgrade, reinit, purchase mining pass — USDC spent, not VPND + function test_Fork_AfterUpgrade_PurchaseUsesUSDC() public { + _upgradeFacets(); + _reinitializeMiningPassData(); + _setupMiningPassFeeReceivers(); + _ensureActiveSeason(); + + uint256 fee = diamond.getMiningPassTierFee(1); + require(fee > 0, "fee is 0"); + console.log("Tier 1 fee:", fee); + + // Give user USDC and VPND + deal(USDC, user, fee * 10); + deal(VPND, user, fee * 10); + + uint256 usdcBefore = IERC20(USDC).balanceOf(user); + uint256 vpndBefore = IERC20(VPND).balanceOf(user); + + vm.startPrank(user); + IERC20(USDC).approve(DIAMOND, type(uint256).max); + IERC20(VPND).approve(DIAMOND, type(uint256).max); + miningPass.purchase(1); + vm.stopPrank(); + + uint256 usdcSpent = usdcBefore - IERC20(USDC).balanceOf(user); + uint256 vpndSpent = vpndBefore - IERC20(VPND).balanceOf(user); + + console.log("USDC spent:", usdcSpent); + console.log("VPND spent:", vpndSpent); + + assertEq(usdcSpent, fee, "USDC should be spent for the fee"); + assertEq(vpndSpent, 0, "VPND should NOT be spent"); + } + + // ═══════════════════════════════════════════════════════════════════ + // HELPERS + // ═══════════════════════════════════════════════════════════════════ + + /// @dev Deploy new facets (compiled with fixed AppStorage) and replace them + /// in the diamond. Uses the loupe to dynamically get all registered + /// selectors for each facet so we don't miss any. + function _upgradeFacets() internal { + DiamondManagerFacet newDMF = new DiamondManagerFacet(); + MiningPassFacet newMPF = new MiningPassFacet(); + + // Use the loupe to find existing facet addresses via known selectors + address oldDmfAddr = loupe.facetAddress(DiamondManagerFacet.setDepositToken.selector); + address oldMpfAddr = loupe.facetAddress(MiningPassFacet.purchase.selector); + + // Get ALL registered selectors for those facets + bytes4[] memory dmfSelectors = loupe.facetFunctionSelectors(oldDmfAddr); + bytes4[] memory mpfSelectors = loupe.facetFunctionSelectors(oldMpfAddr); + + console.log("DMF selectors to replace:", dmfSelectors.length); + console.log("MPF selectors to replace:", mpfSelectors.length); + + IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](2); + cuts[0] = IDiamondCut.FacetCut({ + facetAddress: address(newDMF), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: dmfSelectors + }); + cuts[1] = IDiamondCut.FacetCut({ + facetAddress: address(newMPF), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: mpfSelectors + }); + + vm.prank(owner); + IDiamondCut(DIAMOND).diamondCut(cuts, address(0), ""); + } + + function _reinitializeMiningPassData() internal { + uint256[] memory fees = new uint256[](11); + fees[0] = 0; + fees[1] = 0.5 * 1e6; // tier 1: 0.5 USDC + fees[2] = 1 * 1e6; + fees[3] = 2 * 1e6; + fees[4] = 4 * 1e6; + fees[5] = 8 * 1e6; + fees[6] = 15 * 1e6; + fees[7] = 30 * 1e6; + fees[8] = 50 * 1e6; + fees[9] = 75 * 1e6; + fees[10] = 100 * 1e6; + + vm.startPrank(owner); + diamond.setBaseMiningPassFees(fees); + diamond.setMiningPassFees(fees); + diamond.setMiningPassFeeFloor(2500); + vm.stopPrank(); + } + + function _setupMiningPassFeeReceivers() internal { + address[] memory receivers = new address[](1); + receivers[0] = makeAddr("feeReceiver"); + uint256[] memory shares = new uint256[](1); + shares[0] = 10000; // 100% + + vm.prank(owner); + diamond.setMiningPassFeeReceivers(receivers, shares); + } + + function _ensureActiveSeason() internal { + uint256 seasonId = diamond.getCurrentSeasonId(); + if (seasonId == 0) { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + return; + } + + // Read season end timestamp from storage (Season struct in mapping at slot 4) + bytes32 baseSlot = keccak256(abi.encode(seasonId, uint256(4))); + uint256 endTs = uint256(vm.load(DIAMOND, bytes32(uint256(baseSlot) + 2))); + if (endTs <= block.timestamp) { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + } + } +} diff --git a/test/foundry/utils/DiamondTest.sol b/test/foundry/utils/DiamondTest.sol index 5ff37df..79abea4 100644 --- a/test/foundry/utils/DiamondTest.sol +++ b/test/foundry/utils/DiamondTest.sol @@ -178,7 +178,7 @@ contract DiamondTest is Test { function setDiamondManagerFacet() private { DiamondManagerFacet diamondManager = new DiamondManagerFacet(); bytes4[] memory functionSelectors; - functionSelectors = new bytes4[](38); + functionSelectors = new bytes4[](39); functionSelectors[0] = diamondManager.setDepositToken.selector; functionSelectors[1] = diamondManager.setCurrentSeasonId.selector; functionSelectors[2] = diamondManager.setStratosphereAddress.selector; @@ -218,6 +218,7 @@ contract DiamondTest is Test { functionSelectors[35] = diamondManager.getMiningPassFeeFloorBps.selector; functionSelectors[36] = diamondManager.getAllMiningPassFees.selector; functionSelectors[37] = diamondManager.getMiningPassTierDepositLimit.selector; + functionSelectors[38] = diamondManager.setBaseMiningPassFees.selector; cut.push( IDiamondCut.FacetCut({ From eedfadb0463f301d3a3a4733158cc2bb3c84b251 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Wed, 18 Feb 2026 14:22:51 +0530 Subject: [PATCH 28/34] fix: sync fuji slots to prod --- src/libraries/AppStorage.sol | 63 +++-- src/upgradeInitializers/FujiMigrationInit.sol | 219 +++++++++++++++++ test/foundry/fork/FujiForkMiningPass.t.sol | 220 ++++++++++-------- 3 files changed, 374 insertions(+), 128 deletions(-) create mode 100644 src/upgradeInitializers/FujiMigrationInit.sol diff --git a/src/libraries/AppStorage.sol b/src/libraries/AppStorage.sol index c2e93b7..1bcf2b7 100644 --- a/src/libraries/AppStorage.sol +++ b/src/libraries/AppStorage.sol @@ -51,63 +51,52 @@ struct AppStorage { uint256 unlockFee; // slot 6 // mapping: tier => discount percentage mapping(uint256 => uint256) unlockTimestampDiscountForStratosphereMembers; // slot 7 - /// @dev deprecated - preserved for storage layout compatibility with 14f06c0 deployment - mapping(uint256 => uint256) __deprecated_unlockFeeDiscount; // slot 8 - mapping(uint256 => uint256) __deprecated_depositDiscount; // slot 9 - mapping(uint256 => uint256) __deprecated_restakeDiscount; // slot 10 // mapping: user => lastSeasonParticipated - mapping(address => uint256) addressToLastSeasonId; // slot 11 - address[] unlockFeeReceivers; // slot 12 - uint256[] unlockFeeReceiversShares; // slot 13 + mapping(address => uint256) addressToLastSeasonId; // slot 8 + address[] unlockFeeReceivers; // slot 9 + uint256[] unlockFeeReceiversShares; // slot 10 //////////////// /// BOOST /// //////////////// - uint256 boostForNonStratMembers; // slot 14 + uint256 boostForNonStratMembers; // slot 11 //mapping: level => USDC fee - mapping(uint256 => uint256) boostLevelToFee; // slot 15 + mapping(uint256 => uint256) boostLevelToFee; // slot 12 // nested mapping: tier => boostlevel => boost enhance points - mapping(uint256 => mapping(uint256 => uint256)) boostPercentFromTierToLevel; // slot 16 - address[] boostFeeReceivers; // slot 17 - uint256[] boostFeeReceiversShares; // slot 18 - /////////////// - /// RESTAKE (deprecated) /// - /////////////// - /// @dev deprecated - preserved for storage layout compatibility with 14f06c0 deployment - uint256 __deprecated_restakeFee; // slot 19 - mapping(uint256 => mapping(address => uint256)) __deprecated_claimAmounts; // slot 20 - mapping(uint256 => uint256) __deprecated_totalClaimAmounts; // slot 21 + mapping(uint256 => mapping(uint256 => uint256)) boostPercentFromTierToLevel; // slot 13 + address[] boostFeeReceivers; // slot 14 + uint256[] boostFeeReceiversShares; // slot 15 //////////////// /// WITHDRAW /// //////////////// // nested mapping: userAddress => tokenAddress => amount - mapping(address => mapping(address => uint256)) pendingWithdrawals; // slot 22 + mapping(address => mapping(address => uint256)) pendingWithdrawals; // slot 16 /////////////////// /// MINING PASS /// /////////////////// //mapping: level => USDC fee - mapping(uint256 => uint256) miningPassTierToFee; // slot 23 - mapping(uint256 => uint256) miningPassTierToDepositLimit; // slot 24 + mapping(uint256 => uint256) miningPassTierToFee; // slot 17 + mapping(uint256 => uint256) miningPassTierToDepositLimit; // slot 18 + address[] miningPassFeeReceivers; // slot 19 + uint256[] miningPassFeeReceiversShares; // slot 20 /////////////// /// GENERAL /// /////////////// - address depositToken; // slot 25 - address rewardToken; // slot 26 - address feeToken; // slot 27 - address stratosphereAddress; // slot 28 - uint256 reentrancyGuardStatus; // slot 29 - address emissionsManager; // slot 30 - ///////////////////////////////////////// - /// MINING PASS (extended) - appended /// - ///////////////////////////////////////// - address[] miningPassFeeReceivers; // slot 31 - uint256[] miningPassFeeReceiversShares; // slot 32 + address depositToken; // slot 21 + address rewardToken; // slot 22 + address feeToken; // slot 23 + address stratosphereAddress; // slot 24 + uint256 reentrancyGuardStatus; // slot 25 + address emissionsManager; // slot 26 + ////////////////////////////////////////// + /// DYNAMIC PRICING (appended safely) /// + ////////////////////////////////////////// /// @dev Base fees (original fees set at deployment, used for floor price calculation) - mapping(uint256 => uint256) baseMiningPassTierToFee; // slot 33 + mapping(uint256 => uint256) baseMiningPassTierToFee; // slot 27 /// @dev Floor price percentage in basis points (e.g., 2500 = 25%) - uint256 miningPassFeeFloorBps; // slot 34 + uint256 miningPassFeeFloorBps; // slot 28 ////////////////// /// AUTOMATION /// ////////////////// - address gelatoExecutor; // slot 35 - mapping(uint256 => bool) isSeasonClaimed; // slot 36 + address gelatoExecutor; // slot 29 + mapping(uint256 => bool) isSeasonClaimed; // slot 30 } diff --git a/src/upgradeInitializers/FujiMigrationInit.sol b/src/upgradeInitializers/FujiMigrationInit.sol new file mode 100644 index 0000000..055b0a9 --- /dev/null +++ b/src/upgradeInitializers/FujiMigrationInit.sol @@ -0,0 +1,219 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import {AppStorage} from "../libraries/AppStorage.sol"; + +/// @title FujiMigrationInit +/// @notice One-time migration initializer for the Fuji testnet diamond. +/// +/// Problem: Fuji was deployed at commit 14f06c0 which had a different AppStorage +/// layout (extra unlock discount mappings at slots 8-10 and restake fields at +/// slots 19-21) compared to production. This shifted the GENERAL section +/// (depositToken, rewardToken, feeToken, etc.) to slots 25-30 on Fuji, whereas +/// production has them at slots 21-26. +/// +/// This initializer: +/// 1. Reads the 6 GENERAL scalar values from old Fuji slots 25-30 +/// 2. Writes them to production-compatible slots 21-26 +/// 3. Clears the old slots 27-30 to avoid stale data +/// 4. Re-initializes all mapping/array-based config (fees, receivers, etc.) +/// since mapping data is keyed by keccak256(key, slot) and won't carry over +/// +/// After running this, the Fuji diamond's storage layout matches production, +/// and all facets compiled against the production AppStorage will work correctly. +contract FujiMigrationInit { + AppStorage s; + + struct Args { + // Fee receivers for unlock + address[] unlockFeeReceivers; + uint256[] unlockFeeReceiversShares; + // Fee receivers for boost + address[] boostFeeReceivers; + uint256[] boostFeeReceiversShares; + // Fee receivers for mining pass + address[] miningPassFeeReceivers; + uint256[] miningPassFeeReceiversShares; + } + + /// @notice Migrate Fuji storage from 14f06c0 layout to production layout. + /// @dev Must be called via diamondCut delegatecall exactly once. + function init(Args memory _args) external { + // ─── Step 1: Migrate GENERAL scalars from old Fuji slots to prod slots ─── + // + // Old Fuji layout (14f06c0): Production layout: + // slot 25 = depositToken slot 21 = depositToken + // slot 26 = rewardToken slot 22 = rewardToken + // slot 27 = feeToken slot 23 = feeToken + // slot 28 = stratosphereAddress slot 24 = stratosphereAddress + // slot 29 = reentrancyGuardStatus slot 25 = reentrancyGuardStatus + // slot 30 = emissionsManager slot 26 = emissionsManager + // + // We read from old slots and write to new slots using assembly. + // New slots 21-24 were previously mapping base slots (pendingWithdrawals, + // miningPassTierToFee, etc.) which are always 0, so overwriting is safe. + + address depositToken; + address rewardToken; + address feeToken; + address stratosphereAddress; + uint256 reentrancyGuardStatus; + address emissionsManager; + + assembly { + depositToken := sload(25) + rewardToken := sload(26) + feeToken := sload(27) + stratosphereAddress := sload(28) + reentrancyGuardStatus := sload(29) + emissionsManager := sload(30) + } + + // Verify we read valid data (sanity check) + require(depositToken != address(0), "FujiMigration: depositToken is zero"); + require(feeToken != address(0), "FujiMigration: feeToken is zero"); + + assembly { + // Write to production slots (21-26) + sstore(21, depositToken) + sstore(22, rewardToken) + sstore(23, feeToken) + sstore(24, stratosphereAddress) + sstore(25, reentrancyGuardStatus) + sstore(26, emissionsManager) + + // Clear old slots that are no longer used as scalars + // Slot 27 is now baseMiningPassTierToFee (mapping base = 0) + sstore(27, 0) + // Slot 28 is now miningPassFeeFloorBps (will be set below) + // Slot 29 is now gelatoExecutor (address, leave 0 for now) + sstore(29, 0) + // Slot 30 is now isSeasonClaimed (mapping base = 0) + sstore(30, 0) + } + + // ─── Step 2: Re-initialize mapping/array data ─── + // Mappings use keccak256(key, slot) for storage, so data written under + // old slot numbers is now inaccessible. We must re-set everything. + + // Unlock fee receivers (prod slots 9-10, old Fuji slots 12-13) + // Clear any stale length at slots 9-10 first + _clearArray(9); + _clearArray(10); + for (uint256 i = 0; i < _args.unlockFeeReceivers.length; i++) { + s.unlockFeeReceivers.push(_args.unlockFeeReceivers[i]); + s.unlockFeeReceiversShares.push(_args.unlockFeeReceiversShares[i]); + } + + // Boost fee receivers (prod slots 14-15, old Fuji slots 17-18) + _clearArray(14); + _clearArray(15); + for (uint256 i = 0; i < _args.boostFeeReceivers.length; i++) { + s.boostFeeReceivers.push(_args.boostFeeReceivers[i]); + s.boostFeeReceiversShares.push(_args.boostFeeReceiversShares[i]); + } + + // Mining pass fee receivers (prod slots 19-20, never existed in 14f06c0) + _clearArray(19); + _clearArray(20); + for (uint256 i = 0; i < _args.miningPassFeeReceivers.length; i++) { + s.miningPassFeeReceivers.push(_args.miningPassFeeReceivers[i]); + s.miningPassFeeReceiversShares.push(_args.miningPassFeeReceiversShares[i]); + } + + // Re-initialize mining pass fees (prod slot 17, old Fuji slot 23) + s.miningPassTierToFee[0] = 0; + s.miningPassTierToFee[1] = 0.5 * 1e6; + s.miningPassTierToFee[2] = 1 * 1e6; + s.miningPassTierToFee[3] = 2 * 1e6; + s.miningPassTierToFee[4] = 4 * 1e6; + s.miningPassTierToFee[5] = 8 * 1e6; + s.miningPassTierToFee[6] = 15 * 1e6; + s.miningPassTierToFee[7] = 30 * 1e6; + s.miningPassTierToFee[8] = 50 * 1e6; + s.miningPassTierToFee[9] = 75 * 1e6; + s.miningPassTierToFee[10] = 100 * 1e6; + + // Base mining pass fees (prod slot 27, new field) + s.baseMiningPassTierToFee[0] = 0; + s.baseMiningPassTierToFee[1] = 0.5 * 1e6; + s.baseMiningPassTierToFee[2] = 1 * 1e6; + s.baseMiningPassTierToFee[3] = 2 * 1e6; + s.baseMiningPassTierToFee[4] = 4 * 1e6; + s.baseMiningPassTierToFee[5] = 8 * 1e6; + s.baseMiningPassTierToFee[6] = 15 * 1e6; + s.baseMiningPassTierToFee[7] = 30 * 1e6; + s.baseMiningPassTierToFee[8] = 50 * 1e6; + s.baseMiningPassTierToFee[9] = 75 * 1e6; + s.baseMiningPassTierToFee[10] = 100 * 1e6; + + // Mining pass deposit limits (prod slot 18, old Fuji slot 24) + s.miningPassTierToDepositLimit[0] = 5_000 * 1e18; + s.miningPassTierToDepositLimit[1] = 10_000 * 1e18; + s.miningPassTierToDepositLimit[2] = 25_000 * 1e18; + s.miningPassTierToDepositLimit[3] = 60_000 * 1e18; + s.miningPassTierToDepositLimit[4] = 150_000 * 1e18; + s.miningPassTierToDepositLimit[5] = 350_000 * 1e18; + s.miningPassTierToDepositLimit[6] = 800_000 * 1e18; + s.miningPassTierToDepositLimit[7] = 1_800_000 * 1e18; + s.miningPassTierToDepositLimit[8] = 4_500_000 * 1e18; + s.miningPassTierToDepositLimit[9] = 12_000_000 * 1e18; + s.miningPassTierToDepositLimit[10] = type(uint256).max; + + // Mining pass fee floor (25% = 2500 bps) + s.miningPassFeeFloorBps = 2500; + + // Re-initialize unlock timestamp discounts (prod slot 7, same slot in Fuji) + // These mappings are at the SAME slot (7) in both layouts, so data is still + // accessible. But let's ensure they're set correctly: + s.unlockTimestampDiscountForStratosphereMembers[0] = 500; + s.unlockTimestampDiscountForStratosphereMembers[1] = 550; + s.unlockTimestampDiscountForStratosphereMembers[2] = 650; + s.unlockTimestampDiscountForStratosphereMembers[3] = 800; + s.unlockTimestampDiscountForStratosphereMembers[4] = 1000; + s.unlockTimestampDiscountForStratosphereMembers[5] = 1500; + + // Re-initialize boost fees (prod slot 12, old Fuji slot 15) + s.boostLevelToFee[0] = 0; + s.boostLevelToFee[1] = 2 * 1e6; + s.boostLevelToFee[2] = 3 * 1e6; + s.boostLevelToFee[3] = 4 * 1e6; + + // Re-initialize boost percent tiers (prod slot 13, old Fuji slot 16) + s.boostPercentFromTierToLevel[0][0] = 20; + s.boostPercentFromTierToLevel[1][0] = 25; + s.boostPercentFromTierToLevel[2][0] = 33; + s.boostPercentFromTierToLevel[3][0] = 45; + s.boostPercentFromTierToLevel[4][0] = 65; + s.boostPercentFromTierToLevel[5][0] = 100; + s.boostPercentFromTierToLevel[0][1] = 22; + s.boostPercentFromTierToLevel[1][1] = 28; + s.boostPercentFromTierToLevel[2][1] = 37; + s.boostPercentFromTierToLevel[3][1] = 51; + s.boostPercentFromTierToLevel[4][1] = 74; + s.boostPercentFromTierToLevel[5][1] = 115; + s.boostPercentFromTierToLevel[0][2] = 24; + s.boostPercentFromTierToLevel[1][2] = 30; + s.boostPercentFromTierToLevel[2][2] = 40; + s.boostPercentFromTierToLevel[3][2] = 55; + s.boostPercentFromTierToLevel[4][2] = 81; + s.boostPercentFromTierToLevel[5][2] = 125; + s.boostPercentFromTierToLevel[0][3] = 28; + s.boostPercentFromTierToLevel[1][3] = 35; + s.boostPercentFromTierToLevel[2][3] = 47; + s.boostPercentFromTierToLevel[3][3] = 64; + s.boostPercentFromTierToLevel[4][3] = 94; + s.boostPercentFromTierToLevel[5][3] = 145; + + // boostForNonStratMembers (prod slot 11, old Fuji slot 14 — different slot, re-set) + s.boostForNonStratMembers = 10; + } + + /// @dev Clear a dynamic array's length so .push() starts fresh. + /// Array data at keccak256(slot) is orphaned but harmless. + function _clearArray(uint256 slot) internal { + assembly { + sstore(slot, 0) + } + } +} diff --git a/test/foundry/fork/FujiForkMiningPass.t.sol b/test/foundry/fork/FujiForkMiningPass.t.sol index 44ab2d8..1335fa0 100644 --- a/test/foundry/fork/FujiForkMiningPass.t.sol +++ b/test/foundry/fork/FujiForkMiningPass.t.sol @@ -7,14 +7,27 @@ import {IDiamondCut} from "clouds/interfaces/IDiamondCut.sol"; import {IDiamondLoupe} from "clouds/interfaces/IDiamondLoupe.sol"; import {DiamondManagerFacet} from "src/facets/DiamondManagerFacet.sol"; import {MiningPassFacet} from "src/facets/MiningPassFacet.sol"; +import {BoostFacet} from "src/facets/BoostFacet.sol"; +import {DepositFacet} from "src/facets/DepositFacet.sol"; +import {ClaimFacet} from "src/facets/ClaimFacet.sol"; +import {UnlockFacet} from "src/facets/UnlockFacet.sol"; +import {WithdrawFacet} from "src/facets/WithdrawFacet.sol"; +import {FeeCollectorFacet} from "src/facets/FeeCollectorFacet.sol"; +import {AuthorizationFacet} from "src/facets/AuthorizationFacet.sol"; +import {PausationFacet} from "src/facets/PausationFacet.sol"; +import {FujiMigrationInit} from "src/upgradeInitializers/FujiMigrationInit.sol"; /// @title FujiForkMiningPassTest -/// @notice Fork test against the real Fuji diamond to verify storage layout fix. -/// The diamond was deployed at commit 14f06c0 which placed GENERAL fields -/// (depositToken, rewardToken, feeToken, ...) at slots 25-30. A prior -/// upgrade shifted those fields causing feeToken (slot 25 in broken HEAD) -/// to read depositToken data (VPND). The fixed AppStorage restores the -/// original slot layout with deprecated gap fields. +/// @notice Fork test against the real Fuji diamond to verify the storage +/// migration from the 14f06c0 layout to the production layout. +/// +/// Fuji was deployed at commit 14f06c0 which placed GENERAL fields +/// (depositToken, rewardToken, feeToken) at slots 25-27. Production +/// has them at slots 21-23. +/// +/// The migration initializer reads scalars from old slots 25-30, +/// writes them to production slots 21-26, then re-initializes all +/// mapping/array config data that moved between slot numbers. contract FujiForkMiningPassTest is Test { // ──── Real Fuji addresses ──── address constant DIAMOND = 0xEd98549D4dE52811b3b417A717E3d74AC90F9Ffe; @@ -37,63 +50,83 @@ contract FujiForkMiningPassTest is Test { loupe = IDiamondLoupe(DIAMOND); user = makeAddr("testUser"); - // Read the owner from the OwnershipFacet (bool ok, bytes memory data) = DIAMOND.staticcall(abi.encodeWithSignature("owner()")); require(ok, "owner() call failed"); owner = abi.decode(data, (address)); } // ═══════════════════════════════════════════════════════════════════ - // STORAGE LAYOUT VERIFICATION + // PRE-MIGRATION STORAGE CHECK // ═══════════════════════════════════════════════════════════════════ - /// @notice Verify raw storage slots 25-28 hold the original 14f06c0 token addresses - function test_Fork_VerifyStorageLayout() public { - address slot25 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(25)))))); - address slot26 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(26)))))); - address slot27 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(27)))))); - address slot28 = address(uint160(uint256(vm.load(DIAMOND, bytes32(uint256(28)))))); - - console.log("Raw storage:"); - console.log(" slot 25 (depositToken):", slot25); - console.log(" slot 26 (rewardToken):", slot26); - console.log(" slot 27 (feeToken):", slot27); - console.log(" slot 28 (stratosphere):", slot28); - - assertEq(slot25, VPND, "slot 25 should be VPND (depositToken)"); - assertEq(slot26, VAPE, "slot 26 should be VAPE (rewardToken)"); - assertEq(slot27, USDC, "slot 27 should be USDC (feeToken)"); - assertEq(slot28, STRATOSPHERE, "slot 28 should be stratosphere"); + /// @notice Confirm that on-chain Fuji storage has GENERAL fields at + /// the OLD 14f06c0 slots (25-28), not production slots (21-24). + function test_Fork_PreMigration_OldSlotLayout() public { + // Old Fuji 14f06c0 layout: GENERAL at slots 25-28 + address slot25 = _readAddress(25); + address slot26 = _readAddress(26); + address slot27 = _readAddress(27); + address slot28 = _readAddress(28); + + console.log("Pre-migration (old Fuji slots 25-28):"); + console.log(" slot 25:", slot25); + console.log(" slot 26:", slot26); + console.log(" slot 27:", slot27); + console.log(" slot 28:", slot28); + + assertEq(slot25, VPND, "old slot 25 should be VPND (depositToken)"); + assertEq(slot26, VAPE, "old slot 26 should be VAPE (rewardToken)"); + assertEq(slot27, USDC, "old slot 27 should be USDC (feeToken)"); + assertEq(slot28, STRATOSPHERE, "old slot 28 should be stratosphere"); + + // Production slots 21-24 should NOT have these values yet + address slot21 = _readAddress(21); + address slot23 = _readAddress(23); + assertTrue(slot21 != VPND, "prod slot 21 should NOT have VPND yet"); + assertTrue(slot23 != USDC, "prod slot 23 should NOT have USDC yet"); } - /// @notice After upgrading facets on the fork, feeToken should be USDC - function test_Fork_AfterUpgrade_FeeTokenIsUSDC() public { - _upgradeFacets(); - _reinitializeMiningPassData(); + // ═══════════════════════════════════════════════════════════════════ + // POST-MIGRATION STORAGE CHECK + // ═══════════════════════════════════════════════════════════════════ + + /// @notice After the full migration, GENERAL fields should be at + /// production slots (21-26) and facet reads should work. + function test_Fork_AfterMigration_FeeTokenIsUSDC() public { + _upgradeAndMigrate(); + + // Verify raw storage at production slots + assertEq(_readAddress(21), VPND, "prod slot 21 = depositToken = VPND"); + assertEq(_readAddress(22), VAPE, "prod slot 22 = rewardToken = VAPE"); + assertEq(_readAddress(23), USDC, "prod slot 23 = feeToken = USDC"); + assertEq(_readAddress(24), STRATOSPHERE, "prod slot 24 = stratosphere"); - // feeToken at slot 27 = USDC (from original 14f06c0 init) - assertEq(diamond.getStratosphereAddress(), STRATOSPHERE, "stratosphere should be correct"); + // Old Fuji slot 27 should be cleared (was USDC/feeToken before migration) + assertEq(_readAddress(27), address(0), "old slot 27 should be cleared"); + // Slot 28 is now miningPassFeeFloorBps (= 2500), NOT an old address slot + assertEq(uint256(vm.load(DIAMOND, bytes32(uint256(28)))), 2500, "slot 28 = miningPassFeeFloorBps = 2500"); + // Verify via facet getters + assertEq(diamond.getStratosphereAddress(), STRATOSPHERE, "stratosphere getter works"); + + // Verify mining pass fees were re-initialized uint256 tier1Fee = diamond.getMiningPassTierFee(1); console.log("Tier 1 fee:", tier1Fee); - assertTrue(tier1Fee > 0, "tier 1 fee should be non-zero after reinit"); + assertEq(tier1Fee, 0.5 * 1e6, "tier 1 fee should be 0.5 USDC"); uint256 floorBps = diamond.getMiningPassFeeFloorBps(); assertEq(floorBps, 2500, "floor should be 2500 bps"); } - /// @notice Full end-to-end: upgrade, reinit, purchase mining pass — USDC spent, not VPND - function test_Fork_AfterUpgrade_PurchaseUsesUSDC() public { - _upgradeFacets(); - _reinitializeMiningPassData(); - _setupMiningPassFeeReceivers(); + /// @notice Full e2e: migrate -> purchase mining pass -> only USDC is spent + function test_Fork_AfterMigration_PurchaseUsesUSDC() public { + _upgradeAndMigrate(); _ensureActiveSeason(); uint256 fee = diamond.getMiningPassTierFee(1); require(fee > 0, "fee is 0"); console.log("Tier 1 fee:", fee); - // Give user USDC and VPND deal(USDC, user, fee * 10); deal(VPND, user, fee * 10); @@ -120,65 +153,68 @@ contract FujiForkMiningPassTest is Test { // HELPERS // ═══════════════════════════════════════════════════════════════════ - /// @dev Deploy new facets (compiled with fixed AppStorage) and replace them - /// in the diamond. Uses the loupe to dynamically get all registered - /// selectors for each facet so we don't miss any. - function _upgradeFacets() internal { - DiamondManagerFacet newDMF = new DiamondManagerFacet(); - MiningPassFacet newMPF = new MiningPassFacet(); + function _readAddress(uint256 slot) internal view returns (address) { + return address(uint160(uint256(vm.load(DIAMOND, bytes32(slot))))); + } - // Use the loupe to find existing facet addresses via known selectors - address oldDmfAddr = loupe.facetAddress(DiamondManagerFacet.setDepositToken.selector); - address oldMpfAddr = loupe.facetAddress(MiningPassFacet.purchase.selector); + /// @dev Upgrade ALL facets + run the FujiMigrationInit initializer in a + /// single diamondCut call — exactly how the real upgrade will work. + function _upgradeAndMigrate() internal { + // Deploy the migration initializer + FujiMigrationInit migrationInit = new FujiMigrationInit(); - // Get ALL registered selectors for those facets - bytes4[] memory dmfSelectors = loupe.facetFunctionSelectors(oldDmfAddr); - bytes4[] memory mpfSelectors = loupe.facetFunctionSelectors(oldMpfAddr); + // Build cuts array: deploy new facets, look up old facet via loupe, replace + IDiamondCut.FacetCut[] memory cuts = _buildAllFacetCuts(); - console.log("DMF selectors to replace:", dmfSelectors.length); - console.log("MPF selectors to replace:", mpfSelectors.length); - - IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](2); - cuts[0] = IDiamondCut.FacetCut({ - facetAddress: address(newDMF), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: dmfSelectors - }); - cuts[1] = IDiamondCut.FacetCut({ - facetAddress: address(newMPF), action: IDiamondCut.FacetCutAction.Replace, functionSelectors: mpfSelectors - }); + // Encode the migration initializer call + FujiMigrationInit.Args memory migArgs = _buildMigrationArgs(); vm.prank(owner); - IDiamondCut(DIAMOND).diamondCut(cuts, address(0), ""); + IDiamondCut(DIAMOND) + .diamondCut(cuts, address(migrationInit), abi.encodeWithSelector(FujiMigrationInit.init.selector, migArgs)); } - function _reinitializeMiningPassData() internal { - uint256[] memory fees = new uint256[](11); - fees[0] = 0; - fees[1] = 0.5 * 1e6; // tier 1: 0.5 USDC - fees[2] = 1 * 1e6; - fees[3] = 2 * 1e6; - fees[4] = 4 * 1e6; - fees[5] = 8 * 1e6; - fees[6] = 15 * 1e6; - fees[7] = 30 * 1e6; - fees[8] = 50 * 1e6; - fees[9] = 75 * 1e6; - fees[10] = 100 * 1e6; - - vm.startPrank(owner); - diamond.setBaseMiningPassFees(fees); - diamond.setMiningPassFees(fees); - diamond.setMiningPassFeeFloor(2500); - vm.stopPrank(); + function _buildAllFacetCuts() internal returns (IDiamondCut.FacetCut[] memory cuts) { + cuts = new IDiamondCut.FacetCut[](10); + cuts[0] = _deployAndReplace(address(new DiamondManagerFacet()), DiamondManagerFacet.setDepositToken.selector); + cuts[1] = _deployAndReplace(address(new MiningPassFacet()), MiningPassFacet.purchase.selector); + cuts[2] = _deployAndReplace(address(new BoostFacet()), BoostFacet.claimBoost.selector); + cuts[3] = _deployAndReplace(address(new DepositFacet()), DepositFacet.deposit.selector); + cuts[4] = _deployAndReplace(address(new ClaimFacet()), ClaimFacet.automatedClaim.selector); + cuts[5] = _deployAndReplace(address(new UnlockFacet()), UnlockFacet.unlock.selector); + cuts[6] = _deployAndReplace(address(new WithdrawFacet()), WithdrawFacet.withdrawUnlocked.selector); + cuts[7] = _deployAndReplace(address(new FeeCollectorFacet()), FeeCollectorFacet.collectBoostFees.selector); + cuts[8] = _deployAndReplace(address(new AuthorizationFacet()), AuthorizationFacet.authorize.selector); + cuts[9] = _deployAndReplace(address(new PausationFacet()), PausationFacet.pause.selector); } - function _setupMiningPassFeeReceivers() internal { - address[] memory receivers = new address[](1); - receivers[0] = makeAddr("feeReceiver"); - uint256[] memory shares = new uint256[](1); - shares[0] = 10000; // 100% + function _deployAndReplace(address newFacet, bytes4 knownSelector) + internal + view + returns (IDiamondCut.FacetCut memory) + { + address oldFacet = loupe.facetAddress(knownSelector); + bytes4[] memory selectors = loupe.facetFunctionSelectors(oldFacet); + return IDiamondCut.FacetCut({ + facetAddress: newFacet, action: IDiamondCut.FacetCutAction.Replace, functionSelectors: selectors + }); + } - vm.prank(owner); - diamond.setMiningPassFeeReceivers(receivers, shares); + function _buildMigrationArgs() internal returns (FujiMigrationInit.Args memory migArgs) { + migArgs.unlockFeeReceivers = new address[](1); + migArgs.unlockFeeReceivers[0] = makeAddr("unlockFeeReceiver"); + migArgs.unlockFeeReceiversShares = new uint256[](1); + migArgs.unlockFeeReceiversShares[0] = 10000; + + migArgs.boostFeeReceivers = new address[](1); + migArgs.boostFeeReceivers[0] = makeAddr("boostFeeReceiver"); + migArgs.boostFeeReceiversShares = new uint256[](1); + migArgs.boostFeeReceiversShares[0] = 10000; + + migArgs.miningPassFeeReceivers = new address[](1); + migArgs.miningPassFeeReceivers[0] = makeAddr("miningPassFeeReceiver"); + migArgs.miningPassFeeReceiversShares = new uint256[](1); + migArgs.miningPassFeeReceiversShares[0] = 10000; } function _ensureActiveSeason() internal { @@ -189,10 +225,12 @@ contract FujiForkMiningPassTest is Test { return; } - // Read season end timestamp from storage (Season struct in mapping at slot 4) - bytes32 baseSlot = keccak256(abi.encode(seasonId, uint256(4))); - uint256 endTs = uint256(vm.load(DIAMOND, bytes32(uint256(baseSlot) + 2))); - if (endTs <= block.timestamp) { + try diamond.getSeasonEndTimestamp(seasonId) returns (uint256 endTs) { + if (endTs <= block.timestamp) { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + } + } catch { vm.prank(owner); diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); } From e3c5ff48adea6e18fcf0403fd343011c807fedc1 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Wed, 25 Feb 2026 20:10:24 +0530 Subject: [PATCH 29/34] feat: update contract deployments and add migration script for Fuji - Updated UnlockFacet and WithdrawFacet deployments with new bytecode and addresses. - Added migration script for Fuji to handle contract upgrades and data migration. - Introduced task to update mining pass fees based on current VAPE price. --- deployments/AuthorizationFacet.json | 6 +- deployments/BoostFacet.json | 6 +- deployments/ClaimFacet.json | 6 +- deployments/DepositFacet.json | 6 +- deployments/DiamondManagerFacet.json | 6 +- deployments/FeeCollectorFacet.json | 6 +- deployments/FujiMigrationInit.json | 66 +++++++++++++++ deployments/MiningPassFacet.json | 6 +- deployments/PausationFacet.json | 6 +- deployments/UnlockFacet.json | 6 +- deployments/WithdrawFacet.json | 6 +- hardhat.config.ts | 1 + scripts/migrateFuji.ts | 120 +++++++++++++++++++++++++++ tasks/updateMiningPassFees.ts | 104 +++++++++++++++++++++++ 14 files changed, 321 insertions(+), 30 deletions(-) create mode 100644 deployments/FujiMigrationInit.json create mode 100644 scripts/migrateFuji.ts create mode 100644 tasks/updateMiningPassFees.ts diff --git a/deployments/AuthorizationFacet.json b/deployments/AuthorizationFacet.json index af0394f..8c01079 100644 --- a/deployments/AuthorizationFacet.json +++ b/deployments/AuthorizationFacet.json @@ -56,8 +56,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220e69d9fcd8693fd2077284a7845242557f17631c80d796b01e59d083d5fe481b664736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220e69d9fcd8693fd2077284a7845242557f17631c80d796b01e59d083d5fe481b664736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220bce5ec74cdbefd9a39897784ad951f81bd7e0381c4108ba2a56fd47d45ec217364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633bbbc7c914610046578063b6a5d7de1461005b578063b91816111461006e575b600080fd5b6100596100543660046101d8565b6100bb565b005b6100596100693660046101d8565b61010f565b6100a761007c3660046101d8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b604051901515815260200160405180910390f35b6100c3610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b610117610166565b73ffffffffffffffffffffffffffffffffffffffff16600090815260208190526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101d6576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000602082840312156101ea57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461020e57600080fd5b939250505056fea2646970667358221220bce5ec74cdbefd9a39897784ad951f81bd7e0381c4108ba2a56fd47d45ec217364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -66,7 +66,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xfd27E4e7730B8B636377974db80E9635b9583D3a" + "address": "0x41B02390B78289d474ece028CFB9E1156a35f40B" }, "hardhat": { "artifact": { diff --git a/deployments/BoostFacet.json b/deployments/BoostFacet.json index 8fee60c..3002470 100644 --- a/deployments/BoostFacet.json +++ b/deployments/BoostFacet.json @@ -82,8 +82,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106fc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6019546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206019549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220316babebf3d79b80a3c96e3cac17864ac7ec9a492f0315c3d77f5b194a0e443064736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6019546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206019549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220316babebf3d79b80a3c96e3cac17864ac7ec9a492f0315c3d77f5b194a0e443064736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106fc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122076ed51990e9b210eedc0eaebe888c7c2b5dad791a2b1c05cd4a6f8f2a9e492c564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063502d296714610030575b600080fd5b61004361003e36600461059c565b610045565b005b60025460008181526005602090815260408083203384529091528120805490910361009c576040517f3a0d884600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004810154158015906100c05750620151808160040154426100be91906105e4565b105b156100f7576040517f269eb72b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610105600033610266565b60ff16915091506000610118838761031e565b4260048601559050600061012d848489610386565b9050600061013c8683896103ba565b90508086600301600082825461015291906105f7565b90915550506005860181905582156102105761016d83610488565b6017546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061060a565b505b604080518981526020810183905290810184905260608101859052339088907fd3a080433deb263ff167dc354e7f90486543d360ea1e03ff1264490f3429ffef9060800160405180910390a35050505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa1580156102e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610304919061062c565b905080156103155760019350600092505b50509250929050565b6000821561033b57506000818152600c6020526040902054610380565b821580156103495750600082115b15610380576040517f3055f2cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b600083156103ae57506000828152600d602090815260408083208484529091529020546103b3565b50600b545b9392505050565b6000826000036103cc575060006103b3565b6000828152600460205260408120600281015490919062015180906103f29042906105e4565b6103fc9190610645565b905080600003610411576000925050506103b3565b8554600090610421908390610680565b8760030154886002015461043591906105f7565b61043f91906105e4565b90508060000361045557600093505050506103b3565b60006104618288610583565b90508084600701600082825461047791906105f7565b909155509098975050505050505050565b600e8054600f805490919081146104cb576040517f44e29d8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561057c5760006104fe868584815481106104ee576104ee610697565b9060005260206000200154610583565b9050806000601001600087858154811061051a5761051a610697565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff908116845283820194909452604092830182206017549094168252929092528120805490919061056e9084906105f7565b9091555050506001016104ce565b5050505050565b60006127106105928385610680565b6103b39190610645565b6000602082840312156105ae57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610380576103806105b5565b80820180821115610380576103806105b5565b60006020828403121561061c57600080fd5b815180151581146103b357600080fd5b60006020828403121561063e57600080fd5b5051919050565b60008261067b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8082028115828204841417610380576103806105b5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122076ed51990e9b210eedc0eaebe888c7c2b5dad791a2b1c05cd4a6f8f2a9e492c564736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -92,7 +92,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x536BECeD986BD133Be29b1914A754388ac62B375" + "address": "0x89fc2e298AAAdb3a7DeaA0F90B9D1A773dc5904C" }, "hardhat": { "artifact": { diff --git a/deployments/ClaimFacet.json b/deployments/ClaimFacet.json index 0119aa8..618af2f 100644 --- a/deployments/ClaimFacet.json +++ b/deployments/ClaimFacet.json @@ -93,8 +93,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220da59b4c12674f0b8d1bd46712009a318fb17ec59602f240f461eb3c41e6ebc9564736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506018546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220da59b4c12674f0b8d1bd46712009a318fb17ec59602f240f461eb3c41e6ebc9564736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610a71806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122066f4cad131397d768cf6346cbde7862375e1dd99db0af404046466acb749cb4164736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c806316890b2a1461003b57806359dff49414610050575b600080fd5b61004e6100493660046107f9565b610063565b005b61004e61005e366004610854565b6103c4565b61006e600033610710565b6000828152600460205260409020600281015442116100b9576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120600281015460068201549192909190829003610130576040517f4f231d2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60088301541561016c576040517f3f943e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600301548361017e9190610972565b9050600061018c8287610773565b9050600061019a82886107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048901805492935083929091906101f7908490610985565b92505081905550808760060160008282546102129190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610290573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b49190610998565b5085546000906102c5908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103649190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8b16918c917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350505050505050505050565b6103cf600033610710565b60008281526004602052604090206002810154421161041a576040517f3fa01af900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160005b8181101561070957600084828151811061043b5761043b6109ba565b602090810291909101810151600088815260058352604080822073ffffffffffffffffffffffffffffffffffffffff84168352909352918220600281015460068201549294509092909190829003610496575050505061041f565b6008830154156104a9575050505061041f565b60008360030154836104bb9190610972565b905060006104c9828a610773565b905060006104d7828b6107a4565b60088701819055600a870180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556000600688018190556007880181905560048c0180549293508392909190610534908490610985565b92505081905550808a600601600082825461054f9190610972565b90915550506016546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f19190610998565b508554600090610602908690610972565b6015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af115801561067d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a19190610998565b50604080518381526020810183905273ffffffffffffffffffffffffffffffffffffffff8a16918f917fd27486cbbd902c694ff070c4b52eb23c8f7828d3688bd3c7293638daec288808910160405180910390a350506001909601955061041f945050505050565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff1661076f576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6007810154600090818161078f86670de0b6b3a76400006109e9565b6107999190610a00565b925050505b92915050565b6000670de0b6b3a76400008383600301546107bf91906109e9565b6107c99190610a00565b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146107f457600080fd5b919050565b6000806040838503121561080c57600080fd5b8235915061081c602084016107d0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561086757600080fd5b8235915060208084013567ffffffffffffffff8082111561088757600080fd5b818601915086601f83011261089b57600080fd5b8135818111156108ad576108ad610825565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108f0576108f0610825565b60405291825284820192508381018501918983111561090e57600080fd5b938501935b8285101561093357610924856107d0565b84529385019392850192610913565b8096505050505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561079e5761079e610943565b8181038181111561079e5761079e610943565b6000602082840312156109aa57600080fd5b815180151581146107c957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b808202811582820484141761079e5761079e610943565b600082610a36577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea264697066735822122066f4cad131397d768cf6346cbde7862375e1dd99db0af404046466acb749cb4164736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -103,7 +103,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xc9068e2CfCA201717D5ACc1E990365600bAc919b" + "address": "0x548B923D4388e25F4449C6544bF5A2622620B78C" }, "hardhat": { "artifact": { diff --git a/deployments/DepositFacet.json b/deployments/DepositFacet.json index 4a43c7e..7a1d50b 100644 --- a/deployments/DepositFacet.json +++ b/deployments/DepositFacet.json @@ -69,8 +69,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601b54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601b81905560175490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601b555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220dd66ee540c1842bcce6c3ecbdb2ad13b5f82196a13c81cf4d7dd4bd9d6f83c6f64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601b54600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601b81905560175490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a350506001601b555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220dd66ee540c1842bcce6c3ecbdb2ad13b5f82196a13c81cf4d7dd4bd9d6f83c6f64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610539806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220f61b6eaf9b8a2ed239043acff6dafae9a5659ab9167f0f2969db33695806fd0864736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b6b55f2514610030575b600080fd5b61004361003e3660046103fb565b610045565b005b601954600203610081576040517f50bf8f2300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601981905560155490546040517f70a0823100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9092169182906370a0823190602401602060405180830381865afa1580156100fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061011e9190610414565b831115610157576040517f8dd4747600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152600560209081526040808320338452825280832060098101548452601290925290912054815461018d90869061045c565b11156101c5576040517fda9e267800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80546000036101d5574260048201555b3360009081526008602052604090208290556101f28483836102d2565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810185905273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906064016020604051808303816000875af115801561026b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028f9190610475565b50604051848152339083907feaa18152488ce5959073c9c79c88ca90b3d96c00de1f118cfaad664c3dab06b99060200160405180910390a3505060016019555050565b6000828152600460205260409020600281015442111561031e576040517f20c02df000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600062015180428360020154610334919061049e565b61033e91906104b1565b90508060000361037a576040517f4086629900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8483600001600082825461038e919061045c565b9091555061039e905081866104ec565b8360020160008282546103b1919061045c565b92505081905550848260050160008282546103cc919061045c565b909155506103dc905081866104ec565b8260070160008282546103ef919061045c565b90915550505050505050565b60006020828403121561040d57600080fd5b5035919050565b60006020828403121561042657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561046f5761046f61042d565b92915050565b60006020828403121561048757600080fd5b8151801515811461049757600080fd5b9392505050565b8181038181111561046f5761046f61042d565b6000826104e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761046f5761046f61042d56fea2646970667358221220f61b6eaf9b8a2ed239043acff6dafae9a5659ab9167f0f2969db33695806fd0864736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -79,7 +79,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xf52265Beab3CcC21143a59926Fbd51528D9b70e8" + "address": "0x3F7b438d9f6724222D86B21d7d348D4fBb74aDa9" }, "hardhat": { "artifact": { diff --git a/deployments/DiamondManagerFacet.json b/deployments/DiamondManagerFacet.json index 8e7a3b6..6c401cf 100644 --- a/deployments/DiamondManagerFacet.json +++ b/deployments/DiamondManagerFacet.json @@ -1646,8 +1646,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061336a806100206000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b6016546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b601a5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b60009081526015602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b60008181526015602052604081205460165461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60165460005b600b8110156110a75760008181526015602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b600084815260156020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526015602052604081205460165490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60168190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220a7bbf270b56dceb25cc72e77dbea001cc2115d4f67bed66b6a1492e299e8629d64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b6016546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b601a5460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b60009081526015602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b60008181526015602052604081205460165461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60165460005b600b8110156110a75760008181526015602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b600084815260156020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526015602052604081205460165490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60168190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220a7bbf270b56dceb25cc72e77dbea001cc2115d4f67bed66b6a1492e299e8629d64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061336a806100206000396000f3fe608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b601c546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b6000908152601b602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b6000818152601b6020526040812054601c5461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c5460005b600b8110156110a7576000818152601b602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b6000848152601b6020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152601b6020526040812054601c5490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c8190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220677831a1627d9ce356899000399e02df7641dc343c974ff8517b9315d85e0a3364736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038e5760003560e01c8063830f4cb1116101de578063b5e007901161010f578063df409589116100ad578063f55484ac1161007c578063f55484ac14610a53578063f557f1a914610a66578063fca7129f14610a79578063fe17bd2b14610a9c57600080fd5b8063df40958914610a1a578063e5ea3fdc14610594578063e856611814610a2d578063f008911114610a4057600080fd5b8063d18b3d90116100e9578063d18b3d9014610966578063d2b291d1146109ae578063d822bb87146109f4578063dbcbb9a314610a0757600080fd5b8063b5e0079014610906578063bc67f25f14610919578063c4882ed71461092157600080fd5b80639d0b7d5a1161017c578063ae178fda11610156578063ae178fda1461081c578063b150387914610861578063b234c9c4146108a6578063b3afe496146108b957600080fd5b80639d0b7d5a146107d25780639d6c100f146107e5578063a07693eb1461080957600080fd5b80638aee8127116101b85780638aee81271461075a578063947b43f41461076d57806395e2de331461078d5780639a56f4e41461063157600080fd5b8063830f4cb11461072b57806385e3f9971461073e5780638a91af171461074757600080fd5b80633e131a7a116102c35780635e75a6c3116102615780636e06c64d116102305780636e06c64d1461067c57806373ad27b01461068f578063753b8ece14610703578063820d0ad71461072357600080fd5b80635e75a6c3146105ca57806361ccdfba146105d257806366e017c3146106315780636bb70f6a1461065457600080fd5b80634dc0cd2b1161029d5780634dc0cd2b1461053f578063560cf6f514610581578063562b7153146105945780635c1624ab146105b757600080fd5b80633e131a7a146105065780634784f6bc146105195780634a477b141461052c57600080fd5b80632d4136a6116103305780633361e38b1161030a5780633361e38b146104b557806336a4a844146104c85780633940acb4146104db5780633d55b37b146104e357600080fd5b80632d4136a61461044a5780632e11ca8b1461047d5780633175cbe81461049257600080fd5b8063142950d61161036c578063142950d6146103fc578063275b629e14610404578063278a93e2146104175780632c5682eb1461042a57600080fd5b80630c4ed799146103935780630c7d72a7146103a85780630cc1687a146103db575b600080fd5b6103a66103a1366004612cf9565b610abc565b005b6103bb6103b6366004612cf9565b610bea565b604080519384526020840192909252908201526060015b60405180910390f35b6103ee6103e9366004612d14565b610db2565b6040519081526020016103d2565b6103a6610de3565b6103a6610412366004612d2d565b610e68565b6103a6610425366004612d4f565b610f2c565b61043d610438366004612cf9565b6110e6565b6040516103d29190612dc4565b61046d610458366004612d14565b6000908152601e602052604090205460ff1690565b60405190151581526020016103d2565b6104856111f9565b6040516103d29190612e86565b6103ee6104a0366004612d14565b60009081526004602052604090206005015490565b6103a66104c3366004612fa6565b61126a565b6103a66104d6366004613066565b6113f0565b601c546103ee565b6103ee6104f1366004612d14565b60009081526004602052604090206002015490565b6103a6610514366004612d4f565b611552565b6103a6610527366004612d14565b61167c565b6103ee61053a36600461309c565b61171f565b6103ee61054d36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b6103a661058f366004612d2d565b611759565b6103ee6105a2366004612d14565b60009081526004602052604090206003015490565b6103a66105c5366004612fa6565b61186c565b6002546103ee565b61061c6105e036600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522080546002909101549091565b604080519283526020830191909152016103d2565b6103ee61063f366004612d14565b60009081526004602052604090206007015490565b60185460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016103d2565b6103a661068a366004612fa6565b611a50565b6106a261069d366004612d14565b611bd6565b6040516103d29190600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015292915050565b6103ee610711366004612d14565b6000908152601b602052604090205490565b6106a2611c8b565b6103a6610739366004612d2d565b611d42565b6103ee61271081565b6103a6610755366004612d14565b611ef2565b6103a6610768366004612cf9565b611fda565b6103ee61077b366004612d14565b60009081526011602052604090205490565b6103ee61079b36600461309c565b600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff959095168452939052919020015490565b6103a66107e0366004612d2d565b6120e0565b6103ee6107f3366004612d14565b6000908152600460208190526040909120015490565b61043d61081736600461309c565b61219f565b6103ee61082a36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206006015490565b6103ee61086f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206007015490565b6103a66108b4366004612fa6565b6122b1565b61061c6108c736600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff9490941683529290522060028101546003909101549091565b6103a66109143660046130c6565b612437565b6103a66124c3565b6103ee61092f36600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052206008015490565b61046d61097436600461309c565b600090815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292905220600a015460ff1690565b6103ee6109bc3660046130f2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260106020908152604080832093909416825291909152205490565b6103ee610a02366004613125565b6125c0565b6103a6610a15366004612d2d565b612604565b6103a6610a28366004612d14565b6126b9565b6103a6610a3b366004612cf9565b612804565b6103a6610a4e366004612d14565b612930565b6103a6610a61366004612cf9565b612a11565b6103a6610a74366004612cf9565b612b3f565b6103ee610a87366004612d14565b60009081526004602052604090206006015490565b6103ee610aaa366004612d14565b60009081526012602052604090205490565b8073ffffffffffffffffffffffffffffffffffffffff8116610b0a576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610b7a576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fa95ef02bd478750565871921654c3eae0063151ae6f3e9824a5d52fd395d016e90600090a25050565b6000806000806000600201549050600080600501600083815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061016001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a820160009054906101000a900460ff1615151515815250509050600080600401600084815260200190815260200160002060405180610100016040529081600082015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050600082606001518360400151610d649190613177565b835160e0840151909850909150610d7d8261271061318a565b610d8791906131a1565b9550612710868360600151610d9c919061318a565b610da691906131a1565b96989597505050505050565b6000818152601b6020526040812054601c5461271090610dd2908361318a565b610ddc91906131a1565b9392505050565b3360009081526020819052604090205460ff16610e2c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546000908152601e6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610ed8576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260046020526040908190206002018290555182907f4116cb3bf93ca69e12f15dddabaac80513467c175e1a2fbe7b4ac863ab701fc190610f209084815260200190565b60405180910390a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314610f9c576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b8114610fd6576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c5460005b600b8110156110a7576000818152601b602052604081205490612710611002858461318a565b61100c91906131a1565b905060008311801561103557508086868581811061102c5761102c6131dc565b90506020020135105b1561106c576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85858481811061107e5761107e6131dc565b600086815260116020908152604090912091029290920135909155505060019091019050610fdc565b507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c83836040516110d992919061320b565b60405180910390a1505050565b611145604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b5060028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff90961684529481529184902084516101608101865281548152600182015493810193909352928301549382019390935260038201546060820152600482015460808201529181015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a015460ff16151561014082015290565b60408051600b808252610180820190925260609160009190602082016101608036833701905050905060005b600b811015611264576000818152601160205260409020548251839083908110611251576112516131dc565b6020908102919091010152600101611225565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146112da576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611315576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b825181101561135b57828181518110611334576113346131dc565b6020026020010151826113479190613177565b9150806113538161325d565b915050611319565b506127108114611397576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516113aa906009906020860190612bf6565b5081516113be90600a906020850190612c80565b507fbd58a823390daa65d99f8a8b381a804509e21c2078db13de15849c3edaa9a95583836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611460576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061148357506000818152600460205260409020600201544211155b156114ba576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114c5816001613177565b600281905560008181526004602052604090209081554260018201556114f160ff841662015180613302565b6115009062ffffff1642613177565b6002828101919091556003820185905560048201859055546040518581527f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906020015b60405180910390a250505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146115c2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b81146115fc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b600b81101561163e5782828281811061161a5761161a6131dc565b6000848152601b6020908152604090912091029290920135909155506001016115ff565b507f7bcea34b82e222069291852af10dd0ce9909b890c8e851c52fd83de87883093d828260405161167092919061320b565b60405180910390a15050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146116ec576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600281905560405181907f62fa44befc82da349c4e192c274524ec83957f8cad2344147faac6bbbd3aca9e90600090a250565b600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020600201545b92915050565b3360009081526020819052604090205460ff166117a2576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025480158015906117c557506000818152600460205260409020600201544211155b156117fc576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611807816001613177565b6002818155600082815260046020819052604091829020938455426001850155838301869055600384018790558301869055905490517f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c906115449087815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146118dc576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611917576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600090815b8451811015611a235760008281526005602052604081208651829088908590811061194c5761194c6131dc565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008583815181106119a4576119a46131dc565b6020026020010151905081600001546000036119ec576040517fd9adec6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60038201546119fb8282613321565b611a059087613177565b60039093019190915550925080611a1b8161325d565b91505061191f565b5060008181526004602052604081206007018054849290611a45908490613321565b909155505050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611ac0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051825114611afb576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8251811015611b4157828181518110611b1a57611b1a6131dc565b602002602001015182611b2d9190613177565b915080611b398161325d565b915050611aff565b506127108114611b7d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8251611b9090600e906020860190612bf6565b508151611ba490600f906020850190612c80565b507f622860cbd141acea4430d275509fb57c7a9e332d2958c44b1821730b3778a1df83836040516110d9929190613295565b611c1e60405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b506000908152600460208181526040928390208351610100810185528154815260018201549281019290925260028101549382019390935260038301546060820152908201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b611cd360405180610100016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5060028054600090815260046020818152604092839020835161010081018552815481526001820154928101929092529384015492810192909252600383015460608301528201546080820152600582015460a0820152600682015460c082015260079091015460e082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611db2576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a821115611ded576040517fcbbe0f4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000828152601b6020526040812054601c5490919061271090611e10908461318a565b611e1a91906131a1565b9050600084118015611e2b57508083105b15611e62576040517f70ed532700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008481526011602052604080822085905580516001808252818301909252908160200160208202803683370190505090508381600081518110611ea857611ea86131dc565b6020026020010181815250507fa89ede23c11cc8eeaf974b7001331c6070c66dd433f5c37bc2619f881841705c81604051611ee39190612e86565b60405180910390a15050505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314611f62576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710811115611f9e576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068190556040518181527f858248b1156bac790ae06ed47561d905c1dfe56347b61de29930c266eb2a1683906020015b60405180910390a150565b8073ffffffffffffffffffffffffffffffffffffffff8116612028576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612098576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50601680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612150576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b623d090081111561218d576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000918252600c602052604090912055565b6121fe604051806101600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b50600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff9590951684529381529183902083516101608101855281548152600182015493810193909352600281015493830193909352600383015460608301526004830154608083015282015460a0820152600682015460c0820152600782015460e082015260088201546101008201526009820154610120820152600a9091015460ff16151561014082015290565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612321576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805182511461235c576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b82518110156123a25782818151811061237b5761237b6131dc565b60200260200101518261238e9190613177565b91508061239a8161325d565b915050612360565b5061271081146123de576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82516123f1906013906020860190612bf6565b508151612405906014906020850190612c80565b507fdabc66011f68fc990a5a3b502413fcfcd16c0788b1017255c8fa0745a2954cb283836040516110d9929190613295565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146124a7576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000928352600d60209081526040808520938552929052912055565b3360009081526020819052604090205460ff1661250c576040517ff39650ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a54604080517f4fb85e18000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691634fb85e189160048082019260009290919082900301818387803b15801561257857600080fd5b505af115801561258c573d6000803e3d6000fd5b50506002546040519092507f83a7e21afbe67d7255378f6b4496052f066f91c138d8e5c40602e63fe85f3b429150600090a2565b600082815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281206003810154600290910154610ddc9190613177565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612674576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260076020526040908190208290555182907f8c5a04c32672ff89885a8de60723fe6ed9a293306cca3db58a1667056ebdab8990610f209084815260200190565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612729576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254801580159061274c57506000818152600460205260409020600201544211155b15612783576040517f42be98a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000612790826001613177565b600281905560008181526004602052604090208181554260018201819055919250906127bf906220f580613177565b6002820155600381018490556004810184905560405184815282907f8d160eff266df162107c57259a1f1e71787bd4ab800800826bd189d6f2f3e83c90602001611544565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612874576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166128c1576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f7577407244e1eac6eec66ebaf9dc9ddb86aefcb50adde27d0b89b689f73b292590600090a250565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146129a0576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6127108111156129dc576040517f3bbe051b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c8190556040518181527f585b544b2d9ebfba0b4030c5b12086c7e40b39d2bf7317868b70dad5a8fd06cc90602001611fcf565b8073ffffffffffffffffffffffffffffffffffffffff8116612a5f576040517f04e85d6d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612acf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fba869e26b357347347ed9cc2f9f7c35185ded23c70d83aa3e3f1d339382c7bbd90600090a25050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff163314612baf576040517f63efb71900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c7057825182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602090920191600190910190612c16565b50612c7c929150612cbb565b5090565b828054828255906000526020600020908101928215612c70579160200282015b82811115612c70578251825591602001919060010190612ca0565b5b80821115612c7c5760008155600101612cbc565b803573ffffffffffffffffffffffffffffffffffffffff81168114612cf457600080fd5b919050565b600060208284031215612d0b57600080fd5b610ddc82612cd0565b600060208284031215612d2657600080fd5b5035919050565b60008060408385031215612d4057600080fd5b50508035926020909101359150565b60008060208385031215612d6257600080fd5b823567ffffffffffffffff80821115612d7a57600080fd5b818501915085601f830112612d8e57600080fd5b813581811115612d9d57600080fd5b8660208260051b8501011115612db257600080fd5b60209290920196919550909350505050565b600061016082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151612e438285018215159052565b505092915050565b600081518084526020808501945080840160005b83811015612e7b57815187529582019590820190600101612e5f565b509495945050505050565b602081526000610ddc6020830184612e4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f0f57612f0f612e99565b604052919050565b600067ffffffffffffffff821115612f3157612f31612e99565b5060051b60200190565b600082601f830112612f4c57600080fd5b81356020612f61612f5c83612f17565b612ec8565b82815260059290921b84018101918181019086841115612f8057600080fd5b8286015b84811015612f9b5780358352918301918301612f84565b509695505050505050565b60008060408385031215612fb957600080fd5b823567ffffffffffffffff80821115612fd157600080fd5b818501915085601f830112612fe557600080fd5b81356020612ff5612f5c83612f17565b82815260059290921b8401810191818101908984111561301457600080fd5b948201945b838610156130395761302a86612cd0565b82529482019490820190613019565b9650508601359250508082111561304f57600080fd5b5061305c85828601612f3b565b9150509250929050565b6000806040838503121561307957600080fd5b82359150602083013560ff8116811461309157600080fd5b809150509250929050565b600080604083850312156130af57600080fd5b6130b883612cd0565b946020939093013593505050565b6000806000606084860312156130db57600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561310557600080fd5b61310e83612cd0565b915061311c60208401612cd0565b90509250929050565b6000806040838503121561313857600080fd5b8235915061311c60208401612cd0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082018082111561175357611753613148565b808202811582820484141761175357611753613148565b6000826131d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020815281602082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561324457600080fd5b8260051b80856040850137919091016040019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361328e5761328e613148565b5060010190565b604080825283519082018190526000906020906060840190828701845b828110156132e457815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016132b2565b505050838103828501526132f88186612e4b565b9695505050505050565b62ffffff818116838216028082169190828114612e4357612e43613148565b818103818111156117535761175361314856fea2646970667358221220677831a1627d9ce356899000399e02df7641dc343c974ff8517b9315d85e0a3364736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -1656,7 +1656,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x0F24f5B58B5c9a06305BE1e3a2Ac3CbE46A5eDc4" + "address": "0x0168CbCEBA9A0ff9B5b139a362907FC397aD5077" }, "hardhat": { "artifact": { diff --git a/deployments/FeeCollectorFacet.json b/deployments/FeeCollectorFacet.json index 515ff00..3e2a1d2 100644 --- a/deployments/FeeCollectorFacet.json +++ b/deployments/FeeCollectorFacet.json @@ -30,8 +30,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516019549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220774cf0d06b84ab9ac34a7a54f8fbea51f4647defb8c7192b22d230618d4075f764736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516019549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220774cf0d06b84ab9ac34a7a54f8fbea51f4647defb8c7192b22d230618d4075f764736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106f5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122088191d6b5881117cb4691843d642ef56b771234fa521a416185842af6916da2a64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063238e2b2b1461003b578063b2e07cf414610045575b600080fd5b61004361004d565b005b6100436102fc565b6100586000336105a5565b6000806009018054806020026020016040519081016040528092919081815260200182805480156100bf57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610094575b505083516015549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f657600080601001600086848151811061010a5761010a610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060100160008785815181106101a6576101a6610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061025757610257610608565b6020026020010151836040518363ffffffff1660e01b815260040161029e92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af11580156102bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e19190610637565b505080806102ee90610660565b9150506100e8565b50505050565b6103076000336105a5565b600080600e0180548060200260200160405190810160405280929190818152602001828054801561036e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610343575b505083516017549495509373ffffffffffffffffffffffffffffffffffffffff16925060009150505b828110156102f65760008060100160008684815181106103b9576103b9610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600080601001600087858151811061045557610455610608565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb86848151811061050657610506610608565b6020026020010151836040518363ffffffff1660e01b815260040161054d92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020604051808303816000875af115801561056c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105909190610637565b5050808061059d90610660565b915050610397565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020839052604090205460ff16610604576040517f2c52e07400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561064957600080fd5b8151801515811461065957600080fd5b9392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036106b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea264697066735822122088191d6b5881117cb4691843d642ef56b771234fa521a416185842af6916da2a64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -40,7 +40,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x115A70C959aabCD71ac2086940985Aeb1e1a6BbF" + "address": "0xB5400eea2aCAAAAB8C7Ba4b0e20df92Eb645bACe" }, "hardhat": { "artifact": { diff --git a/deployments/FujiMigrationInit.json b/deployments/FujiMigrationInit.json new file mode 100644 index 0000000..13c676e --- /dev/null +++ b/deployments/FujiMigrationInit.json @@ -0,0 +1,66 @@ +{ + "fuji": { + "artifact": { + "_format": "hh-sol-artifact-1", + "contractName": "FujiMigrationInit", + "sourceName": "src/upgradeInitializers/FujiMigrationInit.sol", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "address[]", + "name": "unlockFeeReceivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "unlockFeeReceiversShares", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "boostFeeReceivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "boostFeeReceiversShares", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "miningPassFeeReceivers", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "miningPassFeeReceiversShares", + "type": "uint256[]" + } + ], + "internalType": "struct FujiMigrationInit.Args", + "name": "_args", + "type": "tuple" + } + ], + "name": "init", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061123e806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e45b49bf14610030575b600080fd5b61004361003e366004611059565b610045565b005b601954601a54601b54601c54601d54601e5473ffffffffffffffffffffffffffffffffffffffff86166100ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f46756a694d6967726174696f6e3a206465706f736974546f6b656e206973207a60448201527f65726f000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661017c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f46756a694d6967726174696f6e3a20666565546f6b656e206973207a65726f0060448201526064016100f6565b856015558460165583601755826018558160195580601a556000601b556000601d556000601e556101ae600960009055565b6000600a5560005b875151811015610285578751805160099190839081106101d8576101d861117a565b602090810291909101810151825460018101845560009384529282902090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091558801518051600a9190839081106102545761025461117a565b602090810291909101810151825460018101845560009384529190922001558061027d816111a9565b9150506101b6565b506000600e556000600f5560005b876040015151811015610367576000600e01886040015182815181106102bb576102bb61117a565b60209081029190910181015182546001810184556000938452919092200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560608801518051600f9190839081106103365761033661117a565b602090810291909101810151825460018101845560009384529190922001558061035f816111a9565b915050610293565b506000601355600060145560005b8760800151518110156104495760006013018860800151828151811061039d5761039d61117a565b60209081029190910181015182546001810184556000938452919092200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560a0880151805160149190839081106104185761041861117a565b6020908102919091018101518254600181018455600093845291909220015580610441816111a9565b915050610375565b505060007f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78190556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b552819055620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628819055621e84807f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff819055623d09007f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f175585819055627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e781905562e4e1c07ffb9ce45064c7e7d9bf9deb4750ba7c94ab3d6e7418c5d76bf69966d39a9d42f68190556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c8190556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f81905563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa38190556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b8190557f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea8b90557f9fafca4c9c0d5c2cbf85f49fd8ab8212430ce78c2a0cb75b51e0f9c4f9ace003999099557f1dd2f4b94a51cfb409e6e317a497f7cfd9013960a1c723f830c49c05a25f08a5979097557f804a3d0621e73505f5f0c57c922f3e57d6b48e175551184eb12f80d7b4a9c7838690557fa952f8c0f40734b22d2328e0f7ff57eeffee78885b9cf2147ff941cc37e1c86e8590557fb48400cb19cf39e58355a7c9fd856f9b5b7298c53856a6766c6b39755ccafa79939093557ff5ddd0b8f160eab91dc4f82b50a485a96cf6ab0bfb38460d73171763afb6d5cf919091557f6fa0adbc19babfec7e85ff6417830cdb284ababb3de438515569d7f3d9b34931557f90dc0d05fc750d51b3e484087edb4e9beb1a58b38bc8386c0e048690482d89ed557fd39da6ede46e21e407297cf3ef5dc00c802e94eec4797dd3572940f5a025af20929092557f982dbf30ed444b538a358f088254f617250b1fe62040b333c0dc2be6831044eb9290925569010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb9557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e556109c4601c9081556101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f7556105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88490557fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c92909255622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd720557fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd75560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a45560167fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a84557f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd05560187f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e655601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259505560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a5560407f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469055605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f0556003905250507fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd2149602052505060917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069555050600a600b55565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610ef757610ef7610ea5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f4457610f44610ea5565b604052919050565b600067ffffffffffffffff821115610f6657610f66610ea5565b5060051b60200190565b600082601f830112610f8157600080fd5b81356020610f96610f9183610f4c565b610efd565b82815260059290921b84018101918181019086841115610fb557600080fd5b8286015b84811015610ff357803573ffffffffffffffffffffffffffffffffffffffff81168114610fe65760008081fd5b8352918301918301610fb9565b509695505050505050565b600082601f83011261100f57600080fd5b8135602061101f610f9183610f4c565b82815260059290921b8401810191818101908684111561103e57600080fd5b8286015b84811015610ff35780358352918301918301611042565b60006020828403121561106b57600080fd5b813567ffffffffffffffff8082111561108357600080fd5b9083019060c0828603121561109757600080fd5b61109f610ed4565b8235828111156110ae57600080fd5b6110ba87828601610f70565b8252506020830135828111156110cf57600080fd5b6110db87828601610ffe565b6020830152506040830135828111156110f357600080fd5b6110ff87828601610f70565b60408301525060608301358281111561111757600080fd5b61112387828601610ffe565b60608301525060808301358281111561113b57600080fd5b61114787828601610f70565b60808301525060a08301358281111561115f57600080fd5b61116b87828601610ffe565b60a08301525095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207c493404e2cdc6925dfa6f36de27d81d4380ca4bc48b6b426abb62a256a6b77564736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063e45b49bf14610030575b600080fd5b61004361003e366004611059565b610045565b005b601954601a54601b54601c54601d54601e5473ffffffffffffffffffffffffffffffffffffffff86166100ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f46756a694d6967726174696f6e3a206465706f736974546f6b656e206973207a60448201527f65726f000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661017c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f46756a694d6967726174696f6e3a20666565546f6b656e206973207a65726f0060448201526064016100f6565b856015558460165583601755826018558160195580601a556000601b556000601d556000601e556101ae600960009055565b6000600a5560005b875151811015610285578751805160099190839081106101d8576101d861117a565b602090810291909101810151825460018101845560009384529282902090920180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909316929092179091558801518051600a9190839081106102545761025461117a565b602090810291909101810151825460018101845560009384529190922001558061027d816111a9565b9150506101b6565b506000600e556000600f5560005b876040015151811015610367576000600e01886040015182815181106102bb576102bb61117a565b60209081029190910181015182546001810184556000938452919092200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560608801518051600f9190839081106103365761033661117a565b602090810291909101810151825460018101845560009384529190922001558061035f816111a9565b915050610293565b506000601355600060145560005b8760800151518110156104495760006013018860800151828151811061039d5761039d61117a565b60209081029190910181015182546001810184556000938452919092200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560a0880151805160149190839081106104185761041861117a565b6020908102919091018101518254600181018455600093845291909220015580610441816111a9565b915050610375565b505060007f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78190556207a1207f17bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b552819055620f42407f08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c628819055621e84807f9bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff819055623d09007f251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f175585819055627a12007fc550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e781905562e4e1c07ffb9ce45064c7e7d9bf9deb4750ba7c94ab3d6e7418c5d76bf69966d39a9d42f68190556301c9c3807f98ae0176de2844d118e1a6decfe92f97691bedbc578c71fc8d5c4374be77e50c8190556302faf0807f5fae251ae169e8e40026ce4ce85a026bc3adcccdc8459be361195e4cd924077f81905563047868c07ff53d7d0eac8d4a28c5e36c803b226f3ef35ce8ff0302108a97c0d862a51c6fa38190556305f5e1007f28819bbfa35988de500160af3ee4d060ea4da2d0fc4b680f9032b1bba4c6604b8190557f584f46c60af19681376031579adb04a2416e54ee5505351c2a8435e3766026ea8b90557f9fafca4c9c0d5c2cbf85f49fd8ab8212430ce78c2a0cb75b51e0f9c4f9ace003999099557f1dd2f4b94a51cfb409e6e317a497f7cfd9013960a1c723f830c49c05a25f08a5979097557f804a3d0621e73505f5f0c57c922f3e57d6b48e175551184eb12f80d7b4a9c7838690557fa952f8c0f40734b22d2328e0f7ff57eeffee78885b9cf2147ff941cc37e1c86e8590557fb48400cb19cf39e58355a7c9fd856f9b5b7298c53856a6766c6b39755ccafa79939093557ff5ddd0b8f160eab91dc4f82b50a485a96cf6ab0bfb38460d73171763afb6d5cf919091557f6fa0adbc19babfec7e85ff6417830cdb284ababb3de438515569d7f3d9b34931557f90dc0d05fc750d51b3e484087edb4e9beb1a58b38bc8386c0e048690482d89ed557fd39da6ede46e21e407297cf3ef5dc00c802e94eec4797dd3572940f5a025af20929092557f982dbf30ed444b538a358f088254f617250b1fe62040b333c0dc2be6831044eb9290925569010f0cf064dd592000007f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b5569021e19e0c9bab24000007f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a35569054b40b1f852bda000007f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b255690cb49b44ba602d8000007f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a55691fc3842bd1f071c000007fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe05355694a1d89bb94865ec000007f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267465569a968163f0a57b40000007f1223f9031f9dca49a7844c397098ce9a4e80513444d0a8bb59820dff564808e4556a017d2a320dd745550000007f724fd36bd271795fe7866d4cc83b61084ef704502b00c2e0b28047123b3c1acc556a03b8e97d229a2d548000007f855d8d6df66418fea944661cfca175a2245b01f09908f1f662c4fa2b3cbf9299556a09ed194db19b238c0000007fb9bfc87ab6d50430c17fad3d76aa4e9fce5cb9f8a8035e5ad64505fa1e31bdb9557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f4d862627e71449ad0902e42fb445c6fefb557d066705175da90fdc325bd76e4e556109c4601c9081556101f47f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df556102267fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8285561028a7fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d556103207f3be6fd20d5acfde5b873b48692cd31f4d3c7e8ee8a813af4696af8859e5ca6c6556103e87fb805995a7ec585a251200611a61d179cfd7fb105e1ab17dc415a7336783786f7556105dc7fbcdda56b5d08466ec462cbbe0adfa57cb0a15fcc8940ef68f702f21b787bc935557f13649b2456f1b42fef0f0040b3aaeabcd21a76a0f3f5defd4f583839455116e88490557fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c92909255622dc6c07f5d6016397a73f5e079297ac5a36fef17b4d9c3831618e63ab105738020ddd720557fc0da782485e77ae272268ae0a3ff44c1552ecb60b3743924de17a815e0a3cfd75560147fab4c5e6d94bd05a4bc56bf86e345985172e352a45f60387bc2e75a915e3a19c25560197fb160a7406e28258be08ad805a9afb846e1966a5cc82707dbcb44ed395fc389ee5560217fb9d46844e5f44943022fede37b711babdd9de39af3cab9490ab8d63ad17d130255602d7f8766d65f062c0ef4ef6d0904498fe293d275999dda7c3b2e86c36355a8ea1b435560417f6bd412ebfcfbe461c4e41627a59fac53c3ee2838a97c6c8dc311b4befcba70b05560647f365c87aa32fc67fa1b489401a5319dac0c7fc06537637ee675387949979ee4a45560167fc60e777e3969e7af65eb621b710e8488643506f977562c73dba103cb35b15a84557f9786f677b3dff6c36ad0d47ef13860fd51b928c112d9702e0dea2fe690bf6ec181905560257f332275a058505107a86f8909487584ee26365a1ad866fdfd7d0ca217736986ed5560337fa4b2ae645069b0fe342e4873e7f3a2b47b2e1410299f64d1a1b2c9313380bac855604a7f6868be3980be7fd972596ca506cada9b78aca12a9006443b1916ce784f8ef8a85560737f258b311fdbc5b9406bebc411e3db4e8c24ddc70cdf726f12e2420e8e40199cd05560187f162e617daa896dc1c65340fbda9b95c9bb6b9cfad93eb872e620003a70b983e655601e7f54bf5bc4b2226bde4cc3e74a9ec72288325c7fa9a62e34b6f2e529209d79e0fb5560287f43a1014b6961384d1120382c968e1e5a446fd730c5b0be82a93447b93d8c57805560377fdf907ee502102e7c62cec3210e3216baba694172f98d9878eb35ef1bec0d16b05560517f84e722789c62b0dc97803f3d1dab51fd1ef82b0c463751f13b5ecc891f27158a55607d7fccc637506da1a634040c39851816cdc15ec8706fd5bb5cf030e32f3b5707e00d557f0dd4cabb2db0650ac03dd3096f485c7efdbe2df7a48b0f8f9417f21da11259505560237fca689a1f7db89b8710c79c63830a1317054bd8ec2ee851f1b33a21b2a41ae4f955602f7fb963a2cc96831b7d1bee11154ddec13c7b5e8ac05c70661c4538de70ac16a32a5560407f453e2823e0c78b590eaeddf7807d57c263c48a0a3d13054dd8d170a8a0b5469055605e7f11a6df99eada7208f7aa93e8b6930faa7431d65501c040d3866253a695b946f0556003905250507fa5049387d9cb649c59f4bda666105ba636c2a103d8e2b232ba4d125737cd2149602052505060917fbbc468684b2defec2483a9f49b2b0f348612729be8edbbf8dd3b2247da7f4069555050600a600b55565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715610ef757610ef7610ea5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610f4457610f44610ea5565b604052919050565b600067ffffffffffffffff821115610f6657610f66610ea5565b5060051b60200190565b600082601f830112610f8157600080fd5b81356020610f96610f9183610f4c565b610efd565b82815260059290921b84018101918181019086841115610fb557600080fd5b8286015b84811015610ff357803573ffffffffffffffffffffffffffffffffffffffff81168114610fe65760008081fd5b8352918301918301610fb9565b509695505050505050565b600082601f83011261100f57600080fd5b8135602061101f610f9183610f4c565b82815260059290921b8401810191818101908684111561103e57600080fd5b8286015b84811015610ff35780358352918301918301611042565b60006020828403121561106b57600080fd5b813567ffffffffffffffff8082111561108357600080fd5b9083019060c0828603121561109757600080fd5b61109f610ed4565b8235828111156110ae57600080fd5b6110ba87828601610f70565b8252506020830135828111156110cf57600080fd5b6110db87828601610ffe565b6020830152506040830135828111156110f357600080fd5b6110ff87828601610f70565b60408301525060608301358281111561111757600080fd5b61112387828601610ffe565b60608301525060808301358281111561113b57600080fd5b61114787828601610f70565b60808301525060a08301358281111561115f57600080fd5b61116b87828601610ffe565b60a08301525095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611201577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207c493404e2cdc6925dfa6f36de27d81d4380ca4bc48b6b426abb62a256a6b77564736f6c63430008120033", + "linkReferences": {}, + "deployedLinkReferences": {} + }, + "options": { + "args": [], + "log": true, + "skipIfAlreadyDeployed": false + }, + "address": "0x94d336eDC9D2ee62071398ec1979fa91B3fE451A" + } +} \ No newline at end of file diff --git a/deployments/MiningPassFacet.json b/deployments/MiningPassFacet.json index 874f904..36068e4 100644 --- a/deployments/MiningPassFacet.json +++ b/deployments/MiningPassFacet.json @@ -118,8 +118,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061091b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601954600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060195490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea264697066735822122040e9f993341ab255cf589a16f2bfcfc747fbe9f7437ee081ec4668700b5f570264736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601954600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060195490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea264697066735822122040e9f993341ab255cf589a16f2bfcfc747fbe9f7437ee081ec4668700b5f570264736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b5061091b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601754600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060175490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea26469706673582212209cd60a8d873556a41d6cea9fce1dc13de50ca47957d24f39f46be2ca442b5b5e64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063675f4b7614610046578063efef39a11461006c578063fe315a1314610081575b600080fd5b61005961005436600461076f565b610166565b6040519081526020015b60405180910390f35b61007f61007a366004610799565b6102c5565b005b61015161008f3660046107b2565b60028054600090815260056020818152604080842073ffffffffffffffffffffffffffffffffffffffff909616845294815284832085516101608101875281548152600182015481840152948101548587015260038101546060860152600481015460808601529182015460a0850152600682015460c0850152600782015460e0850152600882015461010085015260098201546101208501819052600a9092015460ff16151561014090940193909352808252601290925291909120549091565b60408051928352602083019190915201610063565b6000818152601160209081526040808320546002548085526005845282852073ffffffffffffffffffffffffffffffffffffffff88168652845282852081865260049094529184209092908515806101c2575081600901548611155b806101cb575083155b15610202576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600982015460009081526011602052604090205461022090856107fc565b94504281600201541161025f576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6212750081600101544261027391906107fc565b1061028a5761028360028661080f565b94506102bb565b62093a8081600101544261029e91906107fc565b106102bb576102ae60048661080f565b6102b890866107fc565b94505b5050505092915050565b600081815260116020908152604080832054601754600254808652600585528386203387528552838620818752600490955292909420909373ffffffffffffffffffffffffffffffffffffffff169290851580610326575081600901548611155b8061032f575084155b15610366576040517f5e8e11d200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428160020154116103a3576040517fbf9dd13500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006103af3388610166565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150819073ffffffffffffffffffffffffffffffffffffffff8716906370a0823190602401602060405180830381865afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610442919061084a565b101561047a576040517f0289a60100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104838161056a565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810182905273ffffffffffffffffffffffffffffffffffffffff8616906323b872dd906064016020604051808303816000875af11580156104fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105209190610863565b50600983018790556040518181528790339086907fea32e0bbe6b44ae07c7113eff6123c3921029d514dc3383bfd3868da45f4f4049060200160405180910390a450505050505050565b6000806013018054806020026020016040519081016040528092919081815260200182805480156105d157602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116105a6575b5050505050905060008060140180548060200260200160405190810160405280929190818152602001828054801561062857602002820191906000526020600020905b815481526020019060010190808311610614575b505050505090506000825190508151811461066f576040517fac9b143300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8181101561071d57600061069f868584815181106106925761069261088c565b6020026020010151610724565b905080600060100160008785815181106106bb576106bb61088c565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff9081168352828201939093526040918201600090812060175490941681529290528120805490919061070f9084906108bb565b909155505050600101610672565b5050505050565b600061271061073383856108ce565b61073d919061080f565b90505b92915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076a57600080fd5b919050565b6000806040838503121561078257600080fd5b61078b83610746565b946020939093013593505050565b6000602082840312156107ab57600080fd5b5035919050565b6000602082840312156107c457600080fd5b61073d82610746565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610740576107406107cd565b600082610845577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561085c57600080fd5b5051919050565b60006020828403121561087557600080fd5b8151801515811461088557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80820180821115610740576107406107cd565b8082028115828204841417610740576107406107cd56fea26469706673582212209cd60a8d873556a41d6cea9fce1dc13de50ca47957d24f39f46be2ca442b5b5e64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -128,7 +128,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x51bdc4B651764384cC94772EE75858Ef80Df046B" + "address": "0x7707CB0e555B586b68ed7755119c44097B254a5B" }, "hardhat": { "artifact": { diff --git a/deployments/PausationFacet.json b/deployments/PausationFacet.json index 3c2c27f..5623e67 100644 --- a/deployments/PausationFacet.json +++ b/deployments/PausationFacet.json @@ -48,8 +48,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220993ab0929e9f4f1176ab40db2b06179c0bd75f2e98859abbabcd45fda7e0afa364736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea2646970667358221220993ab0929e9f4f1176ab40db2b06179c0bd75f2e98859abbabcd45fda7e0afa364736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506101f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea264697066735822122048c00e892039cbb877d12613e91dbdfff7db65200a90d247cfe305508a8f0d5d64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80633f4ba83a146100465780635c975abb146100505780638456cb591461006a575b600080fd5b61004e610072565b005b60015460ff16604051901515815260200160405180910390f35b61004e6100e0565b61007a610151565b60015460ff166100b6576040517f73445b0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b6100e8610151565b60015460ff1615610125576040517f7859166400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681179055565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c13205473ffffffffffffffffffffffffffffffffffffffff1633146101c1576040517fe1d7449900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b56fea264697066735822122048c00e892039cbb877d12613e91dbdfff7db65200a90d247cfe305508a8f0d5d64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -58,7 +58,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0xC307958eFE78D781ec1B4E3B96FfAb7E33C6ac24" + "address": "0x71132573F9480373137d51441e5f58e99ad1809B" }, "hardhat": { "artifact": { diff --git a/deployments/UnlockFacet.json b/deployments/UnlockFacet.json index 3099f65..539134a 100644 --- a/deployments/UnlockFacet.json +++ b/deployments/UnlockFacet.json @@ -83,8 +83,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601754909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220518c44086e5ed5c7474cae50e537dd7b66d2f0f520948168b90a10d70015f3eb64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b601a8201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601754909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220518c44086e5ed5c7474cae50e537dd7b66d2f0f520948168b90a10d70015f3eb64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b506106b7806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220477d4373b6c48b4829062b0eb1c53fcd5327c3a0ca83a3fb05f7785c2017860f64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c80636198e3391461003b5780636e99d52f14610050575b600080fd5b61004e610049366004610579565b61006c565b005b61005a6203f48081565b60405190815260200160405180910390f35b6002805460008181526005602090815260408083203384528252808320848452600490925290912092830154600782015492939192156100d8576040517fc7c233de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8254851115610113576040517f3731776200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61011f85828585610248565b6000808061012e6000336102e5565b60ff1691509150811561014d5760008181526007602052604090205492505b600654600061015c8a8361039d565b9050610167816103bf565b60006127106101796203f480886105c1565b61018391906105d8565b6101906203f48042610613565b61019a9190610626565b90508681106101d5576040517ff1ddec3900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101df828c610626565b8960060160008282546101f29190610613565b909155505060078901819055604080518c81526020810184905233918c917f264527c9df24015c81d07cee6ed0aaa3cb7dae31d37f68c16c15c9f8f89fba7b910160405180910390a35050505050505050505050565b6000620151806102584286610626565b61026291906105d8565b9050848360000160008282546102789190610626565b90915550610288905081866105c1565b83600201600082825461029b9190610626565b92505081905550848260050160008282546102b69190610626565b909155506102c6905081866105c1565b8260070160008282546102d99190610626565b90915550505050505050565b60188201546040517f773c02d400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116600483015260009283929116908290829063773c02d490602401602060405180830381865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103839190610639565b905080156103945760019350600092505b50509250929050565b60006127106103ac83856105c1565b6103b691906105d8565b90505b92915050565b60008060090180548060200260200160405190810160405280929190818152602001828054801561042657602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116103fb575b50505050509050600080600a0180548060200260200160405190810160405280929190818152602001828054801561047d57602002820191906000526020600020905b815481526020019060010190808311610469575b50505050509050600082519050815181146104c4576040517f8867301300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156105725760006104f4868584815181106104e7576104e7610652565b602002602001015161039d565b9050806000601001600087858151811061051057610510610652565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409182016000908120601554909416815292905281208054909190610564908490610613565b9091555050506001016104c7565b5050505050565b60006020828403121561058b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176103b9576103b9610592565b60008261060e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808201808211156103b9576103b9610592565b818103818111156103b9576103b9610592565b60006020828403121561064b57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220477d4373b6c48b4829062b0eb1c53fcd5327c3a0ca83a3fb05f7785c2017860f64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -93,7 +93,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x60B3cd74058FE140a6D3EE244A3D77a50d100572" + "address": "0x98c7d936A6a130D1828E437F63e1b9b9F1432f6F" }, "hardhat": { "artifact": { diff --git a/deployments/WithdrawFacet.json b/deployments/WithdrawFacet.json index f7a7198..dd45973 100644 --- a/deployments/WithdrawFacet.json +++ b/deployments/WithdrawFacet.json @@ -48,8 +48,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220e55ccbbe089f538220d6f8c0201126a45b6901bf9a007237645bc76ed1c429bb64736f6c63430008120033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556017546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220e55ccbbe089f538220d6f8c0201126a45b6901bf9a007237645bc76ed1c429bb64736f6c63430008120033", + "bytecode": "0x608060405234801561001057600080fd5b50610245806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220bf44f602101812b7bc331d9ec9d05b2a3e29b2843d79798f0ea678b6f5a1465c64736f6c63430008120033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80636fcd112b14610030575b600080fd5b61003861003a565b005b33600081815260086020908152604080832054808452600583528184208585529092528220600681015460078201549293919290918290036100a8576040517f1138da8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b428111156100e2576040517f6a3fb10500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006006840181905560078401556015546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af1158015610169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061018d91906101e6565b508473ffffffffffffffffffffffffffffffffffffffff16847fb43a979cf5312add838538436575cdc00ab42ae32fed507f6447ec4658acbe85846040516101d791815260200190565b60405180910390a35050505050565b6000602082840312156101f857600080fd5b8151801515811461020857600080fd5b939250505056fea2646970667358221220bf44f602101812b7bc331d9ec9d05b2a3e29b2843d79798f0ea678b6f5a1465c64736f6c63430008120033", "linkReferences": {}, "deployedLinkReferences": {} }, @@ -58,7 +58,7 @@ "log": true, "skipIfAlreadyDeployed": true }, - "address": "0x0be993dA67E862da6179640aDEBEE36dc4C028F9" + "address": "0xE005C7d028Cb8041163330f2A123197aEfC50361" }, "hardhat": { "artifact": { diff --git a/hardhat.config.ts b/hardhat.config.ts index 32d6593..7ba3b11 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -12,6 +12,7 @@ import './tasks/season' import './tasks/startSeason' import './tasks/diamondInfo' import './tasks/admin' +import './tasks/updateMiningPassFees' import { formatUnits, parseUnits } from 'ethers' diff --git a/scripts/migrateFuji.ts b/scripts/migrateFuji.ts new file mode 100644 index 0000000..b3d2623 --- /dev/null +++ b/scripts/migrateFuji.ts @@ -0,0 +1,120 @@ +import { ethers, network } from 'hardhat' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { deployContract } from '../utils/deployContract' +import { addOrReplaceFacets } from '../utils/diamond' +import getFacets from '../utils/getFacets' +import { addresses, ChainId } from '../config/addresses' +import { BURN_WALLET } from '../config/constants' + +/** + * Fuji Migration Script + * + * Mirrors exactly what the fork test's `_upgradeAndMigrate()` does: + * 1. Deploy FujiMigrationInit + * 2. Deploy all facets (except DiamondCutFacet & DiamondLoupeFacet) + * 3. Encode init(Args) with real Fuji fee receiver addresses + * 4. Call addOrReplaceFacets with the init contract + calldata + * + * The migration initializer: + * - Reads GENERAL scalars from old Fuji slots 25-30 + * - Writes them to production slots 21-26 + * - Re-initializes all mapping/array config data + * + * Usage: + * yarn hardhat run --network fuji scripts/migrateFuji.ts + */ +async function main() { + if (network.name !== 'fuji') { + throw new Error( + `This script is ONLY for fuji. Current network: ${network.name}` + ) + } + + const CHAIN_ID = ChainId.AVALANCHE_TESTNET.toString() + + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + + console.log(`šŸ’Ž Diamond address: ${diamondAddress}`) + console.log(`šŸ“” Network: ${network.name}`) + + // ─── 1. Deploy FujiMigrationInit ─── + console.log('\n1ļøāƒ£ Deploying FujiMigrationInit...') + const migrationInit = await deployContract('FujiMigrationInit', { + args: [], + log: true, + skipIfAlreadyDeployed: false, // always deploy fresh + }) + const migrationInitAddress = await migrationInit.getAddress() + console.log(` FujiMigrationInit deployed at: ${migrationInitAddress}`) + + // ─── 2. Deploy all facets ─── + console.log('\n2ļøāƒ£ Deploying facets...') + const FacetNames = getFacets(['DiamondCutFacet', 'DiamondLoupeFacet']) + console.log(` Facets to deploy: ${FacetNames.join(', ')}`) + + const Facets = [] + for (const name of FacetNames) { + Facets.push(await deployContract(name)) + } + + // ─── 3. Build migration init calldata ─── + console.log('\n3ļøāƒ£ Building migration init calldata...') + + // Real Fuji fee receiver addresses (same as DiamondInit / deployDiamond.ts) + const labsMultisig = addresses.teamMultisig[CHAIN_ID] + const replenishmentPool = addresses.vpndReplenishmentPool[CHAIN_ID] + const xVAPE = addresses.xVAPE[CHAIN_ID] + const passport = addresses.passportPool[CHAIN_ID] + + console.log(` labsMultisig: ${labsMultisig}`) + console.log(` replenishmentPool: ${replenishmentPool}`) + console.log(` xVAPE: ${xVAPE}`) + console.log(` passport: ${passport}`) + console.log(` burnWallet: ${BURN_WALLET}`) + + // Match DiamondInit.sol fee receiver structure exactly + const migrationArgs = { + // Unlock: replenishmentPool 80%, labsMultisig 10%, burnWallet 10% + unlockFeeReceivers: [replenishmentPool, labsMultisig, BURN_WALLET], + unlockFeeReceiversShares: [8000, 1000, 1000], + // Boost: labsMultisig 60%, xVAPE 30%, passport 10% + boostFeeReceivers: [labsMultisig, xVAPE, passport], + boostFeeReceiversShares: [6000, 3000, 1000], + // Mining pass: xVAPE 65%, labsMultisig 30%, passport 5% + miningPassFeeReceivers: [xVAPE, labsMultisig, passport], + miningPassFeeReceiversShares: [6500, 3000, 500], + } + + const initCalldata = migrationInit.interface.encodeFunctionData('init', [ + migrationArgs, + ]) + + console.log(` Calldata length: ${initCalldata.length} chars`) + + // ─── 4. Execute diamondCut with migration init ─── + console.log('\n4ļøāƒ£ Executing diamondCut (addOrReplaceFacets + migration init)...') + await addOrReplaceFacets( + Facets, + diamondAddress, + migrationInitAddress, + initCalldata, + undefined // no Safe — direct EOA tx + ) + + console.log('\nāœ… Fuji migration complete!') + console.log( + ' Storage has been migrated from 14f06c0 layout to production layout.' + ) + console.log( + ' All facets replaced and mapping/array data re-initialized.' + ) +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error('āŒ Migration failed:', error) + process.exit(1) + }) diff --git a/tasks/updateMiningPassFees.ts b/tasks/updateMiningPassFees.ts new file mode 100644 index 0000000..50ce69c --- /dev/null +++ b/tasks/updateMiningPassFees.ts @@ -0,0 +1,104 @@ +import { task } from 'hardhat/config' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { logTx } from '../utils' + +const REFERENCE_VAPE_PRICE = 0.606 +const FLOOR_BPS = 2500 // 25% +const NUM_TIERS = 11 + +async function fetchVAPEPrice(): Promise { + const response = await fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' + ) + const data = (await response.json()) as { vaporfi?: { usd?: number } } + const price = data.vaporfi?.usd + if (!price) throw new Error('Failed to fetch VAPE price from CoinGecko') + return price +} + +function calculateDynamicFees( + baseFees: bigint[], + vapePrice: number, + floorBps: number +): bigint[] { + const multiplierBps = Math.floor((vapePrice / REFERENCE_VAPE_PRICE) * 10000) + + return baseFees.map((baseFee) => { + const floorFee = (baseFee * BigInt(floorBps)) / 10000n + const dynamicFee = (baseFee * BigInt(multiplierBps)) / 10000n + return dynamicFee > floorFee ? dynamicFee : floorFee + }) +} + +task( + 'mining-pass:update-fees', + 'Update mining pass fees based on current VAPE price' +) + .addOptionalParam('vapePrice', 'Override VAPE price (USD) instead of fetching') + .addFlag('dryRun', 'Print what would happen without sending transactions') + .setAction(async ({ vapePrice, dryRun }, { ethers, network }) => { + const diamondAddress = + LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] + .address + + const DiamondManagerFacet = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + // ── 1. Fetch VAPE price ────────────────────────────────────────── + const currentVAPEPrice = vapePrice + ? parseFloat(vapePrice) + : await fetchVAPEPrice() + + console.log(`\nšŸ’° VAPE Price: $${currentVAPEPrice.toFixed(4)}`) + console.log( + `šŸ“ Multiplier: ${((currentVAPEPrice / REFERENCE_VAPE_PRICE) * 100).toFixed(1)}% of reference ($${REFERENCE_VAPE_PRICE})` + ) + + // ── 2. Read base fees from contract ────────────────────────────── + const baseFees: bigint[] = [] + for (let i = 0; i < NUM_TIERS; i++) { + const fee = await DiamondManagerFacet.getBaseMiningPassTierFee(i) + baseFees.push(fee) + } + + // ── 3. Read current fees from contract ─────────────────────────── + const currentFees: bigint[] = [] + for (let i = 0; i < NUM_TIERS; i++) { + const fee = await DiamondManagerFacet.getMiningPassTierFee(i) + currentFees.push(fee) + } + + // ── 4. Calculate dynamic fees ──────────────────────────────────── + const dynamicFees = calculateDynamicFees( + baseFees, + currentVAPEPrice, + FLOOR_BPS + ) + + console.log('\nšŸ“‹ Mining Pass Fee Update:') + console.log('Tier | Base Fee ($) | Current ($) | New Fee ($) | Change') + console.log('-----|-------------|-------------|-------------|-------') + for (let i = 0; i < NUM_TIERS; i++) { + const base = Number(baseFees[i]) / 1e6 + const current = Number(currentFees[i]) / 1e6 + const dynamic = Number(dynamicFees[i]) / 1e6 + const change = + base > 0 ? `${(((dynamic - base) / base) * 100).toFixed(0)}%` : '-' + console.log( + ` ${i.toString().padStart(2)} | ${base.toFixed(2).padStart(11)} | ${current.toFixed(2).padStart(11)} | ${dynamic.toFixed(2).padStart(11)} | ${change}` + ) + } + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + // ── 5. Update mining pass fees ─────────────────────────────────── + console.log('\nā³ Updating mining pass fees...') + const feesTx = await DiamondManagerFacet.setMiningPassFees(dynamicFees) + await logTx(feesTx) + console.log('āœ… Mining pass fees updated') + }) From 0194c6c4c2783f11151f8867a9a2bdb3e0ade797 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Wed, 25 Feb 2026 20:36:06 +0530 Subject: [PATCH 30/34] chore: clean tests --- test/foundry/fork/FujiForkMiningPass.t.sol | 191 +++++++-------------- 1 file changed, 58 insertions(+), 133 deletions(-) diff --git a/test/foundry/fork/FujiForkMiningPass.t.sol b/test/foundry/fork/FujiForkMiningPass.t.sol index 1335fa0..44b3f0b 100644 --- a/test/foundry/fork/FujiForkMiningPass.t.sol +++ b/test/foundry/fork/FujiForkMiningPass.t.sol @@ -3,31 +3,15 @@ pragma solidity 0.8.18; import "forge-std/Test.sol"; import {IERC20} from "openzeppelin/contracts/token/ERC20/IERC20.sol"; -import {IDiamondCut} from "clouds/interfaces/IDiamondCut.sol"; import {IDiamondLoupe} from "clouds/interfaces/IDiamondLoupe.sol"; import {DiamondManagerFacet} from "src/facets/DiamondManagerFacet.sol"; import {MiningPassFacet} from "src/facets/MiningPassFacet.sol"; -import {BoostFacet} from "src/facets/BoostFacet.sol"; -import {DepositFacet} from "src/facets/DepositFacet.sol"; -import {ClaimFacet} from "src/facets/ClaimFacet.sol"; -import {UnlockFacet} from "src/facets/UnlockFacet.sol"; -import {WithdrawFacet} from "src/facets/WithdrawFacet.sol"; -import {FeeCollectorFacet} from "src/facets/FeeCollectorFacet.sol"; -import {AuthorizationFacet} from "src/facets/AuthorizationFacet.sol"; -import {PausationFacet} from "src/facets/PausationFacet.sol"; -import {FujiMigrationInit} from "src/upgradeInitializers/FujiMigrationInit.sol"; /// @title FujiForkMiningPassTest -/// @notice Fork test against the real Fuji diamond to verify the storage -/// migration from the 14f06c0 layout to the production layout. -/// -/// Fuji was deployed at commit 14f06c0 which placed GENERAL fields -/// (depositToken, rewardToken, feeToken) at slots 25-27. Production -/// has them at slots 21-23. -/// -/// The migration initializer reads scalars from old slots 25-30, -/// writes them to production slots 21-26, then re-initializes all -/// mapping/array config data that moved between slot numbers. +/// @notice Post-migration fork tests against the live Fuji diamond. +/// Verifies that the storage layout matches production (GENERAL at +/// slots 21-26), dynamic pricing getters work, and mining pass +/// purchases use USDC (not VPND). contract FujiForkMiningPassTest is Test { // ──── Real Fuji addresses ──── address constant DIAMOND = 0xEd98549D4dE52811b3b417A717E3d74AC90F9Ffe; @@ -56,76 +40,77 @@ contract FujiForkMiningPassTest is Test { } // ═══════════════════════════════════════════════════════════════════ - // PRE-MIGRATION STORAGE CHECK + // STORAGE SLOT VERIFICATION // ═══════════════════════════════════════════════════════════════════ - /// @notice Confirm that on-chain Fuji storage has GENERAL fields at - /// the OLD 14f06c0 slots (25-28), not production slots (21-24). - function test_Fork_PreMigration_OldSlotLayout() public { - // Old Fuji 14f06c0 layout: GENERAL at slots 25-28 - address slot25 = _readAddress(25); - address slot26 = _readAddress(26); - address slot27 = _readAddress(27); - address slot28 = _readAddress(28); - - console.log("Pre-migration (old Fuji slots 25-28):"); - console.log(" slot 25:", slot25); - console.log(" slot 26:", slot26); - console.log(" slot 27:", slot27); - console.log(" slot 28:", slot28); - - assertEq(slot25, VPND, "old slot 25 should be VPND (depositToken)"); - assertEq(slot26, VAPE, "old slot 26 should be VAPE (rewardToken)"); - assertEq(slot27, USDC, "old slot 27 should be USDC (feeToken)"); - assertEq(slot28, STRATOSPHERE, "old slot 28 should be stratosphere"); - - // Production slots 21-24 should NOT have these values yet - address slot21 = _readAddress(21); - address slot23 = _readAddress(23); - assertTrue(slot21 != VPND, "prod slot 21 should NOT have VPND yet"); - assertTrue(slot23 != USDC, "prod slot 23 should NOT have USDC yet"); + /// @notice Verify GENERAL fields are at production-compatible slots 21-26 + function test_Fork_StorageSlots_GeneralSection() public { + assertEq(_readAddress(21), VPND, "slot 21 = depositToken = VPND"); + assertEq(_readAddress(22), VAPE, "slot 22 = rewardToken = VAPE"); + assertEq(_readAddress(23), USDC, "slot 23 = feeToken = USDC"); + assertEq(_readAddress(24), STRATOSPHERE, "slot 24 = stratosphere"); + + // slot 25 = reentrancyGuardStatus (uint256, should be 0 or 1) + uint256 reentrancy = uint256(vm.load(DIAMOND, bytes32(uint256(25)))); + assertTrue(reentrancy <= 2, "slot 25 = reentrancyGuardStatus <= 2"); + + // slot 28 = miningPassFeeFloorBps + uint256 floorBps = uint256(vm.load(DIAMOND, bytes32(uint256(28)))); + assertEq(floorBps, 2500, "slot 28 = miningPassFeeFloorBps = 2500"); } // ═══════════════════════════════════════════════════════════════════ - // POST-MIGRATION STORAGE CHECK + // FACET GETTER VERIFICATION // ═══════════════════════════════════════════════════════════════════ - /// @notice After the full migration, GENERAL fields should be at - /// production slots (21-26) and facet reads should work. - function test_Fork_AfterMigration_FeeTokenIsUSDC() public { - _upgradeAndMigrate(); + /// @notice Verify facet getters return correct values after migration + function test_Fork_FacetGetters() public { + // General getters + assertEq(diamond.getStratosphereAddress(), STRATOSPHERE, "stratosphere getter"); - // Verify raw storage at production slots - assertEq(_readAddress(21), VPND, "prod slot 21 = depositToken = VPND"); - assertEq(_readAddress(22), VAPE, "prod slot 22 = rewardToken = VAPE"); - assertEq(_readAddress(23), USDC, "prod slot 23 = feeToken = USDC"); - assertEq(_readAddress(24), STRATOSPHERE, "prod slot 24 = stratosphere"); + // Dynamic pricing getters + uint256 floorBps = diamond.getMiningPassFeeFloorBps(); + assertEq(floorBps, 2500, "floor should be 2500 bps"); - // Old Fuji slot 27 should be cleared (was USDC/feeToken before migration) - assertEq(_readAddress(27), address(0), "old slot 27 should be cleared"); - // Slot 28 is now miningPassFeeFloorBps (= 2500), NOT an old address slot - assertEq(uint256(vm.load(DIAMOND, bytes32(uint256(28)))), 2500, "slot 28 = miningPassFeeFloorBps = 2500"); + // Mining pass tier fees should be set (tier 0 = free, tier 1+ > 0) + assertEq(diamond.getMiningPassTierFee(0), 0, "tier 0 is free"); + assertTrue(diamond.getMiningPassTierFee(1) > 0, "tier 1 fee > 0"); - // Verify via facet getters - assertEq(diamond.getStratosphereAddress(), STRATOSPHERE, "stratosphere getter works"); + // Base fees should match current fees (initially equal) + uint256 baseFee1 = diamond.getBaseMiningPassTierFee(1); + assertTrue(baseFee1 > 0, "base fee tier 1 > 0"); - // Verify mining pass fees were re-initialized - uint256 tier1Fee = diamond.getMiningPassTierFee(1); - console.log("Tier 1 fee:", tier1Fee); - assertEq(tier1Fee, 0.5 * 1e6, "tier 1 fee should be 0.5 USDC"); + // Floor fee should be baseFee * floorBps / 10000 + uint256 floorFee1 = diamond.getMiningPassTierFloorFee(1); + assertEq(floorFee1, (baseFee1 * floorBps) / 10000, "floor fee = baseFee * 2500 / 10000"); - uint256 floorBps = diamond.getMiningPassFeeFloorBps(); - assertEq(floorBps, 2500, "floor should be 2500 bps"); + // getAllMiningPassFees should return 11 entries + uint256[] memory allFees = diamond.getAllMiningPassFees(); + assertEq(allFees.length, 11, "should have 11 tiers"); + assertEq(allFees[0], 0, "tier 0 free in array"); + + // Deposit limits + uint256 limit0 = diamond.getMiningPassTierDepositLimit(0); + uint256 limit1 = diamond.getMiningPassTierDepositLimit(1); + assertTrue(limit0 > 0, "tier 0 deposit limit > 0"); + assertTrue(limit1 > limit0, "tier 1 limit > tier 0 limit"); + + console.log("Tier 1 fee:", diamond.getMiningPassTierFee(1)); + console.log("Tier 1 base fee:", baseFee1); + console.log("Tier 1 floor fee:", floorFee1); } - /// @notice Full e2e: migrate -> purchase mining pass -> only USDC is spent - function test_Fork_AfterMigration_PurchaseUsesUSDC() public { - _upgradeAndMigrate(); + // ═══════════════════════════════════════════════════════════════════ + // E2E PURCHASE TEST + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Purchase a mining pass and verify USDC is spent (not VPND) + function test_Fork_PurchaseUsesUSDC() public { _ensureActiveSeason(); - uint256 fee = diamond.getMiningPassTierFee(1); + // Use getMiningPassFee which accounts for time-based discounts + uint256 fee = miningPass.getMiningPassFee(user, 1); require(fee > 0, "fee is 0"); - console.log("Tier 1 fee:", fee); deal(USDC, user, fee * 10); deal(VPND, user, fee * 10); @@ -157,66 +142,6 @@ contract FujiForkMiningPassTest is Test { return address(uint160(uint256(vm.load(DIAMOND, bytes32(slot))))); } - /// @dev Upgrade ALL facets + run the FujiMigrationInit initializer in a - /// single diamondCut call — exactly how the real upgrade will work. - function _upgradeAndMigrate() internal { - // Deploy the migration initializer - FujiMigrationInit migrationInit = new FujiMigrationInit(); - - // Build cuts array: deploy new facets, look up old facet via loupe, replace - IDiamondCut.FacetCut[] memory cuts = _buildAllFacetCuts(); - - // Encode the migration initializer call - FujiMigrationInit.Args memory migArgs = _buildMigrationArgs(); - - vm.prank(owner); - IDiamondCut(DIAMOND) - .diamondCut(cuts, address(migrationInit), abi.encodeWithSelector(FujiMigrationInit.init.selector, migArgs)); - } - - function _buildAllFacetCuts() internal returns (IDiamondCut.FacetCut[] memory cuts) { - cuts = new IDiamondCut.FacetCut[](10); - cuts[0] = _deployAndReplace(address(new DiamondManagerFacet()), DiamondManagerFacet.setDepositToken.selector); - cuts[1] = _deployAndReplace(address(new MiningPassFacet()), MiningPassFacet.purchase.selector); - cuts[2] = _deployAndReplace(address(new BoostFacet()), BoostFacet.claimBoost.selector); - cuts[3] = _deployAndReplace(address(new DepositFacet()), DepositFacet.deposit.selector); - cuts[4] = _deployAndReplace(address(new ClaimFacet()), ClaimFacet.automatedClaim.selector); - cuts[5] = _deployAndReplace(address(new UnlockFacet()), UnlockFacet.unlock.selector); - cuts[6] = _deployAndReplace(address(new WithdrawFacet()), WithdrawFacet.withdrawUnlocked.selector); - cuts[7] = _deployAndReplace(address(new FeeCollectorFacet()), FeeCollectorFacet.collectBoostFees.selector); - cuts[8] = _deployAndReplace(address(new AuthorizationFacet()), AuthorizationFacet.authorize.selector); - cuts[9] = _deployAndReplace(address(new PausationFacet()), PausationFacet.pause.selector); - } - - function _deployAndReplace(address newFacet, bytes4 knownSelector) - internal - view - returns (IDiamondCut.FacetCut memory) - { - address oldFacet = loupe.facetAddress(knownSelector); - bytes4[] memory selectors = loupe.facetFunctionSelectors(oldFacet); - return IDiamondCut.FacetCut({ - facetAddress: newFacet, action: IDiamondCut.FacetCutAction.Replace, functionSelectors: selectors - }); - } - - function _buildMigrationArgs() internal returns (FujiMigrationInit.Args memory migArgs) { - migArgs.unlockFeeReceivers = new address[](1); - migArgs.unlockFeeReceivers[0] = makeAddr("unlockFeeReceiver"); - migArgs.unlockFeeReceiversShares = new uint256[](1); - migArgs.unlockFeeReceiversShares[0] = 10000; - - migArgs.boostFeeReceivers = new address[](1); - migArgs.boostFeeReceivers[0] = makeAddr("boostFeeReceiver"); - migArgs.boostFeeReceiversShares = new uint256[](1); - migArgs.boostFeeReceiversShares[0] = 10000; - - migArgs.miningPassFeeReceivers = new address[](1); - migArgs.miningPassFeeReceivers[0] = makeAddr("miningPassFeeReceiver"); - migArgs.miningPassFeeReceiversShares = new uint256[](1); - migArgs.miningPassFeeReceiversShares[0] = 10000; - } - function _ensureActiveSeason() internal { uint256 seasonId = diamond.getCurrentSeasonId(); if (seasonId == 0) { From 6b463e42f5e811e5a6b6d991b405038d4ac61ba0 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Wed, 25 Feb 2026 20:43:59 +0530 Subject: [PATCH 31/34] fix: event emition for single-tier mutates --- src/facets/DiamondManagerFacet.sol | 17 +++++++++--- .../Facets/MiningPassDynamicPricing.t.sol | 27 ++++++++++++++++++- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/src/facets/DiamondManagerFacet.sol b/src/facets/DiamondManagerFacet.sol index 183b35b..f40362f 100644 --- a/src/facets/DiamondManagerFacet.sol +++ b/src/facets/DiamondManagerFacet.sol @@ -41,6 +41,7 @@ contract DiamondManagerFacet { event SeasonEnded(uint256 indexed seasonId, uint256 rewardTokenDistributed); event MiningPassFeeReceiversSet(address[] receivers, uint256[] proportion); event MiningPassFeesUpdated(uint256[] fees); + event MiningPassTierFeeUpdated(uint256 indexed tier, uint256 fee); event BaseMiningPassFeesUpdated(uint256[] fees); event MiningPassFeeFloorUpdated(uint256 floorBps); @@ -180,9 +181,7 @@ contract DiamondManagerFacet { s.miningPassTierToFee[tier] = fee; - uint256[] memory fees = new uint256[](1); - fees[0] = fee; - emit MiningPassFeesUpdated(fees); + emit MiningPassTierFeeUpdated(tier, fee); } /// @notice Update base mining pass fees for all tiers @@ -210,6 +209,18 @@ contract DiamondManagerFacet { if (floorBps > TOTAL_SHARES) { revert DiamondManagerFacet__Invalid_Input(); } + + // Validate that no existing tier fee falls below the new floor + for (uint256 i = 1; i < 11;) { + uint256 floorFee = (s.baseMiningPassTierToFee[i] * floorBps) / TOTAL_SHARES; + if (s.miningPassTierToFee[i] < floorFee) { + revert DiamondManagerFacet__FeeBelowFloor(); + } + unchecked { + i++; + } + } + s.miningPassFeeFloorBps = floorBps; emit MiningPassFeeFloorUpdated(floorBps); } diff --git a/test/foundry/Facets/MiningPassDynamicPricing.t.sol b/test/foundry/Facets/MiningPassDynamicPricing.t.sol index fb84f62..71877ab 100644 --- a/test/foundry/Facets/MiningPassDynamicPricing.t.sol +++ b/test/foundry/Facets/MiningPassDynamicPricing.t.sol @@ -12,6 +12,8 @@ error DiamondManagerFacet__FeeBelowFloor(); error DiamondManagerFacet__InvalidTier(); contract MiningPassDynamicPricingTest is DiamondTest { + event MiningPassTierFeeUpdated(uint256 indexed tier, uint256 fee); + LiquidMiningDiamond internal diamond; DiamondManagerFacet internal diamondManagerFacet; MiningPassFacet internal miningPassFacet; @@ -183,6 +185,9 @@ contract MiningPassDynamicPricingTest is DiamondTest { // Update tier 5 to 50% of original uint256 newFee = originalFees[5] / 2; // $4 instead of $8 + + vm.expectEmit(true, false, false, true, address(diamond)); + emit MiningPassTierFeeUpdated(5, newFee); diamondManagerFacet.setMiningPassTierFee(5, newFee); assertEq(diamondManagerFacet.getMiningPassTierFee(5), newFee); @@ -221,7 +226,7 @@ contract MiningPassDynamicPricingTest is DiamondTest { function test_SetMiningPassFeeFloor() public { vm.startPrank(owner); - // Change floor to 50% + // Current fees equal base fees (100%), so raising floor to 50% is safe diamondManagerFacet.setMiningPassFeeFloor(5000); assertEq(diamondManagerFacet.getMiningPassFeeFloorBps(), 5000); @@ -231,6 +236,26 @@ contract MiningPassDynamicPricingTest is DiamondTest { vm.stopPrank(); } + function test_SetMiningPassFeeFloor_RevertIf_ExistingFeeBelowNewFloor() public { + vm.startPrank(owner); + + // Lower fees to 30% of base + uint256[] memory lowFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + lowFees[i] = (originalFees[i] * 3000) / 10000; // 30% + } + diamondManagerFacet.setMiningPassFees(lowFees); + + // Try to raise floor to 50% — existing fees (30%) < new floor (50%) + vm.expectRevert(DiamondManagerFacet__FeeBelowFloor.selector); + diamondManagerFacet.setMiningPassFeeFloor(5000); + + // Floor should remain unchanged + assertEq(diamondManagerFacet.getMiningPassFeeFloorBps(), 2500); + + vm.stopPrank(); + } + function test_SetMiningPassFeeFloor_RevertIf_InvalidValue() public { vm.startPrank(owner); From f5dffa24cfa93699fc6aeb3f7b5bb6fadd0bffdc Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Thu, 26 Feb 2026 23:06:10 +0530 Subject: [PATCH 32/34] chore: add prod fork test --- test/foundry/fork/ProdForkUpgrade.t.sol | 409 ++++++++++++++++++++++++ 1 file changed, 409 insertions(+) create mode 100644 test/foundry/fork/ProdForkUpgrade.t.sol diff --git a/test/foundry/fork/ProdForkUpgrade.t.sol b/test/foundry/fork/ProdForkUpgrade.t.sol new file mode 100644 index 0000000..be36fb0 --- /dev/null +++ b/test/foundry/fork/ProdForkUpgrade.t.sol @@ -0,0 +1,409 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.18; + +import "forge-std/Test.sol"; +import {IERC20} from "openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {IDiamondCut} from "clouds/interfaces/IDiamondCut.sol"; +import {IDiamondLoupe} from "clouds/interfaces/IDiamondLoupe.sol"; +import {DiamondManagerFacet} from "src/facets/DiamondManagerFacet.sol"; +import {MiningPassFacet} from "src/facets/MiningPassFacet.sol"; + +/// @title ProdForkUpgradeTest +/// @notice Fork test against the real Avalanche mainnet diamond. +/// Simulates upgrading DiamondManagerFacet with the new dynamic-pricing +/// version and verifies: +/// 1. All existing storage slots are preserved (no corruption) +/// 2. New getters work after upgrade +/// 3. Owner can initialise dynamic pricing config +/// 4. Mining pass purchase still works with USDC +contract ProdForkUpgradeTest is Test { + // ──── Real mainnet addresses ──── + address constant DIAMOND = 0xAe950fdd0CC79DDE64d3Fffd40fabec3f7ba368B; + address constant VPND = 0x83a283641C6B4DF383BCDDf807193284C84c5342; + address constant USDC = 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E; + address constant VAPE = 0x7bddaF6DbAB30224AA2116c4291521C7a60D5f55; + address constant STRAT = 0x08e287adCf9BF6773a87e1a278aa9042BEF44b60; + address constant EMISSIONS = 0x9f0EDB45c2DC0f56bA7C48368c26426f366Bb788; + + // Fee receivers (from DiamondInit / config) + address constant xVAPE = 0x0fA2CCC39Cc3B225A7649eD84ec76Ee5217d07c4; + address constant LABS_MULTISIG = 0x6769DB4e3E94A63089f258B9500e0695586315bA; + address constant PASSPORT = 0x125177daa21AF2277A2B735212B115c2A302940F; + + // Base mining pass fees (from DiamondInit) + uint256[11] BASE_FEES = + [uint256(0), 0.5 * 1e6, 1 * 1e6, 2 * 1e6, 4 * 1e6, 8 * 1e6, 15 * 1e6, 30 * 1e6, 50 * 1e6, 75 * 1e6, 100 * 1e6]; + + DiamondManagerFacet diamond; + MiningPassFacet miningPass; + IDiamondLoupe loupe; + address owner; + address user; + + // ── Pre-upgrade snapshots ── + bytes32[31] slotsBefore; + uint256 seasonIdBefore; + address stratBefore; + + function setUp() public { + vm.createSelectFork("avalanche"); + + diamond = DiamondManagerFacet(DIAMOND); + miningPass = MiningPassFacet(DIAMOND); + loupe = IDiamondLoupe(DIAMOND); + user = makeAddr("testUser"); + + (bool ok, bytes memory data) = DIAMOND.staticcall(abi.encodeWithSignature("owner()")); + require(ok, "owner() call failed"); + owner = abi.decode(data, (address)); + + // ── Snapshot all scalar slots 0-30 before upgrade ── + for (uint256 i; i < 31; i++) { + slotsBefore[i] = vm.load(DIAMOND, bytes32(i)); + } + + // ── Snapshot via getters ── + seasonIdBefore = diamond.getCurrentSeasonId(); + stratBefore = diamond.getStratosphereAddress(); + } + + // ═══════════════════════════════════════════════════════════════════ + // PRE-UPGRADE SANITY: EXISTING LAYOUT + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Verify the current production layout before we touch anything + function test_ProdFork_PreUpgrade_StorageLayout() public { + assertEq(_readAddress(21), VPND, "slot 21 = depositToken = VPND"); + assertEq(_readAddress(22), VAPE, "slot 22 = rewardToken = VAPE"); + assertEq(_readAddress(23), USDC, "slot 23 = feeToken = USDC"); + assertEq(_readAddress(24), STRAT, "slot 24 = stratosphere"); + assertEq(_readAddress(26), EMISSIONS, "slot 26 = emissionsManager"); + + console.log("Pre-upgrade: currentSeasonId =", seasonIdBefore); + console.log("Pre-upgrade: owner =", owner); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: STORAGE PRESERVATION + // ═══════════════════════════════════════════════════════════════════ + + /// @notice After upgrading DiamondManagerFacet, ALL existing storage + /// slots must be identical. The upgrade only adds new selectors + /// — no initializer, no storage writes. + function test_ProdFork_PostUpgrade_SlotsPreserved() public { + _upgradeDiamondManagerFacet(); + + // Verify all 31 scalar slots are unchanged + for (uint256 i; i < 31; i++) { + bytes32 slotAfter = vm.load(DIAMOND, bytes32(i)); + assertEq(slotAfter, slotsBefore[i], string.concat("slot ", vm.toString(i), " changed after upgrade")); + } + + // Verify getters still return the same values + assertEq(diamond.getCurrentSeasonId(), seasonIdBefore, "seasonId changed"); + assertEq(diamond.getStratosphereAddress(), stratBefore, "stratosphere changed"); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: GENERAL SLOT INTEGRITY + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Verify GENERAL section (slots 21-26) is intact after upgrade + function test_ProdFork_PostUpgrade_GeneralSlots() public { + _upgradeDiamondManagerFacet(); + + assertEq(_readAddress(21), VPND, "slot 21 = depositToken"); + assertEq(_readAddress(22), VAPE, "slot 22 = rewardToken"); + assertEq(_readAddress(23), USDC, "slot 23 = feeToken"); + assertEq(_readAddress(24), STRAT, "slot 24 = stratosphere"); + assertEq(_readAddress(26), EMISSIONS, "slot 26 = emissionsManager"); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: NEW GETTERS (UNINITIALISED) + // ═══════════════════════════════════════════════════════════════════ + + /// @notice New dynamic pricing getters should work but return zero/defaults + /// since production hasn't initialised baseMiningPassTierToFee yet. + function test_ProdFork_PostUpgrade_NewGettersDefaults() public { + _upgradeDiamondManagerFacet(); + + // baseMiningPassTierToFee (slot 27 mapping) — uninitialised → 0 + for (uint256 i; i < 11; i++) { + assertEq(diamond.getBaseMiningPassTierFee(i), 0, "base fee should be 0 before init"); + } + + // miningPassFeeFloorBps (slot 28) — uninitialised → 0 + assertEq(diamond.getMiningPassFeeFloorBps(), 0, "floor bps should be 0 before init"); + + // getAllMiningPassFees should return the EXISTING fees (they were + // already set in miningPassTierToFee mapping at slot 17) + uint256[] memory fees = diamond.getAllMiningPassFees(); + assertEq(fees.length, 11, "should have 11 tiers"); + // Existing fees should be present (production had them set via DiamondInit) + console.log("Existing tier 1 fee:", fees[1]); + console.log("Existing tier 10 fee:", fees[10]); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: INITIALISE DYNAMIC PRICING + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Owner sets base fees, floor, then updates dynamic fees. + /// Simulates the exact post-upgrade admin sequence. + function test_ProdFork_PostUpgrade_InitialiseDynamicPricing() public { + _upgradeDiamondManagerFacet(); + + vm.startPrank(owner); + + // 1. Set base fees + uint256[] memory baseFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + baseFees[i] = BASE_FEES[i]; + } + diamond.setBaseMiningPassFees(baseFees); + + // Verify base fees stored + for (uint256 i; i < 11; i++) { + assertEq(diamond.getBaseMiningPassTierFee(i), BASE_FEES[i], "base fee mismatch"); + } + + // 2. Set floor to 25% + diamond.setMiningPassFeeFloor(2500); + assertEq(diamond.getMiningPassFeeFloorBps(), 2500, "floor not set"); + + // 3. Verify floor fee calculation + // Floor for tier 10: 100 USDC * 25% = 25 USDC + assertEq(diamond.getMiningPassTierFloorFee(10), 25 * 1e6, "tier 10 floor fee"); + + // 4. Set dynamic fees (e.g. at 80% of base) + uint256[] memory dynamicFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + dynamicFees[i] = (BASE_FEES[i] * 8000) / 10000; // 80% + } + diamond.setMiningPassFees(dynamicFees); + + // Verify dynamic fees + for (uint256 i; i < 11; i++) { + assertEq(diamond.getMiningPassTierFee(i), dynamicFees[i], "dynamic fee mismatch"); + } + + // 5. Try setting a single tier fee + diamond.setMiningPassTierFee(5, 6 * 1e6); // $6 + assertEq(diamond.getMiningPassTierFee(5), 6 * 1e6, "single tier fee"); + + // 6. Verify floor enforcement: try setting below floor + vm.expectRevert(abi.encodeWithSignature("DiamondManagerFacet__FeeBelowFloor()")); + diamond.setMiningPassTierFee(10, 20 * 1e6); // $20 < $25 floor + + // 7. Verify floor elevation enforcement + // Lower fees to 30%, then try to raise floor to 50% + for (uint256 i; i < 11; i++) { + dynamicFees[i] = (BASE_FEES[i] * 3000) / 10000; // 30% + } + diamond.setMiningPassFees(dynamicFees); + + vm.expectRevert(abi.encodeWithSignature("DiamondManagerFacet__FeeBelowFloor()")); + diamond.setMiningPassFeeFloor(5000); // 50% > current 30% → should revert + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: E2E PURCHASE + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Full e2e: upgrade → init pricing → purchase → verify USDC spent + function test_ProdFork_PostUpgrade_PurchaseUsesUSDC() public { + _upgradeDiamondManagerFacet(); + _initDynamicPricing(); + _ensureActiveSeason(); + + uint256 fee = miningPass.getMiningPassFee(user, 1); + require(fee > 0, "tier 1 fee is 0"); + console.log("Tier 1 purchase fee:", fee); + + deal(USDC, user, fee * 10); + deal(VPND, user, fee * 10); + + uint256 usdcBefore = IERC20(USDC).balanceOf(user); + uint256 vpndBefore = IERC20(VPND).balanceOf(user); + + vm.startPrank(user); + IERC20(USDC).approve(DIAMOND, type(uint256).max); + IERC20(VPND).approve(DIAMOND, type(uint256).max); + miningPass.purchase(1); + vm.stopPrank(); + + uint256 usdcSpent = usdcBefore - IERC20(USDC).balanceOf(user); + uint256 vpndSpent = vpndBefore - IERC20(VPND).balanceOf(user); + + console.log("USDC spent:", usdcSpent); + console.log("VPND spent:", vpndSpent); + + assertEq(usdcSpent, fee, "USDC should be spent"); + assertEq(vpndSpent, 0, "VPND should NOT be spent"); + + // Verify mining pass assigned + (uint256 tier,) = miningPass.miningPassOf(user); + assertEq(tier, 1, "user should have tier 1 pass"); + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: EVENT VERIFICATION + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Verify the new MiningPassTierFeeUpdated event is emitted + function test_ProdFork_PostUpgrade_TierFeeEvent() public { + _upgradeDiamondManagerFacet(); + _initDynamicPricing(); + + vm.startPrank(owner); + + vm.expectEmit(true, false, false, true, DIAMOND); + emit MiningPassTierFeeUpdated(5, 6 * 1e6); + diamond.setMiningPassTierFee(5, 6 * 1e6); + + vm.stopPrank(); + } + + // ═══════════════════════════════════════════════════════════════════ + // HELPERS + // ═══════════════════════════════════════════════════════════════════ + + event MiningPassTierFeeUpdated(uint256 indexed tier, uint256 fee); + + function _readAddress(uint256 slot) internal view returns (address) { + return address(uint160(uint256(vm.load(DIAMOND, bytes32(slot))))); + } + + /// @dev Deploy a new DiamondManagerFacet and replace its selectors via diamondCut + function _upgradeDiamondManagerFacet() internal { + DiamondManagerFacet newFacet = new DiamondManagerFacet(); + + // Use a known selector to find the old facet address + address oldFacet = loupe.facetAddress(DiamondManagerFacet.setDepositToken.selector); + bytes4[] memory oldSelectors = loupe.facetFunctionSelectors(oldFacet); + + // Build a Replace cut for existing selectors + IDiamondCut.FacetCut[] memory cuts; + + // Check if new facet has MORE selectors than old (new getters added) + // We do Replace for existing, Add for new + bytes4[] memory newSelectors = _getNewFacetSelectors(address(newFacet), oldSelectors); + + if (newSelectors.length > 0) { + cuts = new IDiamondCut.FacetCut[](2); + cuts[0] = IDiamondCut.FacetCut({ + facetAddress: address(newFacet), + action: IDiamondCut.FacetCutAction.Replace, + functionSelectors: oldSelectors + }); + cuts[1] = IDiamondCut.FacetCut({ + facetAddress: address(newFacet), action: IDiamondCut.FacetCutAction.Add, functionSelectors: newSelectors + }); + } else { + cuts = new IDiamondCut.FacetCut[](1); + cuts[0] = IDiamondCut.FacetCut({ + facetAddress: address(newFacet), + action: IDiamondCut.FacetCutAction.Replace, + functionSelectors: oldSelectors + }); + } + + vm.prank(owner); + IDiamondCut(DIAMOND).diamondCut(cuts, address(0), ""); + } + + /// @dev Discover selectors on the new facet that don't exist on the old facet + function _getNewFacetSelectors(address, bytes4[] memory oldSelectors) internal pure returns (bytes4[] memory) { + // Get ALL selectors from the new facet by querying the loupe for what + // the new facet exposes. Since it's not registered yet, we use a + // brute-force approach: check known new selectors. + bytes4[] memory candidates = new bytes4[](10); + uint256 count; + + // New selectors added by the dynamic pricing PR + bytes4[10] memory potentialNew = [ + DiamondManagerFacet.setMiningPassFees.selector, + DiamondManagerFacet.setMiningPassTierFee.selector, + DiamondManagerFacet.setBaseMiningPassFees.selector, + DiamondManagerFacet.setMiningPassFeeFloor.selector, + DiamondManagerFacet.getMiningPassTierFee.selector, + DiamondManagerFacet.getBaseMiningPassTierFee.selector, + DiamondManagerFacet.getMiningPassTierFloorFee.selector, + DiamondManagerFacet.getMiningPassFeeFloorBps.selector, + DiamondManagerFacet.getAllMiningPassFees.selector, + DiamondManagerFacet.getMiningPassTierDepositLimit.selector + ]; + + for (uint256 i; i < 10; i++) { + bool isOld; + for (uint256 j; j < oldSelectors.length; j++) { + if (potentialNew[i] == oldSelectors[j]) { + isOld = true; + break; + } + } + if (!isOld) { + candidates[count] = potentialNew[i]; + count++; + } + } + + // Also check getSeasonIsClaimed + bytes4 seasonClaimedSel = DiamondManagerFacet.getSeasonIsClaimed.selector; + { + bool isOld; + for (uint256 j; j < oldSelectors.length; j++) { + if (seasonClaimedSel == oldSelectors[j]) { + isOld = true; + break; + } + } + if (!isOld) { + candidates[count] = seasonClaimedSel; + count++; + } + } + + bytes4[] memory result = new bytes4[](count); + for (uint256 i; i < count; i++) { + result[i] = candidates[i]; + } + return result; + } + + /// @dev Initialise dynamic pricing config (simulates post-upgrade admin actions) + function _initDynamicPricing() internal { + vm.startPrank(owner); + + uint256[] memory baseFees = new uint256[](11); + for (uint256 i; i < 11; i++) { + baseFees[i] = BASE_FEES[i]; + } + diamond.setBaseMiningPassFees(baseFees); + diamond.setMiningPassFeeFloor(2500); + + vm.stopPrank(); + } + + function _ensureActiveSeason() internal { + uint256 seasonId = diamond.getCurrentSeasonId(); + if (seasonId == 0) { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + return; + } + + try diamond.getSeasonEndTimestamp(seasonId) returns (uint256 endTs) { + if (endTs <= block.timestamp) { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + } + } catch { + vm.prank(owner); + diamond.startNewSeasonWithEndTimestamp(1000 * 1e18, block.timestamp + 30 days); + } + } +} From 2c81d696e7aa8d9bd9f67ad6c034b659d519405d Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Mon, 2 Mar 2026 10:20:51 +0530 Subject: [PATCH 33/34] feat: refactor mining pass fee tasks and replace updateMiningPassFees with miningPassFees --- hardhat.config.ts | 2 +- tasks/miningPassFees.ts | 345 ++++++++++++++++++++++++ tasks/updateMiningPassFees.ts | 104 ------- test/foundry/fork/ProdForkUpgrade.t.sol | 57 ++++ 4 files changed, 403 insertions(+), 105 deletions(-) create mode 100644 tasks/miningPassFees.ts delete mode 100644 tasks/updateMiningPassFees.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index 7ba3b11..a49eca6 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -12,7 +12,7 @@ import './tasks/season' import './tasks/startSeason' import './tasks/diamondInfo' import './tasks/admin' -import './tasks/updateMiningPassFees' +import './tasks/miningPassFees' import { formatUnits, parseUnits } from 'ethers' diff --git a/tasks/miningPassFees.ts b/tasks/miningPassFees.ts new file mode 100644 index 0000000..991f87c --- /dev/null +++ b/tasks/miningPassFees.ts @@ -0,0 +1,345 @@ +import { task } from 'hardhat/config' +import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' +import { logTx } from '../utils' + +const REFERENCE_VAPE_PRICE = 0.606 +const FLOOR_BPS = 2500 // 25% +const NUM_TIERS = 11 + +// ─── Helpers ───────────────────────────────────────────────────────────────── + +async function fetchVAPEPrice(): Promise { + const response = await fetch( + 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' + ) + const data = (await response.json()) as { vaporfi?: { usd?: number } } + const price = data.vaporfi?.usd + if (!price) throw new Error('Failed to fetch VAPE price from CoinGecko') + return price +} + +function calculateDynamicFees( + baseFees: bigint[], + vapePrice: number, + floorBps: number +): bigint[] { + const multiplierBps = Math.floor((vapePrice / REFERENCE_VAPE_PRICE) * 10000) + + return baseFees.map((baseFee) => { + const floorFee = (baseFee * BigInt(floorBps)) / 10000n + const dynamicFee = (baseFee * BigInt(multiplierBps)) / 10000n + return dynamicFee > floorFee ? dynamicFee : floorFee + }) +} + +function getDiamondAddress(networkName: string): string { + return LiquidMiningDiamond[networkName as keyof typeof LiquidMiningDiamond] + .address +} + +function fmtUSDC(val: bigint | number): string { + return (Number(val) / 1e6).toFixed(2) +} + +// ─── Read Task ─────────────────────────────────────────────────────────────── + +task( + 'mining-pass:read', + 'Read current dynamic mining pass pricing parameters from the contract' +) + .addOptionalParam('tier', 'Read a specific tier only (0-10)') + .setAction(async ({ tier }, { ethers, network }) => { + const diamondAddress = getDiamondAddress(network.name) + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + console.log(`\nšŸ’Ž Diamond: ${diamondAddress} (${network.name})`) + + // Floor BPS + const floorBps = await manager.getMiningPassFeeFloorBps() + console.log( + `\nšŸ“ Fee Floor: ${Number(floorBps)} bps (${(Number(floorBps) / 100).toFixed(1)}%)` + ) + + // Single tier + if (tier !== undefined) { + const t = parseInt(tier) + if (t < 0 || t > 10) throw new Error('Tier must be 0-10') + + const currentFee = await manager.getMiningPassTierFee(t) + const baseFee = await manager.getBaseMiningPassTierFee(t) + const floorFee = await manager.getMiningPassTierFloorFee(t) + const depositLimit = await manager.getMiningPassTierDepositLimit(t) + + console.log(`\n── Tier ${t} ──`) + console.log(` Base Fee: $${fmtUSDC(currentFee)}`) + console.log(` Current Fee: $${fmtUSDC(baseFee)}`) + console.log(` Floor Fee: $${fmtUSDC(floorFee)}`) + console.log( + ` Deposit Limit: ${depositLimit === BigInt(2) ** BigInt(256) - BigInt(1) ? 'āˆž' : `${(Number(depositLimit) / 1e18).toLocaleString()} VPND`}` + ) + return + } + + // All tiers + console.log( + '\nTier | Base Fee ($) | Current ($) | Floor ($) | Deposit Limit' + ) + console.log( + '-----|-------------|-------------|-------------|--------------------' + ) + + for (let i = 0; i < NUM_TIERS; i++) { + const baseFee = await manager.getBaseMiningPassTierFee(i) + const currentFee = await manager.getMiningPassTierFee(i) + const floorFee = await manager.getMiningPassTierFloorFee(i) + const depositLimit = await manager.getMiningPassTierDepositLimit(i) + const limitStr = + depositLimit === BigInt(2) ** BigInt(256) - BigInt(1) + ? 'āˆž' + : `${(Number(depositLimit) / 1e18).toLocaleString()} VPND` + + console.log( + ` ${i.toString().padStart(2)} | ${fmtUSDC(baseFee).padStart(11)} | ${fmtUSDC(currentFee).padStart(11)} | ${fmtUSDC(floorFee).padStart(11)} | ${limitStr}` + ) + } + }) + +// ─── Update Fees Task ──────────────────────────────────────────────────────── + +task( + 'mining-pass:update-fees', + 'Update mining pass fees based on current VAPE price' +) + .addOptionalParam( + 'vapePrice', + 'Override VAPE price (USD) instead of fetching' + ) + .addFlag('dryRun', 'Print what would happen without sending transactions') + .setAction(async ({ vapePrice, dryRun }, { ethers, network }) => { + const diamondAddress = getDiamondAddress(network.name) + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + // ── 1. Fetch VAPE price ────────────────────────────────────────── + const currentVAPEPrice = vapePrice + ? parseFloat(vapePrice) + : await fetchVAPEPrice() + + console.log(`\nšŸ’° VAPE Price: $${currentVAPEPrice.toFixed(4)}`) + console.log( + `šŸ“ Multiplier: ${((currentVAPEPrice / REFERENCE_VAPE_PRICE) * 100).toFixed(1)}% of reference ($${REFERENCE_VAPE_PRICE})` + ) + + // ── 2. Read base fees from contract ────────────────────────────── + const baseFees: bigint[] = [] + for (let i = 0; i < NUM_TIERS; i++) { + const fee = await manager.getBaseMiningPassTierFee(i) + baseFees.push(fee) + } + + // ── 3. Read current fees from contract ─────────────────────────── + const currentFees: bigint[] = [] + for (let i = 0; i < NUM_TIERS; i++) { + const fee = await manager.getMiningPassTierFee(i) + currentFees.push(fee) + } + + // ── 4. Calculate dynamic fees ──────────────────────────────────── + const dynamicFees = calculateDynamicFees( + baseFees, + currentVAPEPrice, + FLOOR_BPS + ) + + console.log('\nšŸ“‹ Mining Pass Fee Update:') + console.log( + 'Tier | Base Fee ($) | Current ($) | New Fee ($) | Change' + ) + console.log( + '-----|-------------|-------------|-------------|-------' + ) + for (let i = 0; i < NUM_TIERS; i++) { + const base = Number(baseFees[i]) / 1e6 + const current = Number(currentFees[i]) / 1e6 + const dynamic = Number(dynamicFees[i]) / 1e6 + const change = + base > 0 + ? `${(((dynamic - base) / base) * 100).toFixed(0)}%` + : '-' + console.log( + ` ${i.toString().padStart(2)} | ${base.toFixed(2).padStart(11)} | ${current.toFixed(2).padStart(11)} | ${dynamic.toFixed(2).padStart(11)} | ${change}` + ) + } + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + // ── 5. Update mining pass fees ─────────────────────────────────── + console.log('\nā³ Updating mining pass fees...') + const feesTx = await manager.setMiningPassFees(dynamicFees) + await logTx(feesTx) + console.log('āœ… Mining pass fees updated') + }) + +// ─── Set Base Fees Task ────────────────────────────────────────────────────── + +task( + 'mining-pass:set-base-fees', + 'Set the base (reference) mining pass fees on-chain' +) + .addFlag('dryRun', 'Print what would be set without sending transactions') + .setAction(async ({ dryRun }, { ethers, network }) => { + const diamondAddress = getDiamondAddress(network.name) + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const BASE_FEES = [ + 0n, // Tier 0 + 500_000n, // Tier 1 – $0.50 + 1_000_000n, // Tier 2 – $1 + 2_000_000n, // Tier 3 – $2 + 4_000_000n, // Tier 4 – $4 + 8_000_000n, // Tier 5 – $8 + 15_000_000n, // Tier 6 – $15 + 30_000_000n, // Tier 7 – $30 + 50_000_000n, // Tier 8 – $50 + 75_000_000n, // Tier 9 – $75 + 100_000_000n, // Tier 10 – $100 + ] + + console.log(`\nšŸ’Ž Diamond: ${diamondAddress} (${network.name})`) + console.log('\nšŸ“‹ Base fees to set:') + for (let i = 0; i < NUM_TIERS; i++) { + console.log(` Tier ${i.toString().padStart(2)}: $${fmtUSDC(BASE_FEES[i])}`) + } + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + console.log('\nā³ Setting base mining pass fees...') + const tx = await manager.setBaseMiningPassFees(BASE_FEES) + await logTx(tx) + console.log('āœ… Base mining pass fees set') + }) + +// ─── Set Floor Task ────────────────────────────────────────────────────────── + +task('mining-pass:set-floor', 'Set the mining pass fee floor in basis points') + .addParam('bps', 'Floor in basis points (e.g. 2500 = 25%)') + .addFlag('dryRun', 'Print what would be set without sending transactions') + .setAction(async ({ bps, dryRun }, { ethers, network }) => { + const diamondAddress = getDiamondAddress(network.name) + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const floorBps = parseInt(bps) + if (isNaN(floorBps) || floorBps < 0 || floorBps > 10000) { + throw new Error('bps must be between 0 and 10000') + } + + const currentFloor = await manager.getMiningPassFeeFloorBps() + + console.log(`\nšŸ’Ž Diamond: ${diamondAddress} (${network.name})`) + console.log( + ` Current floor: ${Number(currentFloor)} bps (${(Number(currentFloor) / 100).toFixed(1)}%)` + ) + console.log( + ` New floor: ${floorBps} bps (${(floorBps / 100).toFixed(1)}%)` + ) + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + console.log('\nā³ Setting mining pass fee floor...') + const tx = await manager.setMiningPassFeeFloor(floorBps) + await logTx(tx) + console.log('āœ… Mining pass fee floor updated') + }) + +// ─── Init Dynamic Pricing Task ────────────────────────────────────────────── + +task( + 'mining-pass:init', + 'Initialise dynamic pricing (set base fees + floor) — run once after upgrade' +) + .addFlag('dryRun', 'Print what would be set without sending transactions') + .setAction(async ({ dryRun }, { ethers, network }) => { + const diamondAddress = getDiamondAddress(network.name) + const manager = await ethers.getContractAt( + 'DiamondManagerFacet', + diamondAddress + ) + + const BASE_FEES = [ + 0n, + 500_000n, + 1_000_000n, + 2_000_000n, + 4_000_000n, + 8_000_000n, + 15_000_000n, + 30_000_000n, + 50_000_000n, + 75_000_000n, + 100_000_000n, + ] + + console.log(`\nšŸ’Ž Diamond: ${diamondAddress} (${network.name})`) + + // Check current state + const currentFloor = await manager.getMiningPassFeeFloorBps() + const currentBase5 = await manager.getBaseMiningPassTierFee(5) + console.log( + ` Current floor: ${Number(currentFloor)} bps | Base tier 5: $${fmtUSDC(currentBase5)}` + ) + + if (Number(currentFloor) !== 0 || Number(currentBase5) !== 0) { + console.log( + '\nāš ļø Dynamic pricing appears already initialised. Use individual tasks to update.' + ) + return + } + + console.log('\nšŸ“‹ Will set:') + console.log(' Base fees (11 tiers) + Floor = 2500 bps (25%)') + for (let i = 0; i < NUM_TIERS; i++) { + console.log(` Tier ${i.toString().padStart(2)}: $${fmtUSDC(BASE_FEES[i])}`) + } + + if (dryRun) { + console.log('\nšŸ Dry run complete — no transactions sent.') + return + } + + console.log('\nā³ Setting base mining pass fees...') + const baseFeeTx = await manager.setBaseMiningPassFees(BASE_FEES) + await logTx(baseFeeTx) + + console.log('ā³ Setting mining pass fee floor to 2500 bps (25%)...') + const floorTx = await manager.setMiningPassFeeFloor(2500) + await logTx(floorTx) + + // Verify + const newFloor = await manager.getMiningPassFeeFloorBps() + const newBase10 = await manager.getBaseMiningPassTierFee(10) + console.log(`\nāœ… Dynamic pricing initialised:`) + console.log(` Base fee tier 10: $${fmtUSDC(newBase10)}`) + console.log( + ` Floor: ${Number(newFloor)} bps (${(Number(newFloor) / 100).toFixed(1)}%)` + ) + }) diff --git a/tasks/updateMiningPassFees.ts b/tasks/updateMiningPassFees.ts deleted file mode 100644 index 50ce69c..0000000 --- a/tasks/updateMiningPassFees.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { task } from 'hardhat/config' -import LiquidMiningDiamond from '../deployments/LiquidMiningDiamond.json' -import { logTx } from '../utils' - -const REFERENCE_VAPE_PRICE = 0.606 -const FLOOR_BPS = 2500 // 25% -const NUM_TIERS = 11 - -async function fetchVAPEPrice(): Promise { - const response = await fetch( - 'https://api.coingecko.com/api/v3/simple/price?ids=vaporfi&vs_currencies=usd' - ) - const data = (await response.json()) as { vaporfi?: { usd?: number } } - const price = data.vaporfi?.usd - if (!price) throw new Error('Failed to fetch VAPE price from CoinGecko') - return price -} - -function calculateDynamicFees( - baseFees: bigint[], - vapePrice: number, - floorBps: number -): bigint[] { - const multiplierBps = Math.floor((vapePrice / REFERENCE_VAPE_PRICE) * 10000) - - return baseFees.map((baseFee) => { - const floorFee = (baseFee * BigInt(floorBps)) / 10000n - const dynamicFee = (baseFee * BigInt(multiplierBps)) / 10000n - return dynamicFee > floorFee ? dynamicFee : floorFee - }) -} - -task( - 'mining-pass:update-fees', - 'Update mining pass fees based on current VAPE price' -) - .addOptionalParam('vapePrice', 'Override VAPE price (USD) instead of fetching') - .addFlag('dryRun', 'Print what would happen without sending transactions') - .setAction(async ({ vapePrice, dryRun }, { ethers, network }) => { - const diamondAddress = - LiquidMiningDiamond[network.name as keyof typeof LiquidMiningDiamond] - .address - - const DiamondManagerFacet = await ethers.getContractAt( - 'DiamondManagerFacet', - diamondAddress - ) - - // ── 1. Fetch VAPE price ────────────────────────────────────────── - const currentVAPEPrice = vapePrice - ? parseFloat(vapePrice) - : await fetchVAPEPrice() - - console.log(`\nšŸ’° VAPE Price: $${currentVAPEPrice.toFixed(4)}`) - console.log( - `šŸ“ Multiplier: ${((currentVAPEPrice / REFERENCE_VAPE_PRICE) * 100).toFixed(1)}% of reference ($${REFERENCE_VAPE_PRICE})` - ) - - // ── 2. Read base fees from contract ────────────────────────────── - const baseFees: bigint[] = [] - for (let i = 0; i < NUM_TIERS; i++) { - const fee = await DiamondManagerFacet.getBaseMiningPassTierFee(i) - baseFees.push(fee) - } - - // ── 3. Read current fees from contract ─────────────────────────── - const currentFees: bigint[] = [] - for (let i = 0; i < NUM_TIERS; i++) { - const fee = await DiamondManagerFacet.getMiningPassTierFee(i) - currentFees.push(fee) - } - - // ── 4. Calculate dynamic fees ──────────────────────────────────── - const dynamicFees = calculateDynamicFees( - baseFees, - currentVAPEPrice, - FLOOR_BPS - ) - - console.log('\nšŸ“‹ Mining Pass Fee Update:') - console.log('Tier | Base Fee ($) | Current ($) | New Fee ($) | Change') - console.log('-----|-------------|-------------|-------------|-------') - for (let i = 0; i < NUM_TIERS; i++) { - const base = Number(baseFees[i]) / 1e6 - const current = Number(currentFees[i]) / 1e6 - const dynamic = Number(dynamicFees[i]) / 1e6 - const change = - base > 0 ? `${(((dynamic - base) / base) * 100).toFixed(0)}%` : '-' - console.log( - ` ${i.toString().padStart(2)} | ${base.toFixed(2).padStart(11)} | ${current.toFixed(2).padStart(11)} | ${dynamic.toFixed(2).padStart(11)} | ${change}` - ) - } - - if (dryRun) { - console.log('\nšŸ Dry run complete — no transactions sent.') - return - } - - // ── 5. Update mining pass fees ─────────────────────────────────── - console.log('\nā³ Updating mining pass fees...') - const feesTx = await DiamondManagerFacet.setMiningPassFees(dynamicFees) - await logTx(feesTx) - console.log('āœ… Mining pass fees updated') - }) diff --git a/test/foundry/fork/ProdForkUpgrade.t.sol b/test/foundry/fork/ProdForkUpgrade.t.sol index be36fb0..2067165 100644 --- a/test/foundry/fork/ProdForkUpgrade.t.sol +++ b/test/foundry/fork/ProdForkUpgrade.t.sol @@ -104,6 +104,63 @@ contract ProdForkUpgradeTest is Test { assertEq(diamond.getStratosphereAddress(), stratBefore, "stratosphere changed"); } + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: getMiningPassTierFee RETURNS EXISTING FEES + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Immediately after upgrade (before any admin init), + /// getMiningPassTierFee must return the same fees that were + /// already set via DiamondInit. The UI can call this safely. + function test_ProdFork_PostUpgrade_GetMiningPassTierFeeReturnsExisting() public { + // Snapshot existing fees BEFORE upgrade via raw storage (slot 17 mapping) + uint256[11] memory feesBefore; + for (uint256 i; i < 11; i++) { + // mapping slot = keccak256(abi.encode(key, baseSlot)) + bytes32 slot = keccak256(abi.encode(i, uint256(17))); + feesBefore[i] = uint256(vm.load(DIAMOND, slot)); + } + + // Perform upgrade + _upgradeDiamondManagerFacet(); + + // Verify getMiningPassTierFee returns identical values + for (uint256 i; i < 11; i++) { + uint256 feeAfter = diamond.getMiningPassTierFee(i); + assertEq(feeAfter, feesBefore[i], string.concat("tier ", vm.toString(i), " fee changed")); + } + + // Log for visibility + console.log("Post-upgrade getMiningPassTierFee sanity:"); + for (uint256 i; i < 11; i++) { + console.log(" Tier", i, ":", diamond.getMiningPassTierFee(i)); + } + } + + // ═══════════════════════════════════════════════════════════════════ + // POST-UPGRADE: miningPassFeeFloorBps VALUE + // ═══════════════════════════════════════════════════════════════════ + + /// @notice Log and verify the miningPassFeeFloorBps value after upgrade. + /// On a fresh prod upgrade (no init), slot 28 should be 0. + function test_ProdFork_PostUpgrade_MiningPassFeeFloorBps() public { + // Read raw slot 28 before upgrade + uint256 rawBefore = uint256(vm.load(DIAMOND, bytes32(uint256(28)))); + console.log("miningPassFeeFloorBps (raw slot 28) BEFORE upgrade:", rawBefore); + + _upgradeDiamondManagerFacet(); + + // Read via getter after upgrade + uint256 floorBps = diamond.getMiningPassFeeFloorBps(); + console.log("miningPassFeeFloorBps (getter) AFTER upgrade:", floorBps); + + // Read raw slot 28 after upgrade (should be unchanged) + uint256 rawAfter = uint256(vm.load(DIAMOND, bytes32(uint256(28)))); + console.log("miningPassFeeFloorBps (raw slot 28) AFTER upgrade:", rawAfter); + + assertEq(rawAfter, rawBefore, "slot 28 should not change during upgrade"); + assertEq(floorBps, rawAfter, "getter should match raw slot"); + } + // ═══════════════════════════════════════════════════════════════════ // POST-UPGRADE: GENERAL SLOT INTEGRITY // ═══════════════════════════════════════════════════════════════════ From 1e1fcb56938abda5219ee7e62659c460ff5a4bc0 Mon Sep 17 00:00:00 2001 From: ihiteshagrawal Date: Mon, 2 Mar 2026 10:29:17 +0530 Subject: [PATCH 34/34] fix: correct logging order and validate VAPE price input in mining pass fee task --- tasks/miningPassFees.ts | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/tasks/miningPassFees.ts b/tasks/miningPassFees.ts index 991f87c..81cf434 100644 --- a/tasks/miningPassFees.ts +++ b/tasks/miningPassFees.ts @@ -74,8 +74,8 @@ task( const depositLimit = await manager.getMiningPassTierDepositLimit(t) console.log(`\n── Tier ${t} ──`) - console.log(` Base Fee: $${fmtUSDC(currentFee)}`) - console.log(` Current Fee: $${fmtUSDC(baseFee)}`) + console.log(` Base Fee: $${fmtUSDC(baseFee)}`) + console.log(` Current Fee: $${fmtUSDC(currentFee)}`) console.log(` Floor Fee: $${fmtUSDC(floorFee)}`) console.log( ` Deposit Limit: ${depositLimit === BigInt(2) ** BigInt(256) - BigInt(1) ? 'āˆž' : `${(Number(depositLimit) / 1e18).toLocaleString()} VPND`}` @@ -126,9 +126,18 @@ task( ) // ── 1. Fetch VAPE price ────────────────────────────────────────── - const currentVAPEPrice = vapePrice - ? parseFloat(vapePrice) - : await fetchVAPEPrice() + let currentVAPEPrice: number + if (vapePrice) { + const parsed = parseFloat(vapePrice) + if (!Number.isFinite(parsed) || parsed <= 0) { + throw new Error( + `Invalid --vape-price "${vapePrice}": must be a finite number > 0` + ) + } + currentVAPEPrice = parsed + } else { + currentVAPEPrice = await fetchVAPEPrice() + } console.log(`\nšŸ’° VAPE Price: $${currentVAPEPrice.toFixed(4)}`) console.log( @@ -149,11 +158,18 @@ task( currentFees.push(fee) } - // ── 4. Calculate dynamic fees ──────────────────────────────────── + // ── 4. Read on-chain floor & calculate dynamic fees ───────────── + const onChainFloorBps = Number(await manager.getMiningPassFeeFloorBps()) + const effectiveFloorBps = + onChainFloorBps > 0 ? onChainFloorBps : FLOOR_BPS + console.log( + `šŸ›”ļø Floor: ${effectiveFloorBps} bps (${(effectiveFloorBps / 100).toFixed(1)}%)${onChainFloorBps === 0 ? ' [fallback — on-chain not set]' : ''}` + ) + const dynamicFees = calculateDynamicFees( baseFees, currentVAPEPrice, - FLOOR_BPS + effectiveFloorBps ) console.log('\nšŸ“‹ Mining Pass Fee Update:')