{
  "name": "LongerStakingRewards",
  "compiler": "0.8.28+commit.7893614a",
  "settings": {
    "compilationTarget": {
      "src/LongerStakingRewards.sol": "LongerStakingRewards"
    },
    "evmVersion": "cancun",
    "libraries": {},
    "metadata": {
      "bytecodeHash": "ipfs"
    },
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "remappings": []
  },
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "stakingToken",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "rewards",
          "type": "address[]",
          "internalType": "address[]"
        },
        {
          "name": "maturation",
          "type": "uint32",
          "internalType": "uint32"
        },
        {
          "name": "remainder",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "receive",
      "stateMutability": "payable"
    },
    {
      "type": "function",
      "name": "accountedBalance",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "activate",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "activateAt",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "active",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "claim",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "rewardIndex",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "amount",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "claimable",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "configHash",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "deposit",
      "inputs": [
        {
          "name": "amount",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "emptyPoolCredit",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "emptyPoolRecipient",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "globalRemainder",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "holdingPeriod",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint32",
          "internalType": "uint32"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lastAccumulator",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "lifetimeFunding",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "pending",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "releaseEmptyPool",
      "inputs": [
        {
          "name": "rewardIndex",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "rewardCount",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "rewardPerToken",
      "inputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "rewardTokens",
      "inputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "stakeToken",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "sync",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "totalActive",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "totalDeposited",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "withdraw",
      "inputs": [
        {
          "name": "pendingAmount",
          "type": "uint128",
          "internalType": "uint128"
        },
        {
          "name": "activeAmount",
          "type": "uint128",
          "internalType": "uint128"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "withdrawPrincipal",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "Activated",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Claimed",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "token",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Deposited",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "activateAt",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Funded",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "eligibleStake",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "Withdrawn",
      "inputs": [
        {
          "name": "account",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "pendingAmount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        },
        {
          "name": "activeAmount",
          "type": "uint256",
          "indexed": false,
          "internalType": "uint256"
        }
      ],
      "anonymous": false
    },
    {
      "type": "error",
      "name": "BalanceDecreased",
      "inputs": []
    },
    {
      "type": "error",
      "name": "CapacityExceeded",
      "inputs": []
    },
    {
      "type": "error",
      "name": "InvalidConfiguration",
      "inputs": []
    },
    {
      "type": "error",
      "name": "NotMature",
      "inputs": []
    },
    {
      "type": "error",
      "name": "ReentrantCall",
      "inputs": []
    },
    {
      "type": "error",
      "name": "TransferFailed",
      "inputs": []
    },
    {
      "type": "error",
      "name": "UnsupportedCurrency",
      "inputs": []
    }
  ],
  "bytecode": "0x610100604052348015610010575f5ffd5b50604051611bf9380380611bf983398101604081905261002f916102c2565b6001600160a01b0384163b158061004557508251155b80610051575060048351115b80610060575063ffffffff8216155b8061007257506001600160a01b038116155b8061008557506001600160a01b03811630145b156100a35760405163c52a9bd360e01b815260040160405180910390fd5b5f5b8351811015610192578381815181106100c0576100c06103bf565b60200260200101516001600160a01b03163b5f14806101095750846001600160a01b03168482815181106100f6576100f66103bf565b60200260200101516001600160a01b0316145b8061016c57505f8111801561016c5750836101256001836103d3565b81518110610135576101356103bf565b60200260200101516001600160a01b0316848281518110610158576101586103bf565b60200260200101516001600160a01b031611155b1561018a5760405163c52a9bd360e01b815260040160405180910390fd5b6001016100a5565b506001600160a01b03841660805282516101b3906001906020860190610209565b5063ffffffff821660c0526001600160a01b03811660a0526040516101e490469086908690869086906020016103f8565b60408051601f19818403018152919052805160209091012060e0525061048292505050565b828054828255905f5260205f2090810192821561025c579160200282015b8281111561025c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610227565b5061026892915061026c565b5090565b5b80821115610268575f815560010161026d565b80516001600160a01b0381168114610296575f5ffd5b919050565b634e487b7160e01b5f52604160045260245ffd5b805163ffffffff81168114610296575f5ffd5b5f5f5f5f608085870312156102d5575f5ffd5b6102de85610280565b60208601519094506001600160401b038111156102f9575f5ffd5b8501601f81018713610309575f5ffd5b80516001600160401b038111156103225761032261029b565b604051600582901b90603f8201601f191681016001600160401b03811182821017156103505761035061029b565b60405291825260208184018101929081018a84111561036d575f5ffd5b6020850194505b838510156103935761038585610280565b815260209485019401610374565b5095506103a692505050604086016102af565b91506103b460608601610280565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b818103818111156103f257634e487b7160e01b5f52601160045260245ffd5b92915050565b8581526001600160a01b03851660208083019190915260a06040830181905285519083018190525f9186019060c0840190835b818110156104525783516001600160a01b031683526020938401939092019160010161042b565b505063ffffffff861660608501526001600160a01b038516608085015291506104789050565b9695505050505050565b60805160a05160c05160e05161170c6104ed5f395f6104cc01525f8181610470015261087001525f818161018001528181610ac60152610af701525f818161028b015281816106f901528181610744015281816107ae01528181610bfc0152610d67015261170c5ff3fe608060405260043610610164575f3560e01c806379085425116100cd578063dda6be3f11610087578063e59adeaf11610062578063e59adeaf146104ee578063f12297771461050d578063ff50abdc14610538578063fff6cae91461054d575f5ffd5b8063dda6be3f1461045f578063e1f06f54146104a7578063e1f1176d146104bb575f5ffd5b8063790854251461038d5780637bb7bed1146103a1578063a7838c8a146103c0578063aad3ec96146103eb578063ab539ebf1461040a578063d4570c1c14610429575f5ffd5b806354469aea1161011e57806354469aea146102ad57806357759600146102cc5780635de36f04146102e15780635eebea201461030c57806370eb05c1146103375780637356a0ad14610362575f5ffd5b806317035f121461016f5780631c5a9d9c146101bf5780634796da4b146101e05780634b6698bc146102195780634ea713271461024f57806351ed6a301461027a575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ca575f5ffd5b506101de6101d93660046114fe565b610561565b005b3480156101eb575f5ffd5b5061020b6101fa3660046114fe565b60066020525f908152604090205481565b6040519081526020016101b6565b348015610224575f5ffd5b5061020b61023336600461151e565b600c60209081525f928352604080842090915290825290205481565b34801561025a575f5ffd5b5061020b6102693660046114fe565b60046020525f908152604090205481565b348015610285575f5ffd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b8575f5ffd5b506101de6102c7366004611565565b610693565b3480156102d7575f5ffd5b5061020b60025481565b3480156102ec575f5ffd5b5061020b6102fb3660046114fe565b600b6020525f908152604090205481565b348015610317575f5ffd5b5061020b6103263660046114fe565b60056020525f908152604090205481565b348015610342575f5ffd5b5061020b6103513660046114fe565b60086020525f908152604090205481565b34801561036d575f5ffd5b5061020b61037c3660046114fe565b600a6020525f908152604090205481565b348015610398575f5ffd5b5060015461020b565b3480156103ac575f5ffd5b506101a26103bb36600461157e565b6108ea565b3480156103cb575f5ffd5b5061020b6103da3660046114fe565b60096020525f908152604090205481565b3480156103f6575f5ffd5b5061020b610405366004611595565b610912565b348015610415575f5ffd5b506101de61042436600461157e565b610a28565b348015610434575f5ffd5b5061020b61044336600461151e565b600d60209081525f928352604080842090915290825290205481565b34801561046a575f5ffd5b506104927f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101b6565b3480156104b2575f5ffd5b506101de610b60565b3480156104c6575f5ffd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f9575f5ffd5b506101de6105083660046115bd565b610c63565b348015610518575f5ffd5b5061020b6105273660046114fe565b60076020525f908152604090205481565b348015610543575f5ffd5b5061020b60035481565b348015610558575f5ffd5b506101de610ddf565b5f5415610581576040516306fda65d60e31b815260040160405180910390fd5b60015f9081556001600160a01b03821681526005602052604090205415806105bf57506001600160a01b0381165f9081526006602052604090205442105b156105dd57604051638ac6f56360e01b815260040160405180910390fd5b6105e5610e10565b6105ee81610e56565b6001600160a01b0381165f90815260056020908152604080832080549084905560068352818420849055600490925282208054919283926106309084906115f9565b925050819055508060025f82825461064891906115f9565b90915550506040518181526001600160a01b038316907fcffdf6de62e8d9ae544ba4c36565fe4bcef3c1a96f174abbe6c56e25e2b220ed906020015b60405180910390a250505f8055565b5f54156106b3576040516306fda65d60e31b815260040160405180910390fd5b60015f9081556001600160801b03821690036106e25760405163c52a9bd360e01b815260040160405180910390fd5b6106ea610e10565b6106f333610e56565b5f61071d7f0000000000000000000000000000000000000000000000000000000000000000610e9e565b6040513360248201523060448201526001600160801b0384166064820152909150610796907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b179052610f8f565b6107a96001600160801b038316826115f9565b6107d27f0000000000000000000000000000000000000000000000000000000000000000610e9e565b146107f0576040516312171d8360e31b815260040160405180910390fd5b816001600160801b031660035f82825461080a91906115f9565b90915550506003546001600160801b031015610839576040516304ffa0ff60e51b815260040160405180910390fd5b335f90815260056020526040812080546001600160801b03851692906108609084906115f9565b90915550610896905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426115f9565b335f8181526006602090815260409182902084905581516001600160801b03871681529081019390935290917f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca9101610684565b600181815481106108f9575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f805415610933576040516306fda65d60e31b815260040160405180910390fd5b60015f819055505f6001838154811061094e5761094e611612565b5f918252602090912001546001600160a01b0316905061096d8161106f565b610977848261128a565b6001600160a01b038481165f908152600d6020908152604080832093851683529281528282208054908390556009909152918120805492945084929091906109c0908490611626565b909155506109d19050818584611403565b806001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268384604051610a1691815260200190565b60405180910390a3505f805592915050565b5f5415610a48576040516306fda65d60e31b815260040160405180910390fd5b60015f819055505f60018281548110610a6357610a63611612565b5f918252602090912001546001600160a01b03169050610a828161106f565b6001600160a01b0381165f908152600b6020908152604080832080549084905560099092528220805491928392610aba908490611626565b90915550610aeb9050827f000000000000000000000000000000000000000000000000000000000000000083611403565b816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051610b5091815260200190565b60405180910390a350505f805550565b5f5415610b80576040516306fda65d60e31b815260040160405180910390fd5b60015f55610b8d33610e56565b335f90815260056020908152604080832080546004845282852080549286905585905560069093529083208390556002805492939192839290610bd1908490611626565b90915550610be1905081836115f9565b60035f828254610bf19190611626565b90915550610c2b90507f000000000000000000000000000000000000000000000000000000000000000033610c2684866115f9565b611403565b604080518381526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc69101610684565b5f5415610c83576040516306fda65d60e31b815260040160405180910390fd5b60015f55610c8f610e10565b610c9833610e56565b335f90815260056020526040812080546001600160801b0385169290610cbf908490611626565b9091555050335f90815260046020526040812080546001600160801b0384169290610ceb908490611626565b92505081905550806001600160801b031660025f828254610d0c9190611626565b90915550610d2890506001600160801b038083169084166115f9565b60035f828254610d389190611626565b9091555050335f908152600560205260408120549003610d6257335f908152600660205260408120555b610d9d7f000000000000000000000000000000000000000000000000000000000000000033610c266001600160801b038086169087166115f9565b604080516001600160801b0380851682528316602082015233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc69101610684565b5f5415610dff576040516306fda65d60e31b815260040160405180910390fd5b60015f55610e0b610e10565b5f8055565b5f5b600154811015610e5357610e4b60018281548110610e3257610e32611612565b5f918252602090912001546001600160a01b031661106f565b600101610e12565b50565b5f5b600154811015610e9a57610e928260018381548110610e7957610e79611612565b5f918252602090912001546001600160a01b031661128a565b600101610e58565b5050565b5f6001600160a01b038216610eb4575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b17905251610f049190611639565b5f60405180830381855afa9150503d805f8114610f3c576040519150601f19603f3d011682016040523d82523d5f602084013e610f41565b606091505b5091509150811580610f5557508051602014155b15610f73576040516312171d8360e31b815260040160405180910390fd5b80806020019051810190610f87919061164f565b949350505050565b816001600160a01b03163b5f03610fb9576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b031683604051610fd39190611639565b5f604051808303815f865af19150503d805f811461100c576040519150601f19603f3d011682016040523d82523d5f602084013e611011565b606091505b509150915081158061104b575080511580159061104b57508051602014158061104b5750808060200190518101906110499190611666565b155b15611069576040516312171d8360e31b815260040160405180910390fd5b50505050565b5f61107982610e9e565b6001600160a01b0383165f908152600960205260409020549091508110156110b45760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600960205260408120546110d69083611626565b9050805f036110e457505050565b6001600160a01b0383165f908152600a60205260408120805483929061110b9084906115f9565b90915550506001600160a01b0383165f908152600a60205260409020546001600160801b03101561114f576040516304ffa0ff60e51b815260040160405180910390fd5b6001600160a01b0383165f90815260096020526040812083905560025490036111a4576001600160a01b0383165f908152600b6020526040812080548392906111999084906115f9565b909155506112379050565b6001600160a01b0383165f908152600860205260408120546111ca600160801b84611685565b6111d491906115f9565b9050600254816111e491906116b0565b6001600160a01b0385165f908152600760205260408120805490919061120b9084906115f9565b909155505060025461121d90826116c3565b6001600160a01b0385165f90815260086020526040902055505b826001600160a01b03167fcd909ec339185c4598a4096e174308fbdf136d117f230960f873a2f2e81f63af8260025460405161127d929190918252602082015260400190565b60405180910390a2505050565b6001600160a01b038083165f908152600c6020908152604080832093851683529281528282205460079091529181205490916112c591611626565b6001600160a01b038085165f818152600e602090815260408083209488168352938152838220549282526004905291822054929350909161130a600160801b856116c3565b6113149190611685565b61131e91906115f9565b905061132e600160801b826116b0565b6001600160a01b0385165f90815260046020526040902054611354600160801b856116b0565b61135e9190611685565b61136891906115f9565b6001600160a01b038086165f908152600d602090815260408083209388168352929052908120805490919061139e9084906115f9565b909155506113b29050600160801b826116c3565b6001600160a01b039485165f818152600e6020908152604080832097909816808352968152878220939093556007835286812054918152600c83528681209581529490915293909220929092555050565b805f0361140f57505050565b6001600160a01b03831661148d575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611466576040519150601f19603f3d011682016040523d82523d5f602084013e61146b565b606091505b5050905080611069576040516312171d8360e31b815260040160405180910390fd5b6040516001600160a01b0383166024820152604481018290526114de90849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052610f8f565b505050565b80356001600160a01b03811681146114f9575f5ffd5b919050565b5f6020828403121561150e575f5ffd5b611517826114e3565b9392505050565b5f5f6040838503121561152f575f5ffd5b611538836114e3565b9150611546602084016114e3565b90509250929050565b80356001600160801b03811681146114f9575f5ffd5b5f60208284031215611575575f5ffd5b6115178261154f565b5f6020828403121561158e575f5ffd5b5035919050565b5f5f604083850312156115a6575f5ffd5b6115af836114e3565b946020939093013593505050565b5f5f604083850312156115ce575f5ffd5b6115d78361154f565b91506115466020840161154f565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561160c5761160c6115e5565b92915050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561160c5761160c6115e5565b5f82518060208501845e5f920191825250919050565b5f6020828403121561165f575f5ffd5b5051919050565b5f60208284031215611676575f5ffd5b81518015158114611517575f5ffd5b808202811582820484141761160c5761160c6115e5565b634e487b7160e01b5f52601260045260245ffd5b5f826116be576116be61169c565b500490565b5f826116d1576116d161169c565b50069056fea264697066735822122044f5294ec0f3f25d202bbfcbdc85050c18538717b29e912dc246c52073891d7264736f6c634300081c0033",
  "deployedBytecode": "0x608060405260043610610164575f3560e01c806379085425116100cd578063dda6be3f11610087578063e59adeaf11610062578063e59adeaf146104ee578063f12297771461050d578063ff50abdc14610538578063fff6cae91461054d575f5ffd5b8063dda6be3f1461045f578063e1f06f54146104a7578063e1f1176d146104bb575f5ffd5b8063790854251461038d5780637bb7bed1146103a1578063a7838c8a146103c0578063aad3ec96146103eb578063ab539ebf1461040a578063d4570c1c14610429575f5ffd5b806354469aea1161011e57806354469aea146102ad57806357759600146102cc5780635de36f04146102e15780635eebea201461030c57806370eb05c1146103375780637356a0ad14610362575f5ffd5b806317035f121461016f5780631c5a9d9c146101bf5780634796da4b146101e05780634b6698bc146102195780634ea713271461024f57806351ed6a301461027a575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101ca575f5ffd5b506101de6101d93660046114fe565b610561565b005b3480156101eb575f5ffd5b5061020b6101fa3660046114fe565b60066020525f908152604090205481565b6040519081526020016101b6565b348015610224575f5ffd5b5061020b61023336600461151e565b600c60209081525f928352604080842090915290825290205481565b34801561025a575f5ffd5b5061020b6102693660046114fe565b60046020525f908152604090205481565b348015610285575f5ffd5b506101a27f000000000000000000000000000000000000000000000000000000000000000081565b3480156102b8575f5ffd5b506101de6102c7366004611565565b610693565b3480156102d7575f5ffd5b5061020b60025481565b3480156102ec575f5ffd5b5061020b6102fb3660046114fe565b600b6020525f908152604090205481565b348015610317575f5ffd5b5061020b6103263660046114fe565b60056020525f908152604090205481565b348015610342575f5ffd5b5061020b6103513660046114fe565b60086020525f908152604090205481565b34801561036d575f5ffd5b5061020b61037c3660046114fe565b600a6020525f908152604090205481565b348015610398575f5ffd5b5060015461020b565b3480156103ac575f5ffd5b506101a26103bb36600461157e565b6108ea565b3480156103cb575f5ffd5b5061020b6103da3660046114fe565b60096020525f908152604090205481565b3480156103f6575f5ffd5b5061020b610405366004611595565b610912565b348015610415575f5ffd5b506101de61042436600461157e565b610a28565b348015610434575f5ffd5b5061020b61044336600461151e565b600d60209081525f928352604080842090915290825290205481565b34801561046a575f5ffd5b506104927f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016101b6565b3480156104b2575f5ffd5b506101de610b60565b3480156104c6575f5ffd5b5061020b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f9575f5ffd5b506101de6105083660046115bd565b610c63565b348015610518575f5ffd5b5061020b6105273660046114fe565b60076020525f908152604090205481565b348015610543575f5ffd5b5061020b60035481565b348015610558575f5ffd5b506101de610ddf565b5f5415610581576040516306fda65d60e31b815260040160405180910390fd5b60015f9081556001600160a01b03821681526005602052604090205415806105bf57506001600160a01b0381165f9081526006602052604090205442105b156105dd57604051638ac6f56360e01b815260040160405180910390fd5b6105e5610e10565b6105ee81610e56565b6001600160a01b0381165f90815260056020908152604080832080549084905560068352818420849055600490925282208054919283926106309084906115f9565b925050819055508060025f82825461064891906115f9565b90915550506040518181526001600160a01b038316907fcffdf6de62e8d9ae544ba4c36565fe4bcef3c1a96f174abbe6c56e25e2b220ed906020015b60405180910390a250505f8055565b5f54156106b3576040516306fda65d60e31b815260040160405180910390fd5b60015f9081556001600160801b03821690036106e25760405163c52a9bd360e01b815260040160405180910390fd5b6106ea610e10565b6106f333610e56565b5f61071d7f0000000000000000000000000000000000000000000000000000000000000000610e9e565b6040513360248201523060448201526001600160801b0384166064820152909150610796907f00000000000000000000000000000000000000000000000000000000000000009060840160408051601f198184030181529190526020810180516001600160e01b03166323b872dd60e01b179052610f8f565b6107a96001600160801b038316826115f9565b6107d27f0000000000000000000000000000000000000000000000000000000000000000610e9e565b146107f0576040516312171d8360e31b815260040160405180910390fd5b816001600160801b031660035f82825461080a91906115f9565b90915550506003546001600160801b031015610839576040516304ffa0ff60e51b815260040160405180910390fd5b335f90815260056020526040812080546001600160801b03851692906108609084906115f9565b90915550610896905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016426115f9565b335f8181526006602090815260409182902084905581516001600160801b03871681529081019390935290917f73a19dd210f1a7f902193214c0ee91dd35ee5b4d920cba8d519eca65a7b488ca9101610684565b600181815481106108f9575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f805415610933576040516306fda65d60e31b815260040160405180910390fd5b60015f819055505f6001838154811061094e5761094e611612565b5f918252602090912001546001600160a01b0316905061096d8161106f565b610977848261128a565b6001600160a01b038481165f908152600d6020908152604080832093851683529281528282208054908390556009909152918120805492945084929091906109c0908490611626565b909155506109d19050818584611403565b806001600160a01b0316846001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268384604051610a1691815260200190565b60405180910390a3505f805592915050565b5f5415610a48576040516306fda65d60e31b815260040160405180910390fd5b60015f819055505f60018281548110610a6357610a63611612565b5f918252602090912001546001600160a01b03169050610a828161106f565b6001600160a01b0381165f908152600b6020908152604080832080549084905560099092528220805491928392610aba908490611626565b90915550610aeb9050827f000000000000000000000000000000000000000000000000000000000000000083611403565b816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03167ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd399268383604051610b5091815260200190565b60405180910390a350505f805550565b5f5415610b80576040516306fda65d60e31b815260040160405180910390fd5b60015f55610b8d33610e56565b335f90815260056020908152604080832080546004845282852080549286905585905560069093529083208390556002805492939192839290610bd1908490611626565b90915550610be1905081836115f9565b60035f828254610bf19190611626565b90915550610c2b90507f000000000000000000000000000000000000000000000000000000000000000033610c2684866115f9565b611403565b604080518381526020810183905233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc69101610684565b5f5415610c83576040516306fda65d60e31b815260040160405180910390fd5b60015f55610c8f610e10565b610c9833610e56565b335f90815260056020526040812080546001600160801b0385169290610cbf908490611626565b9091555050335f90815260046020526040812080546001600160801b0384169290610ceb908490611626565b92505081905550806001600160801b031660025f828254610d0c9190611626565b90915550610d2890506001600160801b038083169084166115f9565b60035f828254610d389190611626565b9091555050335f908152600560205260408120549003610d6257335f908152600660205260408120555b610d9d7f000000000000000000000000000000000000000000000000000000000000000033610c266001600160801b038086169087166115f9565b604080516001600160801b0380851682528316602082015233917f92ccf450a286a957af52509bc1c9939d1a6a481783e142e41e2499f0bb66ebc69101610684565b5f5415610dff576040516306fda65d60e31b815260040160405180910390fd5b60015f55610e0b610e10565b5f8055565b5f5b600154811015610e5357610e4b60018281548110610e3257610e32611612565b5f918252602090912001546001600160a01b031661106f565b600101610e12565b50565b5f5b600154811015610e9a57610e928260018381548110610e7957610e79611612565b5f918252602090912001546001600160a01b031661128a565b600101610e58565b5050565b5f6001600160a01b038216610eb4575047919050565b6040513060248201525f9081906001600160a01b0385169060440160408051601f198184030181529181526020820180516001600160e01b03166370a0823160e01b17905251610f049190611639565b5f60405180830381855afa9150503d805f8114610f3c576040519150601f19603f3d011682016040523d82523d5f602084013e610f41565b606091505b5091509150811580610f5557508051602014155b15610f73576040516312171d8360e31b815260040160405180910390fd5b80806020019051810190610f87919061164f565b949350505050565b816001600160a01b03163b5f03610fb9576040516312171d8360e31b815260040160405180910390fd5b5f5f836001600160a01b031683604051610fd39190611639565b5f604051808303815f865af19150503d805f811461100c576040519150601f19603f3d011682016040523d82523d5f602084013e611011565b606091505b509150915081158061104b575080511580159061104b57508051602014158061104b5750808060200190518101906110499190611666565b155b15611069576040516312171d8360e31b815260040160405180910390fd5b50505050565b5f61107982610e9e565b6001600160a01b0383165f908152600960205260409020549091508110156110b45760405163a54d597f60e01b815260040160405180910390fd5b6001600160a01b0382165f908152600960205260408120546110d69083611626565b9050805f036110e457505050565b6001600160a01b0383165f908152600a60205260408120805483929061110b9084906115f9565b90915550506001600160a01b0383165f908152600a60205260409020546001600160801b03101561114f576040516304ffa0ff60e51b815260040160405180910390fd5b6001600160a01b0383165f90815260096020526040812083905560025490036111a4576001600160a01b0383165f908152600b6020526040812080548392906111999084906115f9565b909155506112379050565b6001600160a01b0383165f908152600860205260408120546111ca600160801b84611685565b6111d491906115f9565b9050600254816111e491906116b0565b6001600160a01b0385165f908152600760205260408120805490919061120b9084906115f9565b909155505060025461121d90826116c3565b6001600160a01b0385165f90815260086020526040902055505b826001600160a01b03167fcd909ec339185c4598a4096e174308fbdf136d117f230960f873a2f2e81f63af8260025460405161127d929190918252602082015260400190565b60405180910390a2505050565b6001600160a01b038083165f908152600c6020908152604080832093851683529281528282205460079091529181205490916112c591611626565b6001600160a01b038085165f818152600e602090815260408083209488168352938152838220549282526004905291822054929350909161130a600160801b856116c3565b6113149190611685565b61131e91906115f9565b905061132e600160801b826116b0565b6001600160a01b0385165f90815260046020526040902054611354600160801b856116b0565b61135e9190611685565b61136891906115f9565b6001600160a01b038086165f908152600d602090815260408083209388168352929052908120805490919061139e9084906115f9565b909155506113b29050600160801b826116c3565b6001600160a01b039485165f818152600e6020908152604080832097909816808352968152878220939093556007835286812054918152600c83528681209581529490915293909220929092555050565b805f0361140f57505050565b6001600160a01b03831661148d575f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611466576040519150601f19603f3d011682016040523d82523d5f602084013e61146b565b606091505b5050905080611069576040516312171d8360e31b815260040160405180910390fd5b6040516001600160a01b0383166024820152604481018290526114de90849060640160408051601f198184030181529190526020810180516001600160e01b031663a9059cbb60e01b179052610f8f565b505050565b80356001600160a01b03811681146114f9575f5ffd5b919050565b5f6020828403121561150e575f5ffd5b611517826114e3565b9392505050565b5f5f6040838503121561152f575f5ffd5b611538836114e3565b9150611546602084016114e3565b90509250929050565b80356001600160801b03811681146114f9575f5ffd5b5f60208284031215611575575f5ffd5b6115178261154f565b5f6020828403121561158e575f5ffd5b5035919050565b5f5f604083850312156115a6575f5ffd5b6115af836114e3565b946020939093013593505050565b5f5f604083850312156115ce575f5ffd5b6115d78361154f565b91506115466020840161154f565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561160c5761160c6115e5565b92915050565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561160c5761160c6115e5565b5f82518060208501845e5f920191825250919050565b5f6020828403121561165f575f5ffd5b5051919050565b5f60208284031215611676575f5ffd5b81518015158114611517575f5ffd5b808202811582820484141761160c5761160c6115e5565b634e487b7160e01b5f52601260045260245ffd5b5f826116be576116be61169c565b500490565b5f826116d1576116d161169c565b50069056fea264697066735822122044f5294ec0f3f25d202bbfcbdc85050c18538717b29e912dc246c52073891d7264736f6c634300081c0033",
  "immutableReferences": {
    "2281": [
      {
        "start": 651,
        "length": 32
      },
      {
        "start": 1785,
        "length": 32
      },
      {
        "start": 1860,
        "length": 32
      },
      {
        "start": 1966,
        "length": 32
      },
      {
        "start": 3068,
        "length": 32
      },
      {
        "start": 3431,
        "length": 32
      }
    ],
    "2283": [
      {
        "start": 384,
        "length": 32
      },
      {
        "start": 2758,
        "length": 32
      },
      {
        "start": 2807,
        "length": 32
      }
    ],
    "2285": [
      {
        "start": 1136,
        "length": 32
      },
      {
        "start": 2160,
        "length": 32
      }
    ],
    "2287": [
      {
        "start": 1228,
        "length": 32
      }
    ]
  },
  "creationCodeHash": "0x7370144ae986ceffad057934999195334effe6960ecf6f393c2a81b37455d49b"
}
