@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
867 lines (866 loc) • 37.2 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "ProtocolStakerMock",
"sourceName": "contracts/mocks/Stargate/ProtocolStakerMock.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "beneficiary",
"type": "address"
}
],
"name": "BeneficiarySet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "delegationID",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stake",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "multiplier",
"type": "uint8"
}
],
"name": "DelegationAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "delegationID",
"type": "uint256"
}
],
"name": "DelegationSignaledExit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "delegationID",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stake",
"type": "uint256"
}
],
"name": "DelegationWithdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "removed",
"type": "uint256"
}
],
"name": "StakeDecreased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "added",
"type": "uint256"
}
],
"name": "StakeIncreased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "endorser",
"type": "address"
},
{
"indexed": false,
"internalType": "uint32",
"name": "period",
"type": "uint32"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stake",
"type": "uint256"
}
],
"name": "ValidationQueued",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
}
],
"name": "ValidationSignaledExit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "stake",
"type": "uint256"
}
],
"name": "ValidationWithdrawn",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint8",
"name": "_multiplier",
"type": "uint8"
}
],
"name": "addDelegation",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint32",
"name": "_period",
"type": "uint32"
}
],
"name": "addValidation",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint256",
"name": "_amount",
"type": "uint256"
}
],
"name": "decreaseStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "delegations",
"outputs": [
{
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"internalType": "uint256",
"name": "stake",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "multiplier",
"type": "uint8"
},
{
"internalType": "bool",
"name": "isLocked",
"type": "bool"
},
{
"internalType": "uint32",
"name": "startPeriod",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "endPeriod",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "firstActive",
"outputs": [
{
"internalType": "address",
"name": "firstActive",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "firstQueued",
"outputs": [
{
"internalType": "address",
"name": "firstQueued",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
}
],
"name": "getDelegation",
"outputs": [
{
"internalType": "address",
"name": "validator",
"type": "address"
},
{
"internalType": "uint256",
"name": "stake",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "multiplier",
"type": "uint8"
},
{
"internalType": "bool",
"name": "isLocked",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
}
],
"name": "getDelegationPeriodDetails",
"outputs": [
{
"internalType": "uint32",
"name": "startPeriod",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "endPeriod",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint32",
"name": "_stakingPeriod",
"type": "uint32"
}
],
"name": "getDelegatorsRewards",
"outputs": [
{
"internalType": "uint256",
"name": "rewards",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "getValidation",
"outputs": [
{
"internalType": "address",
"name": "_endorser",
"type": "address"
},
{
"internalType": "uint256",
"name": "_stake",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_weight",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_queuedStake",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "_status",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "_offlineBlock",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "getValidationPeriodDetails",
"outputs": [
{
"internalType": "uint32",
"name": "period",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "startBlock",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "exitBlock",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "completedPeriods",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "getValidationTotals",
"outputs": [
{
"internalType": "uint256",
"name": "lockedVET",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "lockedWeight",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "queuedVET",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "exitingVET",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nextPeriodWeight",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getValidationsNum",
"outputs": [
{
"internalType": "uint64",
"name": "activeCount",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "queuedCount",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_id",
"type": "address"
}
],
"name": "getWithdrawable",
"outputs": [
{
"internalType": "uint256",
"name": "withdrawableVET",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
},
{
"internalType": "bool",
"name": "_isLocked",
"type": "bool"
}
],
"name": "helper__setDelegationIsLocked",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
},
{
"internalType": "uint32",
"name": "_startPeriod",
"type": "uint32"
}
],
"name": "helper__setDelegationStartPeriod",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
},
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "helper__setDelegationValidator",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_stargate",
"type": "address"
}
],
"name": "helper__setStargate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint32",
"name": "_completedPeriods",
"type": "uint32"
}
],
"name": "helper__setValidationCompletedPeriods",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "uint32",
"name": "_exitBlock",
"type": "uint32"
}
],
"name": "helper__setValidationExitBlock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "enum ProtocolStakerMock.ValidatorStatus",
"name": "_validatorStatus",
"type": "uint8"
}
],
"name": "helper__setValidatorStatus",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "increaseStake",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [],
"name": "issuance",
"outputs": [
{
"internalType": "uint256",
"name": "issued",
"type": "uint256"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_prev",
"type": "address"
}
],
"name": "next",
"outputs": [
{
"internalType": "address",
"name": "nextValidation",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "queuedStake",
"outputs": [
{
"internalType": "uint256",
"name": "_queuedStake",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
},
{
"internalType": "address",
"name": "_beneficiary",
"type": "address"
}
],
"name": "setBeneficiary",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
}
],
"name": "signalDelegationExit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "signalExit",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "totalStake",
"outputs": [
{
"internalType": "uint256",
"name": "_totalStake",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_totalWeight",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "validations",
"outputs": [
{
"internalType": "uint32",
"name": "startBlock",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "period",
"type": "uint32"
},
{
"internalType": "enum ProtocolStakerMock.ValidatorStatus",
"name": "status",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "exitBlock",
"type": "uint32"
},
{
"internalType": "uint32",
"name": "completedPeriods",
"type": "uint32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_delegationID",
"type": "uint256"
}
],
"name": "withdrawDelegation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_validator",
"type": "address"
}
],
"name": "withdrawStake",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x608060405234801561001057600080fd5b506111e5806100206000396000f3fe6080604052600436106101735760003560e01c80630dd35701146101785780630f4b6c661461020757806314ca9ae41461026b5780631a73ba01146102b65780631a9e215a146102d557806327cd4de11461032557806332cc6ae61461038557806337d07860146103b45780633b26ac221461040557806343b0de9a146104425780634981530c146104535780634bf9842c146104ab578063863623bb146104be5780638b0e9f3f146104d2578063ab73e316146104f3578063af8fef4e146104d2578063bdf36d4314610526578063c23a5cea1461056b578063c3c4b13814610586578063c4336c1c14610599578063cb652cef1461064c578063ce88abbd1461066c578063d6138ffe1461068c578063d719835c146106ac578063df0e307a146106c0578063e8e1a8b8146104be578063ebe3a069146106ac578063f4479fc8146106e0578063f52564ec1461072f578063f71553451461074a578063fddff039146107b9578063fdf20f81146107d9575b600080fd5b34801561018457600080fd5b506101ce610193366004610eef565b60009081526001602081905260409091208054918101546002909101546001600160a01b0390921692909160ff808216926101009092041690565b604080516001600160a01b039095168552602085019390935260ff90911691830191909152151560608201526080015b60405180910390f35b34801561021357600080fd5b5061024e610222366004610eef565b60009081526001602052604090206002015463ffffffff620100008204811692600160301b9092041690565b6040805163ffffffff9384168152929091166020830152016101fe565b34801561027757600080fd5b506102b4610286366004610f24565b60009182526001602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b005b3480156102c257600080fd5b506102b46102d1366004610f50565b5050565b3480156102e157600080fd5b506102f56102f0366004610f7a565b610831565b6040805163ffffffff958616815293851660208501529184169183019190915290911660608201526080016101fe565b34801561033157600080fd5b50610345610340366004610f7a565b6108f4565b604080516001600160a01b039097168752602087019590955293850192909252606084015260ff16608083015263ffffffff1660a082015260c0016101fe565b34801561039157600080fd5b506103a66103a0366004610f7a565b50600090565b6040519081526020016101fe565b3480156103c057600080fd5b506103dd6103cf366004610f7a565b506000908190819081908190565b604080519586526020860194909452928401919091526060830152608082015260a0016101fe565b34801561041157600080fd5b506102b4610420366004610f7a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6102b4610450366004610f7a565b50565b34801561045f57600080fd5b506102b461046e366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160681b0263ffffffff60681b19909216919091179055565b6103a66104b9366004610fda565b6109cb565b3480156104ca57600080fd5b5060006103a6565b3480156104de57600080fd5b506040805160008082526020820152016101fe565b3480156104ff57600080fd5b5061050e6103a0366004610f7a565b6040516001600160a01b0390911681526020016101fe565b34801561053257600080fd5b506102b4610541366004611017565b60009182526001602052604090912060020180549115156101000261ff0019909216919091179055565b34801561057757600080fd5b506102b4610450366004610f7a565b6102b4610594366004610fb0565b610b2e565b3480156105a557600080fd5b506106056105b4366004610eef565b60016020819052600091825260409091208054918101546002909101546001600160a01b039092169160ff8082169161010081049091169063ffffffff620100008204811691600160301b90041686565b604080516001600160a01b039097168752602087019590955260ff909316938501939093521515606084015263ffffffff91821660808401521660a082015260c0016101fe565b34801561065857600080fd5b506102b4610667366004610f7a565b610c13565b34801561067857600080fd5b506102b4610687366004610eef565b610d1b565b34801561069857600080fd5b506102b46106a7366004611041565b610d8f565b3480156106b857600080fd5b50600061050e565b3480156106cc57600080fd5b506102b46106db366004610eef565b610dd3565b3480156106ec57600080fd5b506102b46106fb366004611071565b600091825260016020526040909120600201805463ffffffff909216620100000265ffffffff000019909216919091179055565b34801561073b57600080fd5b506102b46102d1366004611094565b34801561075657600080fd5b506107a8610765366004610f7a565b60006020819052908152604090205463ffffffff80821691600160201b810482169160ff600160401b83041691600160481b8104821691600160681b9091041685565b6040516101fe9594939291906110d4565b3480156107c557600080fd5b506103a66107d4366004610fb0565b610e93565b3480156107e557600080fd5b506102b46107f4366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160481b0263ffffffff60481b19909216919091179055565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b820416948201949094528493849384938493929091830190600160401b900460ff166003811115610896576108966110be565b60038111156108a7576108a76110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151815160608301516080909301519199909850919650945092505050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452849384938493849384938493919291830190600160401b900460ff16600381111561095d5761095d6110be565b600381111561096e5761096e6110be565b8152905463ffffffff600160481b820481166020840152600160681b9091041660409182015281015190915060009081908190819060038111156109b4576109b46110be565b939c929b5090995097509095506000945092505050565b60028054600091600160a01b90910463ffffffff169060146109ec83611140565b82546101009290920a63ffffffff8181021990931691831602179091556040805160c0810182526001600160a01b0387168082523460208084019190915260ff88168385015260006060840181905291825281905291909120549092506080830191610a6191600160681b9004166002611163565b63ffffffff9081168252602091820181905260028054600160a01b90819004831660009081526001808652604091829020875181546001600160a01b0319166001600160a01b03909116178155958701519086015585015193820180546060870151608088015160a09098015160ff90971661ffff1990921691909117610100911515919091021762010000600160501b031916620100009685169690960263ffffffff60301b191695909517600160301b94841694909402939093179093559154041690505b92915050565b6040805160a08101825263ffffffff4381168252831660208201529081016001815263ffffffff6020808301829052600060409384018190526001600160a01b038716815280825283902084518154928601518416600160201b026001600160401b031990931693169290921717808255918301519091829060ff60401b1916600160401b836003811115610bc557610bc56110be565b021790555060608201518154608090930151600160481b600160881b0319909316600160481b63ffffffff9283160263ffffffff60681b191617600160681b91909316029190911790555050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452929091830190600160401b900460ff166003811115610c7057610c706110be565b6003811115610c8157610c816110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151608082015191925090610cc5906001611163565b610ccf9190611187565b8151610cdb9190611163565b6001600160a01b039092166000908152602081905260409020805463ffffffff93909316600160481b0263ffffffff60481b199093169290921790915550565b6000818152600160208181526040808420546001600160a01b031684529083905290912054610d5891600160681b90910463ffffffff1690611163565b600091825260016020526040909120600201805463ffffffff92909216600160301b0263ffffffff60301b19909216919091179055565b6001600160a01b0382166000908152602081905260409020805482919060ff60401b1916600160401b836003811115610dca57610dca6110be565b02179055505050565b600081815260016020819052604080832090910180549083905560025491519092916001600160a01b03169083908381818185875af1925050503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b5050905080610e8e5760405162461bcd60e51b815260206004820152601860248201527715da5d1a191c985dd1195b1959d85d1a5bdb91985a5b195960421b604482015260640160405180910390fd5b505050565b6001600160a01b038216600090815260208190526040812054610ec490600160681b900463ffffffff166001611163565b63ffffffff168263ffffffff161115610edf57506000610b28565b5067016345785d8a000092915050565b600060208284031215610f0157600080fd5b5035919050565b80356001600160a01b0381168114610f1f57600080fd5b919050565b60008060408385031215610f3757600080fd5b82359150610f4760208401610f08565b90509250929050565b60008060408385031215610f6357600080fd5b610f6c83610f08565b946020939093013593505050565b600060208284031215610f8c57600080fd5b610f9582610f08565b9392505050565b803563ffffffff81168114610f1f57600080fd5b60008060408385031215610fc357600080fd5b610fcc83610f08565b9150610f4760208401610f9c565b60008060408385031215610fed57600080fd5b610ff683610f08565b9150602083013560ff8116811461100c57600080fd5b809150509250929050565b6000806040838503121561102a57600080fd5b823591506020830135801515811461100c57600080fd5b6000806040838503121561105457600080fd5b61105d83610f08565b915060208301356004811061100c57600080fd5b6000806040838503121561108457600080fd5b82359150610f4760208401610f9c565b600080604083850312156110a757600080fd5b6110b083610f08565b9150610f4760208401610f08565b634e487b7160e01b600052602160045260246000fd5b63ffffffff8681168252858116602083015260a08201906004861061110957634e487b7160e01b600052602160045260246000fd5b85604084015280851660608401528084166080840152509695505050505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8083168181036111595761115961112a565b6001019392505050565b63ffffffff8181168382160190808211156111805761118061112a565b5092915050565b63ffffffff8181168382160280821691908281146111a7576111a761112a565b50509291505056fea264697066735822122002e6d5a647b591b8a537ef897196e2ef2590d00d27569b72632aa3aaf50e053f64736f6c63430008140033",
"deployedBytecode": "0x6080604052600436106101735760003560e01c80630dd35701146101785780630f4b6c661461020757806314ca9ae41461026b5780631a73ba01146102b65780631a9e215a146102d557806327cd4de11461032557806332cc6ae61461038557806337d07860146103b45780633b26ac221461040557806343b0de9a146104425780634981530c146104535780634bf9842c146104ab578063863623bb146104be5780638b0e9f3f146104d2578063ab73e316146104f3578063af8fef4e146104d2578063bdf36d4314610526578063c23a5cea1461056b578063c3c4b13814610586578063c4336c1c14610599578063cb652cef1461064c578063ce88abbd1461066c578063d6138ffe1461068c578063d719835c146106ac578063df0e307a146106c0578063e8e1a8b8146104be578063ebe3a069146106ac578063f4479fc8146106e0578063f52564ec1461072f578063f71553451461074a578063fddff039146107b9578063fdf20f81146107d9575b600080fd5b34801561018457600080fd5b506101ce610193366004610eef565b60009081526001602081905260409091208054918101546002909101546001600160a01b0390921692909160ff808216926101009092041690565b604080516001600160a01b039095168552602085019390935260ff90911691830191909152151560608201526080015b60405180910390f35b34801561021357600080fd5b5061024e610222366004610eef565b60009081526001602052604090206002015463ffffffff620100008204811692600160301b9092041690565b6040805163ffffffff9384168152929091166020830152016101fe565b34801561027757600080fd5b506102b4610286366004610f24565b60009182526001602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b005b3480156102c257600080fd5b506102b46102d1366004610f50565b5050565b3480156102e157600080fd5b506102f56102f0366004610f7a565b610831565b6040805163ffffffff958616815293851660208501529184169183019190915290911660608201526080016101fe565b34801561033157600080fd5b50610345610340366004610f7a565b6108f4565b604080516001600160a01b039097168752602087019590955293850192909252606084015260ff16608083015263ffffffff1660a082015260c0016101fe565b34801561039157600080fd5b506103a66103a0366004610f7a565b50600090565b6040519081526020016101fe565b3480156103c057600080fd5b506103dd6103cf366004610f7a565b506000908190819081908190565b604080519586526020860194909452928401919091526060830152608082015260a0016101fe565b34801561041157600080fd5b506102b4610420366004610f7a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6102b4610450366004610f7a565b50565b34801561045f57600080fd5b506102b461046e366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160681b0263ffffffff60681b19909216919091179055565b6103a66104b9366004610fda565b6109cb565b3480156104ca57600080fd5b5060006103a6565b3480156104de57600080fd5b506040805160008082526020820152016101fe565b3480156104ff57600080fd5b5061050e6103a0366004610f7a565b6040516001600160a01b0390911681526020016101fe565b34801561053257600080fd5b506102b4610541366004611017565b60009182526001602052604090912060020180549115156101000261ff0019909216919091179055565b34801561057757600080fd5b506102b4610450366004610f7a565b6102b4610594366004610fb0565b610b2e565b3480156105a557600080fd5b506106056105b4366004610eef565b60016020819052600091825260409091208054918101546002909101546001600160a01b039092169160ff8082169161010081049091169063ffffffff620100008204811691600160301b90041686565b604080516001600160a01b039097168752602087019590955260ff909316938501939093521515606084015263ffffffff91821660808401521660a082015260c0016101fe565b34801561065857600080fd5b506102b4610667366004610f7a565b610c13565b34801561067857600080fd5b506102b4610687366004610eef565b610d1b565b34801561069857600080fd5b506102b46106a7366004611041565b610d8f565b3480156106b857600080fd5b50600061050e565b3480156106cc57600080fd5b506102b46106db366004610eef565b610dd3565b3480156106ec57600080fd5b506102b46106fb366004611071565b600091825260016020526040909120600201805463ffffffff909216620100000265ffffffff000019909216919091179055565b34801561073b57600080fd5b506102b46102d1366004611094565b34801561075657600080fd5b506107a8610765366004610f7a565b60006020819052908152604090205463ffffffff80821691600160201b810482169160ff600160401b83041691600160481b8104821691600160681b9091041685565b6040516101fe9594939291906110d4565b3480156107c557600080fd5b506103a66107d4366004610fb0565b610e93565b3480156107e557600080fd5b506102b46107f4366004610fb0565b6001600160a01b039091166000908152602081905260409020805463ffffffff909216600160481b0263ffffffff60481b19909216919091179055565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b820416948201949094528493849384938493929091830190600160401b900460ff166003811115610896576108966110be565b60038111156108a7576108a76110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151815160608301516080909301519199909850919650945092505050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452849384938493849384938493919291830190600160401b900460ff16600381111561095d5761095d6110be565b600381111561096e5761096e6110be565b8152905463ffffffff600160481b820481166020840152600160681b9091041660409182015281015190915060009081908190819060038111156109b4576109b46110be565b939c929b5090995097509095506000945092505050565b60028054600091600160a01b90910463ffffffff169060146109ec83611140565b82546101009290920a63ffffffff8181021990931691831602179091556040805160c0810182526001600160a01b0387168082523460208084019190915260ff88168385015260006060840181905291825281905291909120549092506080830191610a6191600160681b9004166002611163565b63ffffffff9081168252602091820181905260028054600160a01b90819004831660009081526001808652604091829020875181546001600160a01b0319166001600160a01b03909116178155958701519086015585015193820180546060870151608088015160a09098015160ff90971661ffff1990921691909117610100911515919091021762010000600160501b031916620100009685169690960263ffffffff60301b191695909517600160301b94841694909402939093179093559154041690505b92915050565b6040805160a08101825263ffffffff4381168252831660208201529081016001815263ffffffff6020808301829052600060409384018190526001600160a01b038716815280825283902084518154928601518416600160201b026001600160401b031990931693169290921717808255918301519091829060ff60401b1916600160401b836003811115610bc557610bc56110be565b021790555060608201518154608090930151600160481b600160881b0319909316600160481b63ffffffff9283160263ffffffff60681b191617600160681b91909316029190911790555050565b6001600160a01b038116600090815260208181526040808320815160a081018352815463ffffffff8082168352600160201b82041694820194909452929091830190600160401b900460ff166003811115610c7057610c706110be565b6003811115610c8157610c816110be565b8152905463ffffffff600160481b82048116602080850191909152600160681b90920416604090920191909152810151608082015191925090610cc5906001611163565b610ccf9190611187565b8151610cdb9190611163565b6001600160a01b039092166000908152602081905260409020805463ffffffff93909316600160481b0263ffffffff60481b199093169290921790915550565b6000818152600160208181526040808420546001600160a01b031684529083905290912054610d5891600160681b90910463ffffffff1690611163565b600091825260016020526040909120600201805463ffffffff92909216600160301b0263ffffffff60301b19909216919091179055565b6001600160a01b0382166000908152602081905260409020805482919060ff60401b1916600160401b836003811115610dca57610dca6110be565b02179055505050565b600081815260016020819052604080832090910180549083905560025491519092916001600160a01b03169083908381818185875af1925050503d8060008114610e39576040519150601f19603f3d011682016040523d82523d6000602084013e610e3e565b606091505b5050905080610e8e5760405162461bcd60e51b815260206004820152601860248201527715da5d1a191c985dd1195b1959d85d1a5bdb91985a5b195960421b604482015260640160405180910390fd5b505050565b6001600160a01b038216600090815260208190526040812054610ec490600160681b900463ffffffff166001611163565b63ffffffff168263ffffffff161115610edf57506000610b28565b5067016345785d8a000092915050565b600060208284031215610f0157600080fd5b5035919050565b80356001600160a01b0381168114610f1f57600080fd5b919050565b60008060408385031215610f3757600080fd5b82359150610f4760208401610f08565b90509250929050565b60008060408385031215610f6357600080fd5b610f6c83610f08565b946020939093013593505050565b600060208284031215610f8c57600080fd5b610f9582610f08565b9392505050565b803563ffffffff81168114610f1f57600080fd5b60008060408385031215610fc357600080fd5b610fcc83610f08565b9150610f4760208401610f9c565b60008060408385031215610fed57600080fd5b610ff683610f08565b9150602083013560ff8116811461100c57600080fd5b809150509250929050565b6000806040838503121561102a57600080fd5b823591506020830135801515811461100c57600080fd5b6000806040838503121561105457600080fd5b61105d83610f08565b915060208301356004811061100c57600080fd5b6000806040838503121561108457600080fd5b82359150610f4760208401610f9c565b600080604083850312156110a757600080fd5b6110b083610f08565b9150610f4760208401610f08565b634e487b7160e01b600052602160045260246000fd5b63ffffffff8681168252858116602083015260a08201906004861061110957634e487b7160e01b600052602160045260246000fd5b85604084015280851660608401528084166080840152509695505050505050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8083168181036111595761115961112a565b6001019392505050565b63ffffffff8181168382160190808211156111805761118061112a565b5092915050565b63ffffffff8181168382160280821691908281146111a7576111a761112a565b50509291505056fea264697066735822122002e6d5a647b591b8a537ef897196e2ef2590d00d27569b72632aa3aaf50e053f64736f6c63430008140033",
"linkReferences": {},
"deployedLinkReferences": {}
}