{"matchId":"14250456","creationMatch":null,"runtimeMatch":"exact_match","verifiedAt":"2026-01-20T19:39:32Z","creationBytecode":{"onchainBytecode":null,"recompiledBytecode":"0x60c060405234801561000f575f80fd5b50604051610e42380380610e4283398101604081905261002e91610087565b6001600160a01b039384166080525f80549385166001600160a01b03199485161790556002805492851692909316919091179091551660a0526100d8565b80516001600160a01b0381168114610082575f80fd5b919050565b5f805f806080858703121561009a575f80fd5b6100a38561006c565b93506100b16020860161006c565b92506100bf6040860161006c565b91506100cd6060860161006c565b905092959194509250565b60805160a051610d2661011c5f395f81816101bb0152818161043a015281816107f7015261089101525f818161010a0152818161040b01526107c20152610d265ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806392c592d011610088578063ee1ef57511610063578063ee1ef57514610203578063efdf0bb014610216578063f0c9e46514610229578063fdf893f514610231575f80fd5b806392c592d0146101b6578063b6a3f59a146101dd578063e1a611b7146101f0575f80fd5b806325240810116100c357806325240810146101705780632720b22e1461019057806369652fcf146101a55780638f770ad0146101ad575f80fd5b8063047fc9aa146100e957806304bda2621461010557806312d43a5114610151575b5f80fd5b6100f260035481565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fc565b5f5461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a361019e366004610c27565b610251565b005b6101a36104cd565b6100f260045481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101a36101eb366004610c27565b6105c0565b6101a36101fe366004610c27565b610685565b6101a3610211366004610c3e565b61092e565b6101a3610224366004610c3e565b610a24565b6101a3610b12565b60025461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8111610340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b6004546003546103509083610ca5565b11156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c79206361702065786365656465640000000000000000000000000060448201526064016102ce565b8060035f8282546103c99190610ca5565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b15801561047b575f80fd5b505af115801561048d573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516104c291815260200190565b60405180910390a150565b60025473ffffffffffffffffffffffffffffffffffffffff16331461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915560405173ffffffffffffffffffffffffffffffffffffffff909116905f9082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e908390a350565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600480549082905560408051828152602081018490527fb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53910160405180910390a15050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b5f811161076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b8060035f8282546107809190610cbe565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af115801561083d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108619190610cd1565b506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c68906024015f604051808303815f87803b1580156108e7575f80fd5b505af11580156108f9573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba816040516104c291815260200190565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49905f90a250565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f742070656e64696e6720676f76000000000000000000000000000000000060448201526064016102ce565b6001545f805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac291a3600180545f80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b5f60208284031215610c37575f80fd5b5035919050565b5f60208284031215610c4e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c71575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610cb857610cb8610c78565b92915050565b81810381811115610cb857610cb8610c78565b5f60208284031215610ce1575f80fd5b81518015158114610c71575f80fdfea264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","sourceMap":"247:3962:1:-:0;;;913:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;994:10:1;;;;;1014:3;:10;;;;;-1:-1:-1;;;;;;1014:10:1;;;;;;1034:5;:14;;;;;;;;;;;;;;;;1058:19;;;247:3962;;14:177:2;93:13;;-1:-1:-1;;;;;135:31:2;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:464::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;527:59;;605:49;650:2;639:9;635:18;605:49;:::i;:::-;595:59;;196:464;;;;;;;:::o;:::-;247:3962:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","offset":3597}},"transformations":null,"transformationValues":null},"runtimeBytecode":{"onchainBytecode":"0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806392c592d011610088578063ee1ef57511610063578063ee1ef57514610203578063efdf0bb014610216578063f0c9e46514610229578063fdf893f514610231575f80fd5b806392c592d0146101b6578063b6a3f59a146101dd578063e1a611b7146101f0575f80fd5b806325240810116100c357806325240810146101705780632720b22e1461019057806369652fcf146101a55780638f770ad0146101ad575f80fd5b8063047fc9aa146100e957806304bda2621461010557806312d43a5114610151575b5f80fd5b6100f260035481565b6040519081526020015b60405180910390f35b61012c7f0000000000000000000000001d02f2841afa3cc20435a8c804c24deac5f30dfa81565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fc565b5f5461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a361019e366004610c27565b610251565b005b6101a36104cd565b6100f260045481565b61012c7f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce481565b6101a36101eb366004610c27565b6105c0565b6101a36101fe366004610c27565b610685565b6101a3610211366004610c3e565b61092e565b6101a3610224366004610c3e565b610a24565b6101a3610b12565b60025461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8111610340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b6004546003546103509083610ca5565b11156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c79206361702065786365656465640000000000000000000000000060448201526064016102ce565b8060035f8282546103c99190610ca5565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000001d02f2841afa3cc20435a8c804c24deac5f30dfa81166004830152602482018390527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce416906340c10f19906044015f604051808303815f87803b15801561047b575f80fd5b505af115801561048d573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516104c291815260200190565b60405180910390a150565b60025473ffffffffffffffffffffffffffffffffffffffff16331461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915560405173ffffffffffffffffffffffffffffffffffffffff909116905f9082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e908390a350565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600480549082905560408051828152602081018490527fb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53910160405180910390a15050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b5f811161076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b8060035f8282546107809190610cbe565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000001d02f2841afa3cc20435a8c804c24deac5f30dfa81166004830152306024830152604482018390527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce416906323b872dd906064016020604051808303815f875af115801561083d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108619190610cd1565b506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000865377367054516e17014ccded1e7d814edc9ce473ffffffffffffffffffffffffffffffffffffffff16906342966c68906024015f604051808303815f87803b1580156108e7575f80fd5b505af11580156108f9573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba816040516104c291815260200190565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49905f90a250565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f742070656e64696e6720676f76000000000000000000000000000000000060448201526064016102ce565b6001545f805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac291a3600180545f80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b5f60208284031215610c37575f80fd5b5035919050565b5f60208284031215610c4e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c71575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610cb857610cb8610c78565b92915050565b81810381811115610cb857610cb8610c78565b5f60208284031215610ce1575f80fd5b81518015158114610c71575f80fdfea264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","recompiledBytecode":"0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806392c592d011610088578063ee1ef57511610063578063ee1ef57514610203578063efdf0bb014610216578063f0c9e46514610229578063fdf893f514610231575f80fd5b806392c592d0146101b6578063b6a3f59a146101dd578063e1a611b7146101f0575f80fd5b806325240810116100c357806325240810146101705780632720b22e1461019057806369652fcf146101a55780638f770ad0146101ad575f80fd5b8063047fc9aa146100e957806304bda2621461010557806312d43a5114610151575b5f80fd5b6100f260035481565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fc565b5f5461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a361019e366004610c27565b610251565b005b6101a36104cd565b6100f260045481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101a36101eb366004610c27565b6105c0565b6101a36101fe366004610c27565b610685565b6101a3610211366004610c3e565b61092e565b6101a3610224366004610c3e565b610a24565b6101a3610b12565b60025461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8111610340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b6004546003546103509083610ca5565b11156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c79206361702065786365656465640000000000000000000000000060448201526064016102ce565b8060035f8282546103c99190610ca5565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b15801561047b575f80fd5b505af115801561048d573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516104c291815260200190565b60405180910390a150565b60025473ffffffffffffffffffffffffffffffffffffffff16331461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915560405173ffffffffffffffffffffffffffffffffffffffff909116905f9082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e908390a350565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600480549082905560408051828152602081018490527fb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53910160405180910390a15050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b5f811161076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b8060035f8282546107809190610cbe565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af115801561083d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108619190610cd1565b506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c68906024015f604051808303815f87803b1580156108e7575f80fd5b505af11580156108f9573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba816040516104c291815260200190565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49905f90a250565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f742070656e64696e6720676f76000000000000000000000000000000000060448201526064016102ce565b6001545f805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac291a3600180545f80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b5f60208284031215610c37575f80fd5b5035919050565b5f60208284031215610c4e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c71575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610cb857610cb8610c78565b92915050565b81810381811115610cb857610cb8610c78565b5f60208284031215610ce1575f80fd5b81518015158114610c71575f80fdfea264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","sourceMap":"247:3962:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:21;;;;;;;;;160:25:2;;;148:2;133:18;418:21:1;;;;;;;;269:28;;;;;;;;372:42:2;360:55;;;342:74;;330:2;315:18;269:28:1;196:226:2;337:18:1;;;;;;;;;361:25;;;;;;;;;1619:272;;;;;;:::i;:::-;;:::i;:::-;;3334:155;;;:::i;488:24::-;;;;;;303:27;;;;;2642:203;;;;;;:::i;:::-;;:::i;2239:256::-;;;;;;:::i;:::-;;:::i;3025:167::-;;;;;;:::i;:::-;;:::i;3699:147::-;;;;;;:::i;:::-;;:::i;4001:206::-;;;:::i;392:20::-;;;;;;;;;1619:272;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;;;;;;;;;1700:1:::1;1691:6;:10;1683:41;;;::::0;::::1;::::0;;1708:2:2;1683:41:1::1;::::0;::::1;1690:21:2::0;1747:2;1727:18;;;1720:30;1786:20;1766:18;;;1759:48;1824:18;;1683:41:1::1;1506:342:2::0;1683:41:1::1;1761:9;::::0;1751:6:::1;::::0;1742:15:::1;::::0;:6;:15:::1;:::i;:::-;:28;;1734:60;;;::::0;::::1;::::0;;2374:2:2;1734:60:1::1;::::0;::::1;2356:21:2::0;2413:2;2393:18;;;2386:30;2452:21;2432:18;;;2425:49;2491:18;;1734:60:1::1;2172:343:2::0;1734:60:1::1;1814:6;1804;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;1830:22:1::1;::::0;;;;:9:::1;1840:3;2712:55:2::0;;1830:22:1::1;::::0;::::1;2694:74:2::0;2784:18;;;2777:34;;;1830:4:1::1;:9;::::0;::::1;::::0;2667:18:2;;1830:22:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1867:17;1877:6;1867:17;;;;160:25:2::0;;148:2;133:18;;14:177;1867:17:1::1;;;;;;;;1619:272:::0;:::o;3334:155::-;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;1169:332:2;1218:41:1;3400:5:::1;::::0;;3415:18;;::::1;::::0;;;3448:34:::1;::::0;3400:5:::1;::::0;;::::1;::::0;3381:16:::1;::::0;3400:5;;3448:34:::1;::::0;3381:16;;3448:34:::1;3371:118;3334:155::o:0;2642:203::-;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;2736:9:::1;::::0;;2755:24;;;;2794:44:::1;::::0;;3339:25:2;;;3395:2;3380:18;;3373:34;;;2794:44:1::1;::::0;3312:18:2;2794:44:1::1;;;;;;;2703:142;2642:203:::0;:::o;2239:256::-;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;1169:332:2;1218:41:1;2322:1:::1;2313:6;:10;2305:41;;;::::0;::::1;::::0;;1708:2:2;2305:41:1::1;::::0;::::1;1690:21:2::0;1747:2;1727:18;;;1720:30;1786:20;1766:18;;;1759:48;1824:18;;2305:41:1::1;1506:342:2::0;2305:41:1::1;2366:6;2356;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;2382:45:1::1;::::0;;;;:17:::1;2400:3;3832:15:2::0;;2382:45:1::1;::::0;::::1;3814:34:2::0;2413:4:1::1;3864:18:2::0;;;3857:43;3916:18;;;3909:34;;;2382:4:1::1;:17;::::0;::::1;::::0;3726:18:2;;2382:45:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2437:17:1::1;::::0;;;;::::1;::::0;::::1;160:25:2::0;;;2437:4:1::1;:9;;::::0;::::1;::::0;133:18:2;;2437:17:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2469:19;2481:6;2469:19;;;;160:25:2::0;;148:2;133:18;;14:177;3025:167:1;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;3107:5:::1;::::0;;::::1;3122:16:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;3153:32:::1;::::0;3107:5;::::1;::::0;3122:16;3107:5;;3153:32:::1;::::0;3088:16:::1;::::0;3153:32:::1;3078:114;3025:167:::0;:::o;3699:147::-;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;3770:10:::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;3809:30:::1;::::0;::::1;::::0;-1:-1:-1;;3809:30:1::1;3699:147:::0;:::o;4001:206::-;4069:10;;;;4055;:24;4047:52;;;;;;;4438:2:2;4047:52:1;;;4420:21:2;4477:2;4457:18;;;4450:30;4516:17;4496:18;;;4489:45;4551:18;;4047:52:1;4236:339:2;4047:52:1;4130:10;;;4125:3;;4114:27;;4130:10;;;;;4125:3;;;;4114:27;;;4157:10;;;;4151:16;;;;;;4157:10;;;4151:16;;;;4177:23;;;4001:206::o;427:180:2:-;486:6;539:2;527:9;518:7;514:23;510:32;507:52;;;555:1;552;545:12;507:52;-1:-1:-1;578:23:2;;427:180;-1:-1:-1;427:180:2:o;855:309::-;914:6;967:2;955:9;946:7;942:23;938:32;935:52;;;983:1;980;973:12;935:52;1022:9;1009:23;1072:42;1065:5;1061:54;1054:5;1051:65;1041:93;;1130:1;1127;1120:12;1041:93;1153:5;855:309;-1:-1:-1;;;855:309:2:o;1853:184::-;1905:77;1902:1;1895:88;2002:4;1999:1;1992:15;2026:4;2023:1;2016:15;2042:125;2107:9;;;2128:10;;;2125:36;;;2141:18;;:::i;:::-;2042:125;;;;:::o;3418:128::-;3485:9;;;3506:11;;;3503:37;;;3520:18;;:::i;3954:277::-;4021:6;4074:2;4062:9;4053:7;4049:23;4045:32;4042:52;;;4090:1;4087;4080:12;4042:52;4122:9;4116:16;4175:5;4168:13;4161:21;4154:5;4151:32;4141:60;;4197:1;4194;4187:12","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","offset":3313}},"immutableReferences":{"97":[{"start":266,"length":32},{"start":1035,"length":32},{"start":1986,"length":32}],"100":[{"start":443,"length":32},{"start":1082,"length":32},{"start":2039,"length":32},{"start":2193,"length":32}]},"transformations":[{"id":"97","type":"replace","offset":266,"reason":"immutable"},{"id":"97","type":"replace","offset":1035,"reason":"immutable"},{"id":"97","type":"replace","offset":1986,"reason":"immutable"},{"id":"100","type":"replace","offset":443,"reason":"immutable"},{"id":"100","type":"replace","offset":1082,"reason":"immutable"},{"id":"100","type":"replace","offset":2039,"reason":"immutable"},{"id":"100","type":"replace","offset":2193,"reason":"immutable"}],"transformationValues":{"immutables":{"97":"0x0000000000000000000000001d02f2841afa3cc20435a8c804c24deac5f30dfa","100":"0x000000000000000000000000865377367054516e17014ccded1e7d814edc9ce4"}}},"deployment":{"transactionHash":null,"blockNumber":"23940840","transactionIndex":null,"deployer":"0xcfaD496f4e92f1f2d3fdC093Dde11Add1dc3a781"},"sources":{"src/PSMFed.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface IDOLA is IERC20 {\n    function mint(address to, uint256 amount) external;\n    function burn(uint256 amount) external;\n}\n\ncontract PSMFed {\n    address public immutable psm;\n    IDOLA public immutable DOLA;\n\n    address public gov;\n    address public pendingGov;\n    address public chair;\n    uint256 public supply; // Current DOLA amount supplied to the PSM\n    uint256 public supplyCap; // Maximum DOLA supply allowed in the PSM\n\n    event GovChanged(address indexed oldGov, address indexed newGov);\n    event PendingGovUpdated(address indexed pendingGov);\n    event ChairChanged(address indexed oldChair, address indexed newChair);\n    event SupplyCapUpdated(uint256 oldSupplyCap, uint256 newSupplyCap);\n    event Expansion(uint256 amount);\n    event Contraction(uint256 amount);\n\n    constructor(address _psm, address _gov, address _chair, address _dola) {\n        psm = _psm;\n        gov = _gov;\n        chair = _chair;\n        DOLA = IDOLA(_dola);\n    }\n\n    modifier onlyGov() {\n        require(msg.sender == gov, \"Not governance\");\n        _;\n    }\n\n    modifier onlyChair() {\n        require(msg.sender == chair, \"Not chair\");\n        _;\n    }\n\n    /**\n     * @notice Allows the chair to expand the supply of DOLA in the PSM.\n     * @dev This function increases the supply of DOLA in the PSM and mints\n     * the specified amount of DOLA.\n     * @dev The amount must be greater than zero and cannot exceed the supply cap.\n     * @param amount The amount of DOLA to expand.\n     */\n    function expansion(uint256 amount) external onlyChair {\n        require(amount > 0, \"Amount must be > 0\");\n        require(amount + supply <= supplyCap, \"Supply cap exceeded\");\n        supply += amount;\n        DOLA.mint(psm, amount);\n        emit Expansion(amount);\n    }\n\n    /**\n     * @notice Allows the chair to contract the supply of DOLA in the PSM.\n     * @dev This function reduces the supply of DOLA in the PSM and burns the\n     * specified amount of DOLA.\n     * @dev The amount must be greater than zero and cannot exceed the current supply.\n     * @param amount The amount of DOLA to contract.\n     */\n    function contraction(uint256 amount) external onlyChair {\n        require(amount > 0, \"Amount must be > 0\");\n        supply -= amount;\n        DOLA.transferFrom(psm, address(this), amount);\n        DOLA.burn(amount);\n        emit Contraction(amount);\n    }\n\n    /**\n     * @notice Allows governance to set a new supply cap.\n     * @param newSupplyCap The new supply cap for DOLA in the PSM.\n     */\n    function setSupplyCap(uint256 newSupplyCap) external onlyGov {\n        uint256 oldSupplyCap = supplyCap;\n        supplyCap = newSupplyCap;\n        emit SupplyCapUpdated(oldSupplyCap, newSupplyCap);\n    }\n\n    /**\n     * @notice Allows governance to set a new chair.\n     * @dev The new chair must not be the zero address.\n     * @param newChair Address of the new chair.\n     */\n    function setChair(address newChair) external onlyGov {\n        address oldChair = chair;\n        chair = newChair;\n        emit ChairChanged(oldChair, newChair);\n    }\n\n    /**\n     * @notice Allows the current chair to resign.\n     * @dev The chair can resign, leaving the chair address as zero.\n     */\n    function resign() external onlyChair {\n        address oldChair = chair;\n        chair = address(0);\n        emit ChairChanged(oldChair, address(0));\n    }\n\n    /**\n     * @notice Allows governance to set a new pending governance.\n     * @dev The pending governance must accept the role.\n     * @param _pendingGov Address of the new pending governance.\n     */\n    function setPendingGov(address _pendingGov) external onlyGov {\n        pendingGov = _pendingGov;\n        emit PendingGovUpdated(_pendingGov);\n    }\n\n    /**\n     * @notice Allows the pending governance to claim the governance role.\n     * @dev Can only be called by the pending governance.\n     */\n    function claimPendingGov() external {\n        require(msg.sender == pendingGov, \"Not pending gov\");\n        emit GovChanged(gov, pendingGov);\n        gov = pendingGov;\n        pendingGov = address(0);\n    }\n}\n"},"lib/openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.20+commit.a1b79de6","compilerSettings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"ipfs","useLiteralContent":false},"optimizer":{"runs":10000,"enabled":true},"evmVersion":"shanghai","remappings":["@openzeppelin/contracts/=lib/openzeppelin/contracts/","forge-std/=lib/forge-std/src/","openzeppelin/=lib/openzeppelin/","solmate/=lib/solmate/src/"]},"name":"PSMFed","fullyQualifiedName":"src/PSMFed.sol:PSMFed"},"abi":[{"type":"constructor","inputs":[{"name":"_psm","type":"address","internalType":"address"},{"name":"_gov","type":"address","internalType":"address"},{"name":"_chair","type":"address","internalType":"address"},{"name":"_dola","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"ChairChanged","type":"event","inputs":[{"name":"oldChair","type":"address","indexed":true,"internalType":"address"},{"name":"newChair","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Contraction","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Expansion","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"GovChanged","type":"event","inputs":[{"name":"oldGov","type":"address","indexed":true,"internalType":"address"},{"name":"newGov","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PendingGovUpdated","type":"event","inputs":[{"name":"pendingGov","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"SupplyCapUpdated","type":"event","inputs":[{"name":"oldSupplyCap","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSupplyCap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"DOLA","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDOLA"}],"stateMutability":"view"},{"name":"chair","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"claimPendingGov","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"contraction","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"expansion","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"gov","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"pendingGov","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"psm","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"resign","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"setChair","type":"function","inputs":[{"name":"newChair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setPendingGov","type":"function","inputs":[{"name":"_pendingGov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setSupplyCap","type":"function","inputs":[{"name":"newSupplyCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"supply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"supplyCap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":{"compiler":{"version":"0.8.20+commit.a1b79de6"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_psm","type":"address"},{"internalType":"address","name":"_gov","type":"address"},{"internalType":"address","name":"_chair","type":"address"},{"internalType":"address","name":"_dola","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldChair","type":"address"},{"indexed":true,"internalType":"address","name":"newChair","type":"address"}],"name":"ChairChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Contraction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Expansion","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldGov","type":"address"},{"indexed":true,"internalType":"address","name":"newGov","type":"address"}],"name":"GovChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pendingGov","type":"address"}],"name":"PendingGovUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSupplyCap","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSupplyCap","type":"uint256"}],"name":"SupplyCapUpdated","type":"event"},{"inputs":[],"name":"DOLA","outputs":[{"internalType":"contract IDOLA","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPendingGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"contraction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"expansion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingGov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"psm","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resign","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newChair","type":"address"}],"name":"setChair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingGov","type":"address"}],"name":"setPendingGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupplyCap","type":"uint256"}],"name":"setSupplyCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"supply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"supplyCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"claimPendingGov()":{"details":"Can only be called by the pending governance."},"contraction(uint256)":{"details":"This function reduces the supply of DOLA in the PSM and burns the specified amount of DOLA.The amount must be greater than zero and cannot exceed the current supply.","params":{"amount":"The amount of DOLA to contract."}},"expansion(uint256)":{"details":"This function increases the supply of DOLA in the PSM and mints the specified amount of DOLA.The amount must be greater than zero and cannot exceed the supply cap.","params":{"amount":"The amount of DOLA to expand."}},"resign()":{"details":"The chair can resign, leaving the chair address as zero."},"setChair(address)":{"details":"The new chair must not be the zero address.","params":{"newChair":"Address of the new chair."}},"setPendingGov(address)":{"details":"The pending governance must accept the role.","params":{"_pendingGov":"Address of the new pending governance."}},"setSupplyCap(uint256)":{"params":{"newSupplyCap":"The new supply cap for DOLA in the PSM."}}},"version":1},"userdoc":{"kind":"user","methods":{"claimPendingGov()":{"notice":"Allows the pending governance to claim the governance role."},"contraction(uint256)":{"notice":"Allows the chair to contract the supply of DOLA in the PSM."},"expansion(uint256)":{"notice":"Allows the chair to expand the supply of DOLA in the PSM."},"resign()":{"notice":"Allows the current chair to resign."},"setChair(address)":{"notice":"Allows governance to set a new chair."},"setPendingGov(address)":{"notice":"Allows governance to set a new pending governance."},"setSupplyCap(uint256)":{"notice":"Allows governance to set a new supply cap."}},"version":1}},"settings":{"compilationTarget":{"src/PSMFed.sol":"PSMFed"},"evmVersion":"shanghai","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":10000},"remappings":[":@openzeppelin/contracts/=lib/openzeppelin/contracts/",":forge-std/=lib/forge-std/src/",":openzeppelin/=lib/openzeppelin/",":solmate/=lib/solmate/src/"]},"sources":{"lib/openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","license":"MIT","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"]},"src/PSMFed.sol":{"keccak256":"0x354957fc64195780f762cb4ee86bc807238c5a4bc523440e5359c5cf7e6ebd4e","license":"MIT","urls":["bzz-raw://8f747e3bdfe4f230c9242a8595a2a555cf7fb3848198f22a721c8427cfc24baf","dweb:/ipfs/QmZFg7UVcQxfr5Fs8avtvbTABBvDGxeEFcpqmp4bXRDfER"]}},"version":1},"storageLayout":{"types":{"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":102,"label":"gov","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"1","type":"t_address","astId":104,"label":"pendingGov","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"2","type":"t_address","astId":106,"label":"chair","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"3","type":"t_uint256","astId":108,"label":"supply","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"4","type":"t_uint256","astId":110,"label":"supplyCap","offset":0,"contract":"src/PSMFed.sol:PSMFed"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","methods":{"resign()":{"notice":"Allows the current chair to resign."},"claimPendingGov()":{"notice":"Allows the pending governance to claim the governance role."},"setChair(address)":{"notice":"Allows governance to set a new chair."},"expansion(uint256)":{"notice":"Allows the chair to expand the supply of DOLA in the PSM."},"contraction(uint256)":{"notice":"Allows the chair to contract the supply of DOLA in the PSM."},"setSupplyCap(uint256)":{"notice":"Allows governance to set a new supply cap."},"setPendingGov(address)":{"notice":"Allows governance to set a new pending governance."}},"version":1},"devdoc":{"kind":"dev","methods":{"resign()":{"details":"The chair can resign, leaving the chair address as zero."},"claimPendingGov()":{"details":"Can only be called by the pending governance."},"setChair(address)":{"params":{"newChair":"Address of the new chair."},"details":"The new chair must not be the zero address."},"expansion(uint256)":{"params":{"amount":"The amount of DOLA to expand."},"details":"This function increases the supply of DOLA in the PSM and mints the specified amount of DOLA.The amount must be greater than zero and cannot exceed the supply cap."},"contraction(uint256)":{"params":{"amount":"The amount of DOLA to contract."},"details":"This function reduces the supply of DOLA in the PSM and burns the specified amount of DOLA.The amount must be greater than zero and cannot exceed the current supply."},"setSupplyCap(uint256)":{"params":{"newSupplyCap":"The new supply cap for DOLA in the PSM."}},"setPendingGov(address)":{"params":{"_pendingGov":"Address of the new pending governance."},"details":"The pending governance must accept the role."}},"version":1},"sourceIds":{"src/PSMFed.sol":{"id":1},"lib/openzeppelin/contracts/token/ERC20/IERC20.sol":{"id":0}},"additionalInput":null,"stdJsonInput":{"sources":{"src/PSMFed.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.20;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface IDOLA is IERC20 {\n    function mint(address to, uint256 amount) external;\n    function burn(uint256 amount) external;\n}\n\ncontract PSMFed {\n    address public immutable psm;\n    IDOLA public immutable DOLA;\n\n    address public gov;\n    address public pendingGov;\n    address public chair;\n    uint256 public supply; // Current DOLA amount supplied to the PSM\n    uint256 public supplyCap; // Maximum DOLA supply allowed in the PSM\n\n    event GovChanged(address indexed oldGov, address indexed newGov);\n    event PendingGovUpdated(address indexed pendingGov);\n    event ChairChanged(address indexed oldChair, address indexed newChair);\n    event SupplyCapUpdated(uint256 oldSupplyCap, uint256 newSupplyCap);\n    event Expansion(uint256 amount);\n    event Contraction(uint256 amount);\n\n    constructor(address _psm, address _gov, address _chair, address _dola) {\n        psm = _psm;\n        gov = _gov;\n        chair = _chair;\n        DOLA = IDOLA(_dola);\n    }\n\n    modifier onlyGov() {\n        require(msg.sender == gov, \"Not governance\");\n        _;\n    }\n\n    modifier onlyChair() {\n        require(msg.sender == chair, \"Not chair\");\n        _;\n    }\n\n    /**\n     * @notice Allows the chair to expand the supply of DOLA in the PSM.\n     * @dev This function increases the supply of DOLA in the PSM and mints\n     * the specified amount of DOLA.\n     * @dev The amount must be greater than zero and cannot exceed the supply cap.\n     * @param amount The amount of DOLA to expand.\n     */\n    function expansion(uint256 amount) external onlyChair {\n        require(amount > 0, \"Amount must be > 0\");\n        require(amount + supply <= supplyCap, \"Supply cap exceeded\");\n        supply += amount;\n        DOLA.mint(psm, amount);\n        emit Expansion(amount);\n    }\n\n    /**\n     * @notice Allows the chair to contract the supply of DOLA in the PSM.\n     * @dev This function reduces the supply of DOLA in the PSM and burns the\n     * specified amount of DOLA.\n     * @dev The amount must be greater than zero and cannot exceed the current supply.\n     * @param amount The amount of DOLA to contract.\n     */\n    function contraction(uint256 amount) external onlyChair {\n        require(amount > 0, \"Amount must be > 0\");\n        supply -= amount;\n        DOLA.transferFrom(psm, address(this), amount);\n        DOLA.burn(amount);\n        emit Contraction(amount);\n    }\n\n    /**\n     * @notice Allows governance to set a new supply cap.\n     * @param newSupplyCap The new supply cap for DOLA in the PSM.\n     */\n    function setSupplyCap(uint256 newSupplyCap) external onlyGov {\n        uint256 oldSupplyCap = supplyCap;\n        supplyCap = newSupplyCap;\n        emit SupplyCapUpdated(oldSupplyCap, newSupplyCap);\n    }\n\n    /**\n     * @notice Allows governance to set a new chair.\n     * @dev The new chair must not be the zero address.\n     * @param newChair Address of the new chair.\n     */\n    function setChair(address newChair) external onlyGov {\n        address oldChair = chair;\n        chair = newChair;\n        emit ChairChanged(oldChair, newChair);\n    }\n\n    /**\n     * @notice Allows the current chair to resign.\n     * @dev The chair can resign, leaving the chair address as zero.\n     */\n    function resign() external onlyChair {\n        address oldChair = chair;\n        chair = address(0);\n        emit ChairChanged(oldChair, address(0));\n    }\n\n    /**\n     * @notice Allows governance to set a new pending governance.\n     * @dev The pending governance must accept the role.\n     * @param _pendingGov Address of the new pending governance.\n     */\n    function setPendingGov(address _pendingGov) external onlyGov {\n        pendingGov = _pendingGov;\n        emit PendingGovUpdated(_pendingGov);\n    }\n\n    /**\n     * @notice Allows the pending governance to claim the governance role.\n     * @dev Can only be called by the pending governance.\n     */\n    function claimPendingGov() external {\n        require(msg.sender == pendingGov, \"Not pending gov\");\n        emit GovChanged(gov, pendingGov);\n        gov = pendingGov;\n        pendingGov = address(0);\n    }\n}\n"},"lib/openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n\n    /**\n     * @dev Returns the value of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the value of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address to, uint256 value) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n     * caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 value) external returns (bool);\n\n    /**\n     * @dev Moves a `value` amount of tokens from `from` to `to` using the\n     * allowance mechanism. `value` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n"}},"language":"Solidity","settings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"ipfs","useLiteralContent":false},"optimizer":{"runs":10000,"enabled":true},"evmVersion":"shanghai","remappings":["@openzeppelin/contracts/=lib/openzeppelin/contracts/","forge-std/=lib/forge-std/src/","openzeppelin/=lib/openzeppelin/","solmate/=lib/solmate/src/"]}},"stdJsonOutput":{"sources":{"src/PSMFed.sol":{"id":1},"lib/openzeppelin/contracts/token/ERC20/IERC20.sol":{"id":0}},"contracts":{"src/PSMFed.sol":{"PSMFed":{"abi":[{"type":"constructor","inputs":[{"name":"_psm","type":"address","internalType":"address"},{"name":"_gov","type":"address","internalType":"address"},{"name":"_chair","type":"address","internalType":"address"},{"name":"_dola","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"ChairChanged","type":"event","inputs":[{"name":"oldChair","type":"address","indexed":true,"internalType":"address"},{"name":"newChair","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"Contraction","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"Expansion","type":"event","inputs":[{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"GovChanged","type":"event","inputs":[{"name":"oldGov","type":"address","indexed":true,"internalType":"address"},{"name":"newGov","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"PendingGovUpdated","type":"event","inputs":[{"name":"pendingGov","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"SupplyCapUpdated","type":"event","inputs":[{"name":"oldSupplyCap","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSupplyCap","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"name":"DOLA","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IDOLA"}],"stateMutability":"view"},{"name":"chair","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"claimPendingGov","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"contraction","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"expansion","type":"function","inputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"gov","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"pendingGov","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"psm","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"resign","type":"function","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"name":"setChair","type":"function","inputs":[{"name":"newChair","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setPendingGov","type":"function","inputs":[{"name":"_pendingGov","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setSupplyCap","type":"function","inputs":[{"name":"newSupplyCap","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"supply","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"name":"supplyCap","type":"function","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.20+commit.a1b79de6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_psm\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_gov\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_chair\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_dola\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldChair\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newChair\",\"type\":\"address\"}],\"name\":\"ChairChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Contraction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Expansion\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldGov\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newGov\",\"type\":\"address\"}],\"name\":\"GovChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pendingGov\",\"type\":\"address\"}],\"name\":\"PendingGovUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldSupplyCap\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSupplyCap\",\"type\":\"uint256\"}],\"name\":\"SupplyCapUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOLA\",\"outputs\":[{\"internalType\":\"contract IDOLA\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimPendingGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"contraction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"expansion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingGov\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"psm\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resign\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newChair\",\"type\":\"address\"}],\"name\":\"setChair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pendingGov\",\"type\":\"address\"}],\"name\":\"setPendingGov\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newSupplyCap\",\"type\":\"uint256\"}],\"name\":\"setSupplyCap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyCap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"claimPendingGov()\":{\"details\":\"Can only be called by the pending governance.\"},\"contraction(uint256)\":{\"details\":\"This function reduces the supply of DOLA in the PSM and burns the specified amount of DOLA.The amount must be greater than zero and cannot exceed the current supply.\",\"params\":{\"amount\":\"The amount of DOLA to contract.\"}},\"expansion(uint256)\":{\"details\":\"This function increases the supply of DOLA in the PSM and mints the specified amount of DOLA.The amount must be greater than zero and cannot exceed the supply cap.\",\"params\":{\"amount\":\"The amount of DOLA to expand.\"}},\"resign()\":{\"details\":\"The chair can resign, leaving the chair address as zero.\"},\"setChair(address)\":{\"details\":\"The new chair must not be the zero address.\",\"params\":{\"newChair\":\"Address of the new chair.\"}},\"setPendingGov(address)\":{\"details\":\"The pending governance must accept the role.\",\"params\":{\"_pendingGov\":\"Address of the new pending governance.\"}},\"setSupplyCap(uint256)\":{\"params\":{\"newSupplyCap\":\"The new supply cap for DOLA in the PSM.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimPendingGov()\":{\"notice\":\"Allows the pending governance to claim the governance role.\"},\"contraction(uint256)\":{\"notice\":\"Allows the chair to contract the supply of DOLA in the PSM.\"},\"expansion(uint256)\":{\"notice\":\"Allows the chair to expand the supply of DOLA in the PSM.\"},\"resign()\":{\"notice\":\"Allows the current chair to resign.\"},\"setChair(address)\":{\"notice\":\"Allows governance to set a new chair.\"},\"setPendingGov(address)\":{\"notice\":\"Allows governance to set a new pending governance.\"},\"setSupplyCap(uint256)\":{\"notice\":\"Allows governance to set a new supply cap.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PSMFed.sol\":\"PSMFed\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin/contracts/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin/=lib/openzeppelin/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"src/PSMFed.sol\":{\"keccak256\":\"0x354957fc64195780f762cb4ee86bc807238c5a4bc523440e5359c5cf7e6ebd4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f747e3bdfe4f230c9242a8595a2a555cf7fb3848198f22a721c8427cfc24baf\",\"dweb:/ipfs/QmZFg7UVcQxfr5Fs8avtvbTABBvDGxeEFcpqmp4bXRDfER\"]}},\"version\":1}","userdoc":{"kind":"user","methods":{"resign()":{"notice":"Allows the current chair to resign."},"claimPendingGov()":{"notice":"Allows the pending governance to claim the governance role."},"setChair(address)":{"notice":"Allows governance to set a new chair."},"expansion(uint256)":{"notice":"Allows the chair to expand the supply of DOLA in the PSM."},"contraction(uint256)":{"notice":"Allows the chair to contract the supply of DOLA in the PSM."},"setSupplyCap(uint256)":{"notice":"Allows governance to set a new supply cap."},"setPendingGov(address)":{"notice":"Allows governance to set a new pending governance."}},"version":1},"devdoc":{"kind":"dev","methods":{"resign()":{"details":"The chair can resign, leaving the chair address as zero."},"claimPendingGov()":{"details":"Can only be called by the pending governance."},"setChair(address)":{"params":{"newChair":"Address of the new chair."},"details":"The new chair must not be the zero address."},"expansion(uint256)":{"params":{"amount":"The amount of DOLA to expand."},"details":"This function increases the supply of DOLA in the PSM and mints the specified amount of DOLA.The amount must be greater than zero and cannot exceed the supply cap."},"contraction(uint256)":{"params":{"amount":"The amount of DOLA to contract."},"details":"This function reduces the supply of DOLA in the PSM and burns the specified amount of DOLA.The amount must be greater than zero and cannot exceed the current supply."},"setSupplyCap(uint256)":{"params":{"newSupplyCap":"The new supply cap for DOLA in the PSM."}},"setPendingGov(address)":{"params":{"_pendingGov":"Address of the new pending governance."},"details":"The pending governance must accept the role."}},"version":1},"storageLayout":{"types":{"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_uint256":{"label":"uint256","encoding":"inplace","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":102,"label":"gov","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"1","type":"t_address","astId":104,"label":"pendingGov","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"2","type":"t_address","astId":106,"label":"chair","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"3","type":"t_uint256","astId":108,"label":"supply","offset":0,"contract":"src/PSMFed.sol:PSMFed"},{"slot":"4","type":"t_uint256","astId":110,"label":"supplyCap","offset":0,"contract":"src/PSMFed.sol:PSMFed"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"60c060405234801561000f575f80fd5b50604051610e42380380610e4283398101604081905261002e91610087565b6001600160a01b039384166080525f80549385166001600160a01b03199485161790556002805492851692909316919091179091551660a0526100d8565b80516001600160a01b0381168114610082575f80fd5b919050565b5f805f806080858703121561009a575f80fd5b6100a38561006c565b93506100b16020860161006c565b92506100bf6040860161006c565b91506100cd6060860161006c565b905092959194509250565b60805160a051610d2661011c5f395f81816101bb0152818161043a015281816107f7015261089101525f818161010a0152818161040b01526107c20152610d265ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806392c592d011610088578063ee1ef57511610063578063ee1ef57514610203578063efdf0bb014610216578063f0c9e46514610229578063fdf893f514610231575f80fd5b806392c592d0146101b6578063b6a3f59a146101dd578063e1a611b7146101f0575f80fd5b806325240810116100c357806325240810146101705780632720b22e1461019057806369652fcf146101a55780638f770ad0146101ad575f80fd5b8063047fc9aa146100e957806304bda2621461010557806312d43a5114610151575b5f80fd5b6100f260035481565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fc565b5f5461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a361019e366004610c27565b610251565b005b6101a36104cd565b6100f260045481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101a36101eb366004610c27565b6105c0565b6101a36101fe366004610c27565b610685565b6101a3610211366004610c3e565b61092e565b6101a3610224366004610c3e565b610a24565b6101a3610b12565b60025461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8111610340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b6004546003546103509083610ca5565b11156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c79206361702065786365656465640000000000000000000000000060448201526064016102ce565b8060035f8282546103c99190610ca5565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b15801561047b575f80fd5b505af115801561048d573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516104c291815260200190565b60405180910390a150565b60025473ffffffffffffffffffffffffffffffffffffffff16331461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915560405173ffffffffffffffffffffffffffffffffffffffff909116905f9082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e908390a350565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600480549082905560408051828152602081018490527fb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53910160405180910390a15050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b5f811161076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b8060035f8282546107809190610cbe565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af115801561083d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108619190610cd1565b506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c68906024015f604051808303815f87803b1580156108e7575f80fd5b505af11580156108f9573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba816040516104c291815260200190565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49905f90a250565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f742070656e64696e6720676f76000000000000000000000000000000000060448201526064016102ce565b6001545f805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac291a3600180545f80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b5f60208284031215610c37575f80fd5b5035919050565b5f60208284031215610c4e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c71575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610cb857610cb8610c78565b92915050565b81810381811115610cb857610cb8610c78565b5f60208284031215610ce1575f80fd5b81518015158114610c71575f80fdfea264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","sourceMap":"247:3962:1:-:0;;;913:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;994:10:1;;;;;1014:3;:10;;;;;-1:-1:-1;;;;;;1014:10:1;;;;;;1034:5;:14;;;;;;;;;;;;;;;;1058:19;;;247:3962;;14:177:2;93:13;;-1:-1:-1;;;;;135:31:2;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:464::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;537:49;582:2;571:9;567:18;537:49;:::i;:::-;527:59;;605:49;650:2;639:9;635:18;605:49;:::i;:::-;595:59;;196:464;;;;;;;:::o;:::-;247:3962:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561000f575f80fd5b50600436106100e5575f3560e01c806392c592d011610088578063ee1ef57511610063578063ee1ef57514610203578063efdf0bb014610216578063f0c9e46514610229578063fdf893f514610231575f80fd5b806392c592d0146101b6578063b6a3f59a146101dd578063e1a611b7146101f0575f80fd5b806325240810116100c357806325240810146101705780632720b22e1461019057806369652fcf146101a55780638f770ad0146101ad575f80fd5b8063047fc9aa146100e957806304bda2621461010557806312d43a5114610151575b5f80fd5b6100f260035481565b6040519081526020015b60405180910390f35b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100fc565b5f5461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b6101a361019e366004610c27565b610251565b005b6101a36104cd565b6100f260045481565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6101a36101eb366004610c27565b6105c0565b6101a36101fe366004610c27565b610685565b6101a3610211366004610c3e565b61092e565b6101a3610224366004610c3e565b610a24565b6101a3610b12565b60025461012c9073ffffffffffffffffffffffffffffffffffffffff1681565b60025473ffffffffffffffffffffffffffffffffffffffff1633146102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5f8111610340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b6004546003546103509083610ca5565b11156103b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f537570706c79206361702065786365656465640000000000000000000000000060448201526064016102ce565b8060035f8282546103c99190610ca5565b90915550506040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f19906044015f604051808303815f87803b15801561047b575f80fd5b505af115801561048d573d5f803e3d5ffd5b505050507fdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032816040516104c291815260200190565b60405180910390a150565b60025473ffffffffffffffffffffffffffffffffffffffff16331461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915560405173ffffffffffffffffffffffffffffffffffffffff909116905f9082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e908390a350565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600480549082905560408051828152602081018490527fb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53910160405180910390a15050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f74206368616972000000000000000000000000000000000000000000000060448201526064016102ce565b5f811161076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416d6f756e74206d757374206265203e2030000000000000000000000000000060448201526064016102ce565b8060035f8282546107809190610cbe565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906064016020604051808303815f875af115801561083d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108619190610cd1565b506040517f42966c68000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906342966c68906024015f604051808303815f87803b1580156108e7575f80fd5b505af11580156108f9573d5f803e3d5ffd5b505050507f32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba816040516104c291815260200190565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146109ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e905f90a35050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f7420676f7665726e616e636500000000000000000000000000000000000060448201526064016102ce565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49905f90a250565b60015473ffffffffffffffffffffffffffffffffffffffff163314610b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f742070656e64696e6720676f76000000000000000000000000000000000060448201526064016102ce565b6001545f805460405173ffffffffffffffffffffffffffffffffffffffff93841693909116917f3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac291a3600180545f80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff841617909155169055565b5f60208284031215610c37575f80fd5b5035919050565b5f60208284031215610c4e575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610c71575f80fd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610cb857610cb8610c78565b92915050565b81810381811115610cb857610cb8610c78565b5f60208284031215610ce1575f80fd5b81518015158114610c71575f80fdfea264697066735822122036b7c9aa871b3c4aeaafcd7a910dc3a6d174e44d38a46c9060d0681b6bac34a064736f6c63430008140033","sourceMap":"247:3962:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:21;;;;;;;;;160:25:2;;;148:2;133:18;418:21:1;;;;;;;;269:28;;;;;;;;372:42:2;360:55;;;342:74;;330:2;315:18;269:28:1;196:226:2;337:18:1;;;;;;;;;361:25;;;;;;;;;1619:272;;;;;;:::i;:::-;;:::i;:::-;;3334:155;;;:::i;488:24::-;;;;;;303:27;;;;;2642:203;;;;;;:::i;:::-;;:::i;2239:256::-;;;;;;:::i;:::-;;:::i;3025:167::-;;;;;;:::i;:::-;;:::i;3699:147::-;;;;;;:::i;:::-;;:::i;4001:206::-;;;:::i;392:20::-;;;;;;;;;1619:272;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;;;;;;;;;1700:1:::1;1691:6;:10;1683:41;;;::::0;::::1;::::0;;1708:2:2;1683:41:1::1;::::0;::::1;1690:21:2::0;1747:2;1727:18;;;1720:30;1786:20;1766:18;;;1759:48;1824:18;;1683:41:1::1;1506:342:2::0;1683:41:1::1;1761:9;::::0;1751:6:::1;::::0;1742:15:::1;::::0;:6;:15:::1;:::i;:::-;:28;;1734:60;;;::::0;::::1;::::0;;2374:2:2;1734:60:1::1;::::0;::::1;2356:21:2::0;2413:2;2393:18;;;2386:30;2452:21;2432:18;;;2425:49;2491:18;;1734:60:1::1;2172:343:2::0;1734:60:1::1;1814:6;1804;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;1830:22:1::1;::::0;;;;:9:::1;1840:3;2712:55:2::0;;1830:22:1::1;::::0;::::1;2694:74:2::0;2784:18;;;2777:34;;;1830:4:1::1;:9;::::0;::::1;::::0;2667:18:2;;1830:22:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1867:17;1877:6;1867:17;;;;160:25:2::0;;148:2;133:18;;14:177;1867:17:1::1;;;;;;;;1619:272:::0;:::o;3334:155::-;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;1169:332:2;1218:41:1;3400:5:::1;::::0;;3415:18;;::::1;::::0;;;3448:34:::1;::::0;3400:5:::1;::::0;;::::1;::::0;3381:16:::1;::::0;3400:5;;3448:34:::1;::::0;3381:16;;3448:34:::1;3371:118;3334:155::o:0;2642:203::-;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;2736:9:::1;::::0;;2755:24;;;;2794:44:::1;::::0;;3339:25:2;;;3395:2;3380:18;;3373:34;;;2794:44:1::1;::::0;3312:18:2;2794:44:1::1;;;;;;;2703:142;2642:203:::0;:::o;2239:256::-;1240:5;;;;1226:10;:19;1218:41;;;;;;;1371:2:2;1218:41:1;;;1353:21:2;1410:1;1390:18;;;1383:29;1448:11;1428:18;;;1421:39;1477:18;;1218:41:1;1169:332:2;1218:41:1;2322:1:::1;2313:6;:10;2305:41;;;::::0;::::1;::::0;;1708:2:2;2305:41:1::1;::::0;::::1;1690:21:2::0;1747:2;1727:18;;;1720:30;1786:20;1766:18;;;1759:48;1824:18;;2305:41:1::1;1506:342:2::0;2305:41:1::1;2366:6;2356;;:16;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;2382:45:1::1;::::0;;;;:17:::1;2400:3;3832:15:2::0;;2382:45:1::1;::::0;::::1;3814:34:2::0;2413:4:1::1;3864:18:2::0;;;3857:43;3916:18;;;3909:34;;;2382:4:1::1;:17;::::0;::::1;::::0;3726:18:2;;2382:45:1::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;2437:17:1::1;::::0;;;;::::1;::::0;::::1;160:25:2::0;;;2437:4:1::1;:9;;::::0;::::1;::::0;133:18:2;;2437:17:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2469:19;2481:6;2469:19;;;;160:25:2::0;;148:2;133:18;;14:177;3025:167:1;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;3107:5:::1;::::0;;::::1;3122:16:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;3153:32:::1;::::0;3107:5;::::1;::::0;3122:16;3107:5;;3153:32:::1;::::0;3088:16:::1;::::0;3153:32:::1;3078:114;3025:167:::0;:::o;3699:147::-;1141:3;;;;1127:10;:17;1119:44;;;;;;;3024:2:2;1119:44:1;;;3006:21:2;3063:2;3043:18;;;3036:30;3102:16;3082:18;;;3075:44;3136:18;;1119:44:1;2822:338:2;1119:44:1;3770:10:::1;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;3809:30:::1;::::0;::::1;::::0;-1:-1:-1;;3809:30:1::1;3699:147:::0;:::o;4001:206::-;4069:10;;;;4055;:24;4047:52;;;;;;;4438:2:2;4047:52:1;;;4420:21:2;4477:2;4457:18;;;4450:30;4516:17;4496:18;;;4489:45;4551:18;;4047:52:1;4236:339:2;4047:52:1;4130:10;;;4125:3;;4114:27;;4130:10;;;;;4125:3;;;;4114:27;;;4157:10;;;;4151:16;;;;;;4157:10;;;4151:16;;;;4177:23;;;4001:206::o;427:180:2:-;486:6;539:2;527:9;518:7;514:23;510:32;507:52;;;555:1;552;545:12;507:52;-1:-1:-1;578:23:2;;427:180;-1:-1:-1;427:180:2:o;855:309::-;914:6;967:2;955:9;946:7;942:23;938:32;935:52;;;983:1;980;973:12;935:52;1022:9;1009:23;1072:42;1065:5;1061:54;1054:5;1051:65;1041:93;;1130:1;1127;1120:12;1041:93;1153:5;855:309;-1:-1:-1;;;855:309:2:o;1853:184::-;1905:77;1902:1;1895:88;2002:4;1999:1;1992:15;2026:4;2023:1;2016:15;2042:125;2107:9;;;2128:10;;;2125:36;;;2141:18;;:::i;:::-;2042:125;;;;:::o;3418:128::-;3485:9;;;3506:11;;;3503:37;;;3520:18;;:::i;3954:277::-;4021:6;4074:2;4062:9;4053:7;4049:23;4045:32;4042:52;;;4090:1;4087;4080:12;4042:52;4122:9;4116:16;4175:5;4168:13;4161:21;4154:5;4151:32;4141:60;;4197:1;4194;4187:12","linkReferences":{},"immutableReferences":{"97":[{"start":266,"length":32},{"start":1035,"length":32},{"start":1986,"length":32}],"100":[{"start":443,"length":32},{"start":1082,"length":32},{"start":2039,"length":32},{"start":2193,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"chair()","signatureHash4":"0xfdf893f5","signatureHash32":"0xfdf893f5c69e19fb85a633c8d6b6b33dbaf4e71fb9dd335fee26fe9acc6fbeac"},{"signature":"claimPendingGov()","signatureHash4":"0xf0c9e465","signatureHash32":"0xf0c9e46594888b850f6b370b0e9ad9129d0a2811c8eafdfc2b45a13f4fa75431"},{"signature":"contraction(uint256)","signatureHash4":"0xe1a611b7","signatureHash32":"0xe1a611b76a3c4a163fd96bcb310a4d703b10d44f043ec929c8c72995c41a7df2"},{"signature":"DOLA()","signatureHash4":"0x92c592d0","signatureHash32":"0x92c592d01e694731497d4485feebfcc101a83ff11640c4de574ce4bcf6905927"},{"signature":"expansion(uint256)","signatureHash4":"0x2720b22e","signatureHash32":"0x2720b22e48edcaaed502047fa711bda7e81f2c9ea86015fa79a41a7cffc04ecd"},{"signature":"gov()","signatureHash4":"0x12d43a51","signatureHash32":"0x12d43a5113d1a5a043fb0a1e225271349c3281c88b25aa7a29badb328e05e064"},{"signature":"pendingGov()","signatureHash4":"0x25240810","signatureHash32":"0x25240810b1354a6deb4201aae978914ac16267679b85c2c4a276da4725e9f260"},{"signature":"psm()","signatureHash4":"0x04bda262","signatureHash32":"0x04bda26272e7eaf1252da89dcbf69a1a95eaccd45af81af292606e6446c25193"},{"signature":"resign()","signatureHash4":"0x69652fcf","signatureHash32":"0x69652fcf6026f072ab393fdc0356633188ec2de314b49a5569ac395edb4e5c2e"},{"signature":"setChair(address)","signatureHash4":"0xee1ef575","signatureHash32":"0xee1ef575451ddf14a0b0ef1f25acccb31f8972355abc77ee00aa198ffd50d764"},{"signature":"setPendingGov(address)","signatureHash4":"0xefdf0bb0","signatureHash32":"0xefdf0bb0c16256f6cf4130ba5695ce101f5b6f5df01c96d975683b8b4f2d9942"},{"signature":"setSupplyCap(uint256)","signatureHash4":"0xb6a3f59a","signatureHash32":"0xb6a3f59a4b423d930f6b1b4b0f48271de5d1f3d83e2d13eaa442d692579570dc"},{"signature":"supply()","signatureHash4":"0x047fc9aa","signatureHash32":"0x047fc9aa9c43765b87c3a39fed07d345c783ece1257071b04e0cbada77a1af54"},{"signature":"supplyCap()","signatureHash4":"0x8f770ad0","signatureHash32":"0x8f770ad0d077d18483d7caeaf08bed13ca7daa3a89ae6bafa549c15223b231b3"}],"event":[{"signature":"ChairChanged(address,address)","signatureHash4":"0x0a47357b","signatureHash32":"0x0a47357b37b43edfce3b49e26d073c29be56d40a540f4766153a6169d031e86e"},{"signature":"Contraction(uint256)","signatureHash4":"0x32d27517","signatureHash32":"0x32d275175c36fa468b3e61c6763f9488ff3c9be127e35e011cf4e04d602224ba"},{"signature":"Expansion(uint256)","signatureHash4":"0xdcc16fd1","signatureHash32":"0xdcc16fd18a808d877bcd9a09b544844b36ae8f0a4b222e317d7b777b2c18b032"},{"signature":"GovChanged(address,address)","signatureHash4":"0x3d1e4c3a","signatureHash32":"0x3d1e4c3a68fed9f4f8315582b7297cf8fa264bc8e6704287603ba8c72bf05ac2"},{"signature":"PendingGovUpdated(address)","signatureHash4":"0x0b1b3d8e","signatureHash32":"0x0b1b3d8e19656af9f8acea883020be347ec617cada0060e56959226bb0109c49"},{"signature":"SupplyCapUpdated(uint256,uint256)","signatureHash4":"0xb4d96b3a","signatureHash32":"0xb4d96b3a6638191d0f6aefa0fdc4d99af3592f4c97480e31feeb977723c63b53"}],"error":[]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"exact_match","chainId":"1","address":"0x67FC21332D24FC5250a3B7fc988191ad7F38f9cC"}