@perp/voting-escrow
Version:
Perpetual Protocol voting escrow contracts
515 lines (514 loc) • 42.8 kB
JSON
{
"_format": "hh-vyper-artifact-1",
"contractName": "veTokenDistributor",
"sourceName": "contracts/veTokenDistributor.vy",
"abi": [
{
"name": "CommitAdmin",
"inputs": [
{
"name": "admin",
"type": "address",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"name": "ApplyAdmin",
"inputs": [
{
"name": "admin",
"type": "address",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"name": "ToggleAllowCheckpointToken",
"inputs": [
{
"name": "toggle_flag",
"type": "bool",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"name": "CheckpointToken",
"inputs": [
{
"name": "time",
"type": "uint256",
"indexed": false
},
{
"name": "tokens",
"type": "uint256",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"name": "Claimed",
"inputs": [
{
"name": "recipient",
"type": "address",
"indexed": true
},
{
"name": "amount",
"type": "uint256",
"indexed": false
},
{
"name": "claim_epoch",
"type": "uint256",
"indexed": false
},
{
"name": "max_epoch",
"type": "uint256",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"name": "MinLockDurationSet",
"inputs": [
{
"name": "min_lock_duration",
"type": "uint256",
"indexed": false
}
],
"anonymous": false,
"type": "event"
},
{
"stateMutability": "nonpayable",
"type": "constructor",
"inputs": [
{
"name": "_voting_escrow",
"type": "address"
},
{
"name": "_start_time",
"type": "uint256"
},
{
"name": "_token",
"type": "address"
},
{
"name": "_admin",
"type": "address"
},
{
"name": "_emergency_return",
"type": "address"
}
],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "checkpoint_token",
"inputs": [],
"outputs": []
},
{
"stateMutability": "view",
"type": "function",
"name": "ve_for_at",
"inputs": [
{
"name": "_user",
"type": "address"
},
{
"name": "_timestamp",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "checkpoint_total_supply",
"inputs": [],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "claim",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "claim",
"inputs": [
{
"name": "_addr",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "claim_many",
"inputs": [
{
"name": "_receivers",
"type": "address[20]"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "burn",
"inputs": [
{
"name": "_coin",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "commit_admin",
"inputs": [
{
"name": "_addr",
"type": "address"
}
],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "apply_admin",
"inputs": [],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "toggle_allow_checkpoint_token",
"inputs": [],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "kill_me",
"inputs": [],
"outputs": []
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "recover_balance",
"inputs": [
{
"name": "_coin",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool"
}
]
},
{
"stateMutability": "nonpayable",
"type": "function",
"name": "set_min_lock_duration",
"inputs": [
{
"name": "_duration",
"type": "uint256"
}
],
"outputs": []
},
{
"stateMutability": "view",
"type": "function",
"name": "start_time",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "time_cursor",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "time_cursor_of",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "user_epoch_of",
"inputs": [
{
"name": "arg0",
"type": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "last_token_time",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "tokens_per_week",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "voting_escrow",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "token",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "total_received",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "token_last_balance",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "ve_supply",
"inputs": [
{
"name": "arg0",
"type": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "admin",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "future_admin",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "can_checkpoint_token",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "emergency_return",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "is_killed",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool"
}
]
},
{
"stateMutability": "view",
"type": "function",
"name": "min_lock_duration",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256"
}
]
}
],
"bytecode": "0x60206120c36000396000518060a01c6120be5760405260206121036000396000518060a01c6120be5760605260206121236000396000518060a01c6120be5760805260206121436000396000518060a01c6120be5760a052346120be5760206120e360003960005162093a808104905062093a8081028162093a808204186120be57905060c05260c05160015560c05160055560c05160025560605166038d7ea4c680075560405166038d7ea4c680065560805166071afd498d000a5560a05166071afd498d000d55611fe36100da61000039611fe3610000f36003361161000c576113dc565b60003560e01c34611fd15763811a40fe81186100785760043618611fd15766071afd498d000a543318610040576001610069565b66071afd498d000c54610054576000610069565b600554620151808101818110611fd157905042115b15611fd1576100766113e2565b005b63ace296fb811861021b5760443618611fd1576004358060a01c611fd1576102e05266038d7ea4c6800654610300526103005163010ae757610340526102e051610360526020610340602461035c845afa6100d8573d600060003e3d6000fd5b60203d10611fd15761034090505161032052610300516040526102e0516060526024356080526103205160a0526101106103606117b6565b6103605161034052610300516328d09d476103e0526102e05161040052610340516104205260806103e060446103fc845afa610151573d600060003e3d6000fd5b60803d10611fd1576103e05180600f0b8118611fd157610480526104005180600f0b8118611fd1576104a052610420516104c052610440516104e052610480905080516103605260208101516103805260408101516103a05260608101516103c0525061036051610380516024356103a051808203828111611fd1579050905080607f1c611fd15780820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576103e05260206103e0f35b63b21ed50281186102385760043618611fd1576102366118e4565b005b634e71d92d81186102555760043618611fd1573361062052610278565b631e83409a81186106405760243618611fd1576004358060a01c611fd157610620525b600054600214611fd157600260005566071afd498d000e54611fd15766071afd498d000f54156103865766038d7ea4c680065463adc635896106405261062051610660526020610640602461065c845afa6102d8573d600060003e3d6000fd5b60203d10611fd1576106409050514262093a808104905062093a8081028162093a80820418611fd157905066071afd498d000f54808201828110611fd15790509050111561038657601d610680527f55736572206c6f636b2074696d65206973206e6f7420656e6f7567682e0000006106a0526106805061068051806106a001601f826000031636823750506308c379a061064052602061066052601f19601f61068051011660440161065cfd5b6002544210610397576103976118e4565b6005546106405266071afd498d000c546103b25760006103c8565b61064051620151808101818110611fd157905042115b156103db576103d56113e2565b42610640525b6106405162093a808104905062093a8081028162093a80820418611fd157905061064052610620516102e05266038d7ea4c6800654610300526106405161032052610427610680611ae5565b610680516106605261066051156106345766038d7ea4c68007546106805266038d7ea4c680075463095ea7b36106a05266038d7ea4c68006546106c052610660516106e05260206106a060446106bc6000855af161048a573d600060003e3d6000fd5b60203d10611fd1576106a0518060011c611fd15761070052610700505066038d7ea4c68007546370a082316106c05266038d7ea4c68006546106e05260206106c060246106dc845afa6104e2573d600060003e3d6000fd5b60203d10611fd1576106c09050516106a05266038d7ea4c6800654633a46273e6106c052610620516106e0526106605161070052803b15611fd15760006106c060446106dc6000855af161053b573d600060003e3d6000fd5b5066038d7ea4c68007546370a082316106e05266038d7ea4c68006546107005260206106e060246106fc845afa610577573d600060003e3d6000fd5b60203d10611fd1576106e09050516106c052610660516106c0516106a051808203828111611fd15790509050181561060f57600e6106e0527f4465706f736974206661696c6564000000000000000000000000000000000000610700526106e0506106e0518061070001601f826000031636823750506308c379a06106a05260206106c052601f19601f6106e05101166044016106bcfd5b66038d7ea4c680095461066051808203828111611fd1579050905066038d7ea4c68009555b60206106606003600055f35b637b935a238118610bb9576102843618611fd1576004358060a01c611fd157610620526024358060a01c611fd157610640526044358060a01c611fd157610660526064358060a01c611fd157610680526084358060a01c611fd1576106a05260a4358060a01c611fd1576106c05260c4358060a01c611fd1576106e05260e4358060a01c611fd15761070052610104358060a01c611fd15761072052610124358060a01c611fd15761074052610144358060a01c611fd15761076052610164358060a01c611fd15761078052610184358060a01c611fd1576107a0526101a4358060a01c611fd1576107c0526101c4358060a01c611fd1576107e0526101e4358060a01c611fd15761080052610204358060a01c611fd15761082052610224358060a01c611fd15761084052610244358060a01c611fd15761086052610264358060a01c611fd15761088052600054600214611fd157600260005566071afd498d000e54611fd15760025442106107b9576107b96118e4565b6005546108a05266071afd498d000c546107d45760006107ea565b6108a051620151808101818110611fd157905042115b156107fd576107f76113e2565b426108a0525b6108a05162093a808104905062093a8081028162093a80820418611fd15790506108a05266038d7ea4c68006546108c05266038d7ea4c68007546108e05260006109005260006014905b8060051b6106200151610920526109205161086157610b77565b66071afd498d000f54156109535766038d7ea4c680065463adc635896109405261092051610960526020610940602461095c845afa6108a5573d600060003e3d6000fd5b60203d10611fd1576109409050514262093a808104905062093a8081028162093a80820418611fd157905066071afd498d000f54808201828110611fd15790509050111561095357601d610980527f55736572206c6f636b2074696d65206973206e6f7420656e6f7567682e0000006109a0526109805061098051806109a001601f826000031636823750506308c379a061094052602061096052601f19601f61098051011660440161095cfd5b610920516102e0526108c051610300526108a05161032052610976610960611ae5565b61096051610940526109405115610b6c5766038d7ea4c680075463095ea7b36109605266038d7ea4c680065461098052610940516109a0526020610960604461097c6000855af16109cc573d600060003e3d6000fd5b60203d10611fd157610960518060011c611fd1576109c0526109c0505066038d7ea4c68007546370a082316109805266038d7ea4c68006546109a0526020610980602461099c845afa610a24573d600060003e3d6000fd5b60203d10611fd1576109809050516109605266038d7ea4c6800654633a46273e61098052610920516109a052610940516109c052803b15611fd1576000610980604461099c6000855af1610a7d573d600060003e3d6000fd5b5066038d7ea4c68007546370a082316109a05266038d7ea4c68006546109c05260206109a060246109bc845afa610ab9573d600060003e3d6000fd5b60203d10611fd1576109a090505161098052610940516109805161096051808203828111611fd157905090501815610b5157600e6109a0527f4465706f736974206661696c65640000000000000000000000000000000000006109c0526109a0506109a051806109c001601f826000031636823750506308c379a061096052602061098052601f19601f6109a051011660440161097cfd5b6109005161094051808201828110611fd15790509050610900525b600101818118610847575b50506109005115610ba75766038d7ea4c680095461090051808203828111611fd1579050905066038d7ea4c68009555b60016109205260206109206003600055f35b6389afcb448118610ce05760243618611fd1576004358060a01c611fd1576101405266038d7ea4c68007546101405118611fd15766071afd498d000e54611fd157610140516370a0823161018052336101a0526020610180602461019c845afa610c28573d600060003e3d6000fd5b60203d10611fd157610180905051610160526101605115610cd357610140516323b872dd61018052336101a052306101c052610160516101e0526020610180606461019c6000855af1610c80573d600060003e3d6000fd5b60203d10611fd157610180518060011c611fd15761020052610200505066071afd498d000c54610cb1576000610cc6565b600554620151808101818110611fd157905042115b15610cd357610cd36113e2565b6001610180526020610180f35b63b1d3db758118610d4a5760243618611fd1576004358060a01c611fd15760405266071afd498d000a543318611fd15760405166071afd498d000b557f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b3460405160605260206060a1005b63c0e991a68118610dc05760043618611fd15766071afd498d000a543318611fd15766071afd498d000b5415611fd15766071afd498d000b5460405260405166071afd498d000a557f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e60405160605260206060a1005b632121bfc38118610e295760043618611fd15766071afd498d000a543318611fd15766071afd498d000c541560405260405166071afd498d000c557fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b260405160605260206060a1005b63e36988538118610ef25760043618611fd15766071afd498d000a543318611fd157600166071afd498d000e5566038d7ea4c680075460405260405163a9059cbb60a05266071afd498d000d5460c0526040516370a0823160605230608052602060606024607c845afa610ea2573d600060003e3d6000fd5b60203d10611fd157606090505160e052602060a0604460bc6000855af1610ece573d600060003e3d6000fd5b60203d10611fd15760a0518060011c611fd1576101005261010090505115611fd157005b63db2f5f79811861104b5760243618611fd1576004358060a01c611fd15760405266071afd498d000a543318611fd15766038d7ea4c680075460405114611fd1576040516370a082316080523060a052602060806024609c845afa610f5c573d600060003e3d6000fd5b60203d10611fd15760809050516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505066071afd498d000d548161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1611001573d600060003e3d6000fd5b3d602081183d60201002186101805261018080518060805260208201805160a052505050608051156110405760a05160805160200360031b1c15611fd1575b600160c052602060c0f35b638da342bb811861112d5760243618611fd15766071afd498d000a543318611fd15760043562093a808104905062093a8081028162093a80820418611fd15790506040526040516110f357601f6060527f4475726174696f6e206d7573742062652067726561746572207468616e20300060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405166071afd498d000f557f88b2b640e766716c1d928f380eb17fa0f7008627e85c447709e7b6e89b3bfb7760405160605260206060a1005b63834ee417811861114c5760043618611fd15760015460405260206040f35b63127dcbd3811861116b5760043618611fd15760025460405260206040f35b632a2a314b81186111a65760243618611fd1576004358060a01c611fd157604052600360405160205260005260406000205460605260206060f35b63d5d46e8881186111e15760243618611fd1576004358060a01c611fd157604052600460405160205260005260406000205460605260206060f35b637f58e8f881186112005760043618611fd15760055460405260206040f35b63edf5999781186112315760243618611fd15760043566038d7ea4c67fff8111611fd1576006015460405260206040f35b63dfe0503181186112565760043618611fd15766038d7ea4c680065460405260206040f35b63fc0c546a811861127b5760043618611fd15766038d7ea4c680075460405260206040f35b632f0c222e81186112a05760043618611fd15766038d7ea4c680085460405260206040f35b6322b04bfc81186112c55760043618611fd15766038d7ea4c680095460405260206040f35b63d4dafba881186112fc5760243618611fd15760043566038d7ea4c67fff8111611fd15766038d7ea4c6800a015460405260206040f35b63f851a44081186113215760043618611fd15766071afd498d000a5460405260206040f35b6317f7182a81186113465760043618611fd15766071afd498d000b5460405260206040f35b63aeba4737811861136b5760043618611fd15766071afd498d000c5460405260206040f35b632c3f531e81186113905760043618611fd15766071afd498d000d5460405260206040f35b639c868ac081186113b55760043618611fd15766071afd498d000e5460405260206040f35b6342c7cc6d81186113da5760043618611fd15766071afd498d000f5460405260206040f35b505b60006000fd5b66038d7ea4c68007546370a0823160605230608052602060606024607c845afa611411573d600060003e3d6000fd5b60203d10611fd157606090505160405260405166038d7ea4c6800954808203828111611fd1579050905060605260405166038d7ea4c680095560055460805242608051808203828111611fd1579050905060a0524260055560805162093a808104905062093a8081028162093a80820418611fd157905060c052600060e05260006014905b806101005260c05162093a808101818110611fd157905060e05260e051421061156a5760a0516114cd5760805160e05118156114d0565b60005b61153b5760c05166038d7ea4c67fff8111611fd157600601805460605160e051608051808203828111611fd15790509050808202811583838304141715611fd1579050905060a0518015611fd15780820490509050808201828110611fd15790509050815550611617565b60c05166038d7ea4c67fff8111611fd1576006018054606051808201828110611fd15790509050815550611617565b60a05161157c5760805142181561157f565b60005b6115e85760c05166038d7ea4c67fff8111611fd157600601805460605142608051808203828111611fd15790509050808202811583838304141715611fd1579050905060a0518015611fd15780820490509050808201828110611fd1579050905081555061162e565b60c05166038d7ea4c67fff8111611fd1576006018054606051808201828110611fd1579050905081555061162e565b60e05160805260e05160c052600101818118611496575b50507fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d64261010052606051610120526040610100a1565b600060805260405163900cf0cf60c052602060c0600460dc845afa61168f573d600060003e3d6000fd5b60203d10611fd15760c090505160a05260006080905b8060c05260a051608051106116b9576117ac565b60805160a051808201828110611fd1579050905060028101818110611fd15790508060011c905060e05260405163d1febfb96101805260e0516101a0526080610180602461019c845afa611712573d600060003e3d6000fd5b60803d10611fd1576101805180600f0b8118611fd157610220526101a05180600f0b8118611fd157610240526101c051610260526101e0516102805261022090508051610100526020810151610120526040810151610140526060810151610160525060605161014051111561179a5760e05160018103818111611fd157905060a0526117a1565b60e0516080525b6001018181186116a5575b5050608051815250565b600060c05260a05160e05260006080905b806101005260e05160c051106117dc576118da565b60c05160e051808201828110611fd1579050905060028101818110611fd15790508060011c9050610120526040516328d09d476101c0526060516101e052610120516102005260806101c060446101dc845afa61183e573d600060003e3d6000fd5b60803d10611fd1576101c05180600f0b8118611fd157610260526101e05180600f0b8118611fd15761028052610200516102a052610220516102c052610260905080516101405260208101516101605260408101516101805260608101516101a052506080516101805111156118c7576101205160018103818111611fd157905060e0526118cf565b6101205160c0525b6001018181186117c7575b505060c051815250565b66038d7ea4c68006546102a0526002546102c0524262093a808104905062093a8081028162093a80820418611fd15790506102e0526102a05163c2c4c5c161030052803b15611fd1576000610300600461031c6000855af161194b573d600060003e3d6000fd5b5060006014905b80610300526102e0516102c05111611ada576102a0516040526102c05160605261197d610340611665565b61034051610320526102a05163d1febfb96103c052610320516103e05260806103c060246103dc845afa6119b6573d600060003e3d6000fd5b60803d10611fd1576103c05180600f0b8118611fd157610460526103e05180600f0b8118611fd15761048052610400516104a052610420516104c052610460905080516103405260208101516103605260408101516103805260608101516103a0525060006103c052610380516102c0511115611a50576102c05161038051808203828111611fd1579050905080607f1c611fd1576103c0525b61034051610360516103c05180820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576102c05166038d7ea4c67fff8111611fd15766038d7ea4c6800a0155611ab856611ada565b6102c05162093a808101818110611fd15790506102c052600101818118611952575b50506102c051600255565b604036610340376103005163010ae7576103a0526102e0516103c05260206103a060246103bc845afa611b1d573d600060003e3d6000fd5b60203d10611fd1576103a0905051610380526001546103a05261038051611b48576000815250611fcf565b60036102e0516020526000526040600020546103c0526103c051611b9a57610300516040526102e0516060526103a0516080526103805160a052611b8d6103e06117b6565b6103e05161034052611bb1565b60046102e051602052600052604060002054610340525b61034051611bc0576001610340525b610300516328d09d47610460526102e05161048052610340516104a0526080610460604461047c845afa611bf9573d600060003e3d6000fd5b60803d10611fd1576104605180600f0b8118611fd157610500526104805180600f0b8118611fd157610520526104a051610540526104c05161056052610500905080516103e052602081015161040052604081015161042052606081015161044052506103c051611ca5576104205162093a808101818110611fd157905060018103818111611fd157905062093a808104905062093a8081028162093a80820418611fd15790506103c0525b610320516103c05110611cbc576000815250611fcf565b6103a0516103c0511015611cd3576103a0516103c0525b6080366104603760006032905b806104e052610320516103c05110611cf757611f30565b610420516103c0511015611d0c576000611d17565b610380516103405111155b611e3a576103c0516104a051808203828111611fd1579050905080607f1c611fd1576105005261046051610500516104805180820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576105205261052051611d9a57610380516103405111611d9d565b60005b15611da757611f30565b6105205115611e1e5761036051610520516103c05166038d7ea4c67fff8111611fd15760060154808202811583838304141715611fd157905090506103c05166038d7ea4c67fff8111611fd15766038d7ea4c6800a01548015611fd15780820490509050808201828110611fd15790509050610360525b6103c05162093a808101818110611fd15790506103c052611f25565b6103405160018101818110611fd1579050610340526103e051610460526104005161048052610420516104a052610440516104c052610380516103405111611f1d57610300516328d09d47610500526102e0516105205261034051610540526080610500604461051c845afa611eb5573d600060003e3d6000fd5b60803d10611fd1576105005180600f0b8118611fd1576105a0526105205180600f0b8118611fd1576105c052610540516105e05261056051610600526105a0905080516103e05260208101516104005260408101516104205260608101516104405250611f25565b6080366103e0375b600101818118611ce0575b5050610380516103405160018103818111611fd157905080828118828410021890509050610340526103405160046102e0516020526000526040600020556103c05160036102e0516020526000526040600020556102e0517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e610360516104e0526103405161050052610380516105205260606104e0a2610360518152505b565b600080fda165767970657283000306000b005b600080fd",
"deployedBytecode": "0x6003361161000c576113dc565b60003560e01c34611fd15763811a40fe81186100785760043618611fd15766071afd498d000a543318610040576001610069565b66071afd498d000c54610054576000610069565b600554620151808101818110611fd157905042115b15611fd1576100766113e2565b005b63ace296fb811861021b5760443618611fd1576004358060a01c611fd1576102e05266038d7ea4c6800654610300526103005163010ae757610340526102e051610360526020610340602461035c845afa6100d8573d600060003e3d6000fd5b60203d10611fd15761034090505161032052610300516040526102e0516060526024356080526103205160a0526101106103606117b6565b6103605161034052610300516328d09d476103e0526102e05161040052610340516104205260806103e060446103fc845afa610151573d600060003e3d6000fd5b60803d10611fd1576103e05180600f0b8118611fd157610480526104005180600f0b8118611fd1576104a052610420516104c052610440516104e052610480905080516103605260208101516103805260408101516103a05260608101516103c0525061036051610380516024356103a051808203828111611fd1579050905080607f1c611fd15780820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576103e05260206103e0f35b63b21ed50281186102385760043618611fd1576102366118e4565b005b634e71d92d81186102555760043618611fd1573361062052610278565b631e83409a81186106405760243618611fd1576004358060a01c611fd157610620525b600054600214611fd157600260005566071afd498d000e54611fd15766071afd498d000f54156103865766038d7ea4c680065463adc635896106405261062051610660526020610640602461065c845afa6102d8573d600060003e3d6000fd5b60203d10611fd1576106409050514262093a808104905062093a8081028162093a80820418611fd157905066071afd498d000f54808201828110611fd15790509050111561038657601d610680527f55736572206c6f636b2074696d65206973206e6f7420656e6f7567682e0000006106a0526106805061068051806106a001601f826000031636823750506308c379a061064052602061066052601f19601f61068051011660440161065cfd5b6002544210610397576103976118e4565b6005546106405266071afd498d000c546103b25760006103c8565b61064051620151808101818110611fd157905042115b156103db576103d56113e2565b42610640525b6106405162093a808104905062093a8081028162093a80820418611fd157905061064052610620516102e05266038d7ea4c6800654610300526106405161032052610427610680611ae5565b610680516106605261066051156106345766038d7ea4c68007546106805266038d7ea4c680075463095ea7b36106a05266038d7ea4c68006546106c052610660516106e05260206106a060446106bc6000855af161048a573d600060003e3d6000fd5b60203d10611fd1576106a0518060011c611fd15761070052610700505066038d7ea4c68007546370a082316106c05266038d7ea4c68006546106e05260206106c060246106dc845afa6104e2573d600060003e3d6000fd5b60203d10611fd1576106c09050516106a05266038d7ea4c6800654633a46273e6106c052610620516106e0526106605161070052803b15611fd15760006106c060446106dc6000855af161053b573d600060003e3d6000fd5b5066038d7ea4c68007546370a082316106e05266038d7ea4c68006546107005260206106e060246106fc845afa610577573d600060003e3d6000fd5b60203d10611fd1576106e09050516106c052610660516106c0516106a051808203828111611fd15790509050181561060f57600e6106e0527f4465706f736974206661696c6564000000000000000000000000000000000000610700526106e0506106e0518061070001601f826000031636823750506308c379a06106a05260206106c052601f19601f6106e05101166044016106bcfd5b66038d7ea4c680095461066051808203828111611fd1579050905066038d7ea4c68009555b60206106606003600055f35b637b935a238118610bb9576102843618611fd1576004358060a01c611fd157610620526024358060a01c611fd157610640526044358060a01c611fd157610660526064358060a01c611fd157610680526084358060a01c611fd1576106a05260a4358060a01c611fd1576106c05260c4358060a01c611fd1576106e05260e4358060a01c611fd15761070052610104358060a01c611fd15761072052610124358060a01c611fd15761074052610144358060a01c611fd15761076052610164358060a01c611fd15761078052610184358060a01c611fd1576107a0526101a4358060a01c611fd1576107c0526101c4358060a01c611fd1576107e0526101e4358060a01c611fd15761080052610204358060a01c611fd15761082052610224358060a01c611fd15761084052610244358060a01c611fd15761086052610264358060a01c611fd15761088052600054600214611fd157600260005566071afd498d000e54611fd15760025442106107b9576107b96118e4565b6005546108a05266071afd498d000c546107d45760006107ea565b6108a051620151808101818110611fd157905042115b156107fd576107f76113e2565b426108a0525b6108a05162093a808104905062093a8081028162093a80820418611fd15790506108a05266038d7ea4c68006546108c05266038d7ea4c68007546108e05260006109005260006014905b8060051b6106200151610920526109205161086157610b77565b66071afd498d000f54156109535766038d7ea4c680065463adc635896109405261092051610960526020610940602461095c845afa6108a5573d600060003e3d6000fd5b60203d10611fd1576109409050514262093a808104905062093a8081028162093a80820418611fd157905066071afd498d000f54808201828110611fd15790509050111561095357601d610980527f55736572206c6f636b2074696d65206973206e6f7420656e6f7567682e0000006109a0526109805061098051806109a001601f826000031636823750506308c379a061094052602061096052601f19601f61098051011660440161095cfd5b610920516102e0526108c051610300526108a05161032052610976610960611ae5565b61096051610940526109405115610b6c5766038d7ea4c680075463095ea7b36109605266038d7ea4c680065461098052610940516109a0526020610960604461097c6000855af16109cc573d600060003e3d6000fd5b60203d10611fd157610960518060011c611fd1576109c0526109c0505066038d7ea4c68007546370a082316109805266038d7ea4c68006546109a0526020610980602461099c845afa610a24573d600060003e3d6000fd5b60203d10611fd1576109809050516109605266038d7ea4c6800654633a46273e61098052610920516109a052610940516109c052803b15611fd1576000610980604461099c6000855af1610a7d573d600060003e3d6000fd5b5066038d7ea4c68007546370a082316109a05266038d7ea4c68006546109c05260206109a060246109bc845afa610ab9573d600060003e3d6000fd5b60203d10611fd1576109a090505161098052610940516109805161096051808203828111611fd157905090501815610b5157600e6109a0527f4465706f736974206661696c65640000000000000000000000000000000000006109c0526109a0506109a051806109c001601f826000031636823750506308c379a061096052602061098052601f19601f6109a051011660440161097cfd5b6109005161094051808201828110611fd15790509050610900525b600101818118610847575b50506109005115610ba75766038d7ea4c680095461090051808203828111611fd1579050905066038d7ea4c68009555b60016109205260206109206003600055f35b6389afcb448118610ce05760243618611fd1576004358060a01c611fd1576101405266038d7ea4c68007546101405118611fd15766071afd498d000e54611fd157610140516370a0823161018052336101a0526020610180602461019c845afa610c28573d600060003e3d6000fd5b60203d10611fd157610180905051610160526101605115610cd357610140516323b872dd61018052336101a052306101c052610160516101e0526020610180606461019c6000855af1610c80573d600060003e3d6000fd5b60203d10611fd157610180518060011c611fd15761020052610200505066071afd498d000c54610cb1576000610cc6565b600554620151808101818110611fd157905042115b15610cd357610cd36113e2565b6001610180526020610180f35b63b1d3db758118610d4a5760243618611fd1576004358060a01c611fd15760405266071afd498d000a543318611fd15760405166071afd498d000b557f59a407284ae6e2986675fa1400d6498af928ed01f4fd2dd6be4a2a8b4fc35b3460405160605260206060a1005b63c0e991a68118610dc05760043618611fd15766071afd498d000a543318611fd15766071afd498d000b5415611fd15766071afd498d000b5460405260405166071afd498d000a557f756f845176805c8ebf249854e909627308157f63c96e470e44a9e8549ba6fb1e60405160605260206060a1005b632121bfc38118610e295760043618611fd15766071afd498d000a543318611fd15766071afd498d000c541560405260405166071afd498d000c557fdbe6ac1081ebd8e648718341126659456f4009fcadfe1c23f66f5e61522610b260405160605260206060a1005b63e36988538118610ef25760043618611fd15766071afd498d000a543318611fd157600166071afd498d000e5566038d7ea4c680075460405260405163a9059cbb60a05266071afd498d000d5460c0526040516370a0823160605230608052602060606024607c845afa610ea2573d600060003e3d6000fd5b60203d10611fd157606090505160e052602060a0604460bc6000855af1610ece573d600060003e3d6000fd5b60203d10611fd15760a0518060011c611fd1576101005261010090505115611fd157005b63db2f5f79811861104b5760243618611fd1576004358060a01c611fd15760405266071afd498d000a543318611fd15766038d7ea4c680075460405114611fd1576040516370a082316080523060a052602060806024609c845afa610f5c573d600060003e3d6000fd5b60203d10611fd15760809050516060526000600460c0527fa9059cbb0000000000000000000000000000000000000000000000000000000060e05260c080516020820183610120018151815250508083019250505066071afd498d000d548161012001526020810190506060518161012001526020810190508061010052610100505060206101a06101005161012060006040515af1611001573d600060003e3d6000fd5b3d602081183d60201002186101805261018080518060805260208201805160a052505050608051156110405760a05160805160200360031b1c15611fd1575b600160c052602060c0f35b638da342bb811861112d5760243618611fd15766071afd498d000a543318611fd15760043562093a808104905062093a8081028162093a80820418611fd15790506040526040516110f357601f6060527f4475726174696f6e206d7573742062652067726561746572207468616e20300060805260605060605180608001601f826000031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b60405166071afd498d000f557f88b2b640e766716c1d928f380eb17fa0f7008627e85c447709e7b6e89b3bfb7760405160605260206060a1005b63834ee417811861114c5760043618611fd15760015460405260206040f35b63127dcbd3811861116b5760043618611fd15760025460405260206040f35b632a2a314b81186111a65760243618611fd1576004358060a01c611fd157604052600360405160205260005260406000205460605260206060f35b63d5d46e8881186111e15760243618611fd1576004358060a01c611fd157604052600460405160205260005260406000205460605260206060f35b637f58e8f881186112005760043618611fd15760055460405260206040f35b63edf5999781186112315760243618611fd15760043566038d7ea4c67fff8111611fd1576006015460405260206040f35b63dfe0503181186112565760043618611fd15766038d7ea4c680065460405260206040f35b63fc0c546a811861127b5760043618611fd15766038d7ea4c680075460405260206040f35b632f0c222e81186112a05760043618611fd15766038d7ea4c680085460405260206040f35b6322b04bfc81186112c55760043618611fd15766038d7ea4c680095460405260206040f35b63d4dafba881186112fc5760243618611fd15760043566038d7ea4c67fff8111611fd15766038d7ea4c6800a015460405260206040f35b63f851a44081186113215760043618611fd15766071afd498d000a5460405260206040f35b6317f7182a81186113465760043618611fd15766071afd498d000b5460405260206040f35b63aeba4737811861136b5760043618611fd15766071afd498d000c5460405260206040f35b632c3f531e81186113905760043618611fd15766071afd498d000d5460405260206040f35b639c868ac081186113b55760043618611fd15766071afd498d000e5460405260206040f35b6342c7cc6d81186113da5760043618611fd15766071afd498d000f5460405260206040f35b505b60006000fd5b66038d7ea4c68007546370a0823160605230608052602060606024607c845afa611411573d600060003e3d6000fd5b60203d10611fd157606090505160405260405166038d7ea4c6800954808203828111611fd1579050905060605260405166038d7ea4c680095560055460805242608051808203828111611fd1579050905060a0524260055560805162093a808104905062093a8081028162093a80820418611fd157905060c052600060e05260006014905b806101005260c05162093a808101818110611fd157905060e05260e051421061156a5760a0516114cd5760805160e05118156114d0565b60005b61153b5760c05166038d7ea4c67fff8111611fd157600601805460605160e051608051808203828111611fd15790509050808202811583838304141715611fd1579050905060a0518015611fd15780820490509050808201828110611fd15790509050815550611617565b60c05166038d7ea4c67fff8111611fd1576006018054606051808201828110611fd15790509050815550611617565b60a05161157c5760805142181561157f565b60005b6115e85760c05166038d7ea4c67fff8111611fd157600601805460605142608051808203828111611fd15790509050808202811583838304141715611fd1579050905060a0518015611fd15780820490509050808201828110611fd1579050905081555061162e565b60c05166038d7ea4c67fff8111611fd1576006018054606051808201828110611fd1579050905081555061162e565b60e05160805260e05160c052600101818118611496575b50507fce749457b74e10f393f2c6b1ce4261b78791376db5a3f501477a809f03f500d64261010052606051610120526040610100a1565b600060805260405163900cf0cf60c052602060c0600460dc845afa61168f573d600060003e3d6000fd5b60203d10611fd15760c090505160a05260006080905b8060c05260a051608051106116b9576117ac565b60805160a051808201828110611fd1579050905060028101818110611fd15790508060011c905060e05260405163d1febfb96101805260e0516101a0526080610180602461019c845afa611712573d600060003e3d6000fd5b60803d10611fd1576101805180600f0b8118611fd157610220526101a05180600f0b8118611fd157610240526101c051610260526101e0516102805261022090508051610100526020810151610120526040810151610140526060810151610160525060605161014051111561179a5760e05160018103818111611fd157905060a0526117a1565b60e0516080525b6001018181186116a5575b5050608051815250565b600060c05260a05160e05260006080905b806101005260e05160c051106117dc576118da565b60c05160e051808201828110611fd1579050905060028101818110611fd15790508060011c9050610120526040516328d09d476101c0526060516101e052610120516102005260806101c060446101dc845afa61183e573d600060003e3d6000fd5b60803d10611fd1576101c05180600f0b8118611fd157610260526101e05180600f0b8118611fd15761028052610200516102a052610220516102c052610260905080516101405260208101516101605260408101516101805260608101516101a052506080516101805111156118c7576101205160018103818111611fd157905060e0526118cf565b6101205160c0525b6001018181186117c7575b505060c051815250565b66038d7ea4c68006546102a0526002546102c0524262093a808104905062093a8081028162093a80820418611fd15790506102e0526102a05163c2c4c5c161030052803b15611fd1576000610300600461031c6000855af161194b573d600060003e3d6000fd5b5060006014905b80610300526102e0516102c05111611ada576102a0516040526102c05160605261197d610340611665565b61034051610320526102a05163d1febfb96103c052610320516103e05260806103c060246103dc845afa6119b6573d600060003e3d6000fd5b60803d10611fd1576103c05180600f0b8118611fd157610460526103e05180600f0b8118611fd15761048052610400516104a052610420516104c052610460905080516103405260208101516103605260408101516103805260608101516103a0525060006103c052610380516102c0511115611a50576102c05161038051808203828111611fd1579050905080607f1c611fd1576103c0525b61034051610360516103c05180820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576102c05166038d7ea4c67fff8111611fd15766038d7ea4c6800a0155611ab856611ada565b6102c05162093a808101818110611fd15790506102c052600101818118611952575b50506102c051600255565b604036610340376103005163010ae7576103a0526102e0516103c05260206103a060246103bc845afa611b1d573d600060003e3d6000fd5b60203d10611fd1576103a0905051610380526001546103a05261038051611b48576000815250611fcf565b60036102e0516020526000526040600020546103c0526103c051611b9a57610300516040526102e0516060526103a0516080526103805160a052611b8d6103e06117b6565b6103e05161034052611bb1565b60046102e051602052600052604060002054610340525b61034051611bc0576001610340525b610300516328d09d47610460526102e05161048052610340516104a0526080610460604461047c845afa611bf9573d600060003e3d6000fd5b60803d10611fd1576104605180600f0b8118611fd157610500526104805180600f0b8118611fd157610520526104a051610540526104c05161056052610500905080516103e052602081015161040052604081015161042052606081015161044052506103c051611ca5576104205162093a808101818110611fd157905060018103818111611fd157905062093a808104905062093a8081028162093a80820418611fd15790506103c0525b610320516103c05110611cbc576000815250611fcf565b6103a0516103c0511015611cd3576103a0516103c0525b6080366104603760006032905b806104e052610320516103c05110611cf757611f30565b610420516103c0511015611d0c576000611d17565b610380516103405111155b611e3a576103c0516104a051808203828111611fd1579050905080607f1c611fd1576105005261046051610500516104805180820280600f0b8118611fd1579050905080820380600f0b8118611fd157905090506000818118600083130218905060008112611fd1576105205261052051611d9a57610380516103405111611d9d565b60005b15611da757611f30565b6105205115611e1e5761036051610520516103c05166038d7ea4c67fff8111611fd15760060154808202811583838304141715611fd157905090506103c05166038d7ea4c67fff8111611fd15766038d7ea4c6800a01548015611fd15780820490509050808201828110611fd15790509050610360525b6103c05162093a808101818110611fd15790506103c052611f25565b6103405160018101818110611fd1579050610340526103e051610460526104005161048052610420516104a052610440516104c052610380516103405111611f1d57610300516328d09d47610500526102e0516105205261034051610540526080610500604461051c845afa611eb5573d600060003e3d6000fd5b60803d10611fd1576105005180600f0b8118611fd1576105a0526105205180600f0b8118611fd1576105c052610540516105e05261056051610600526105a0905080516103e05260208101516104005260408101516104205260608101516104405250611f25565b6080366103e0375b600101818118611ce0575b5050610380516103405160018103818111611fd157905080828118828410021890509050610340526103405160046102e0516020526000526040600020556103c05160036102e0516020526000526040600020556102e0517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e610360516104e0526103405161050052610380516105205260606104e0a2610360518152505b565b600080fda165767970657283000306000b",
"linkReferences": {},
"deployedLinkReferences": {}
}