{"matchId":"55980001","creationMatch":"match","runtimeMatch":"match","verifiedAt":"2026-10-12T10:27:21Z","creationBytecode":{"onchainBytecode":"0x60c060405234801561000f575f80fd5b506040516112d83803806112d883398101604081905261002e91610157565b6001600160a01b0383163b158061004c57506001600160a01b038216155b8061005e57506001600160a01b038116155b1561007c5760405163f2a3e8db60e01b815260040160405180910390fd5b5f836001600160a01b031663bc4d861b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd91906101a1565b90506001600160a01b0381166101065760405163f2a3e8db60e01b815260040160405180910390fd5b6001600160a01b03938416608052831660a0525f80549284166001600160a01b0319938416179055600180549190931691161790556101c3565b6001600160a01b0381168114610154575f80fd5b50565b5f805f60608486031215610169575f80fd5b835161017481610140565b602085015190935061018581610140565b604085015190925061019681610140565b809150509250925092565b5f602082840312156101b1575f80fd5b81516101bc81610140565b9392505050565b60805160a0516110e06101f85f395f60ba01525f81816101a30152818161037e0152818161091a0152610a8301526110e05ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b630000000000000000000000005da3054201bc7e241875ac68173e49c269f76d44000000000000000000000000047f606fd5b2baa5f5c6c4ab8958e45cb6b054b7","recompiledBytecode":"0x60c060405234801561000f575f80fd5b506040516112d83803806112d883398101604081905261002e91610157565b6001600160a01b0383163b158061004c57506001600160a01b038216155b8061005e57506001600160a01b038116155b1561007c5760405163f2a3e8db60e01b815260040160405180910390fd5b5f836001600160a01b031663bc4d861b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd91906101a1565b90506001600160a01b0381166101065760405163f2a3e8db60e01b815260040160405180910390fd5b6001600160a01b03938416608052831660a0525f80549284166001600160a01b0319938416179055600180549190931691161790556101c3565b6001600160a01b0381168114610154575f80fd5b50565b5f805f60608486031215610169575f80fd5b835161017481610140565b602085015190935061018581610140565b604085015190925061019681610140565b809150509250925092565b5f602082840312156101b1575f80fd5b81516101bc81610140565b9392505050565b60805160a0516110e06101f85f395f60ba01525f81816101a30152818161037e0152818161091a0152610a8301526110e05ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a","sourceMap":"418:4408:0:-:0;;;1595:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1687:32:0;;;:37;;:62;;-1:-1:-1;;;;;;1728:21:0;;;1687:62;:86;;;-1:-1:-1;;;;;;1753:20:0;;;1687:86;1683:114;;;1782:15;;-1:-1:-1;;;1782:15:0;;;;;;;;;;;1683:114;1807:16;1826:11;-1:-1:-1;;;;;1826:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1807:52;-1:-1:-1;;;;;;1873:22:0;;1869:50;;1904:15;;-1:-1:-1;;;1904:15:0;;;;;;;;;;;1869:50;-1:-1:-1;;;;;1929:32:0;;;;;1971:27;;;;2008:6;:16;;;;;-1:-1:-1;;;;;;2008:16:0;;;;;;;2034:14;;;;;;;;;;;418:4408;;14:152:2;-1:-1:-1;;;;;110:31:2;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:609::-;286:6;294;302;355:2;343:9;334:7;330:23;326:32;323:52;;;371:1;368;361:12;323:52;403:9;397:16;422:52;468:5;422:52;:::i;:::-;543:2;528:18;;522:25;493:5;;-1:-1:-1;556:54:2;522:25;556:54;:::i;:::-;681:2;666:18;;660:25;629:7;;-1:-1:-1;694:54:2;660:25;694:54;:::i;:::-;767:7;757:17;;;171:609;;;;;:::o;785:272::-;855:6;908:2;896:9;887:7;883:23;879:32;876:52;;;924:1;921;914:12;876:52;956:9;950:16;975:52;1021:5;975:52;:::i;:::-;1046:5;785:272;-1:-1:-1;;;785:272:2:o;:::-;418:4408:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa164736f6c634300081a000a","offset":4812}},"transformations":[{"type":"insert","offset":4824,"reason":"constructorArguments"}],"transformationValues":{"constructorArguments":"0x0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b630000000000000000000000005da3054201bc7e241875ac68173e49c269f76d44000000000000000000000000047f606fd5b2baa5f5c6c4ab8958e45cb6b054b7"}},"runtimeBytecode":{"onchainBytecode":"0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f0000000000000000000000008004a169fb4a3325136eb29fa0ceb6d2e539a43281565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b6381565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b636001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b631691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b63169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a","recompiledBytecode":"0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a","sourceMap":"418:4408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1038:41;;;;;;;;-1:-1:-1;;;;;178:32:2;;;160:51;;148:2;133:18;1038:41:0;;;;;;;;4401:210;;;;;;:::i;:::-;;:::i;:::-;;1332:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;987:14:2;;980:22;962:41;;950:2;935:18;1332:48:0;822:187:2;1085:21:0;;;;;-1:-1:-1;;;;;1085:21:0;;;3929:203;;;;;;:::i;:::-;;:::i;4617:207::-;;;;;;:::i;:::-;;:::i;2061:1862::-;;;;;;:::i;:::-;;:::i;4138:257::-;;;;;;:::i;:::-;;:::i;977:55::-;;;;;1138:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4670:25:2;;;4658:2;4643:18;1138:41:0;4524:177:2;1185:43:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1185:43:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;4979:52:2;;;4961:71;;5063:2;5048:18;;5041:34;;;;5091:18;;;5084:34;;;;-1:-1:-1;;;;;5154:31:2;;;5149:2;5134:18;;5127:59;5223:31;5217:3;5202:19;;5195:60;4948:3;4933:19;1185:43:0;4706:555:2;1112:20:0;;;;;-1:-1:-1;;;;;1112:20:0;;;4401:210;4469:5;;-1:-1:-1;;;;;4469:5:0;4455:10;:19;4451:46;;4483:14;;-1:-1:-1;;;4483:14:0;;;;;;;;;;;4451:46;-1:-1:-1;;;;;4511:16:0;;4507:44;;4536:15;;-1:-1:-1;;;4536:15:0;;;;;;;;;;;4507:44;4561:6;:11;;-1:-1:-1;;;;;;4561:11:0;-1:-1:-1;;;;;4561:11:0;;;;;;;4587:17;;4561:11;;4587:17;;;4401:210;:::o;3929:203::-;4029:6;;-1:-1:-1;;;;;4029:6:0;4015:10;:20;4011:47;;4044:14;;-1:-1:-1;;;4044:14:0;;;;;;;;;;;4011:47;4068:57;;-1:-1:-1;;;4068:57:0;;;;;5438:25:2;;;-1:-1:-1;;;;;5499:31:2;;5479:18;;;5472:59;4068:18:0;-1:-1:-1;;;;;4068:33:0;;;;5411:18:2;;4068:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:203;;:::o;4617:207::-;4684:5;;-1:-1:-1;;;;;4684:5:0;4670:10;:19;4666:46;;4698:14;;-1:-1:-1;;;4698:14:0;;;;;;;;;;;4666:46;-1:-1:-1;;;;;4726:16:0;;4722:44;;4751:15;;-1:-1:-1;;;4751:15:0;;;;;;;;;;;4722:44;4776:5;:10;;-1:-1:-1;;;;;;4776:10:0;-1:-1:-1;;;;;4776:10:0;;;;;;;;4801:16;;;;-1:-1:-1;;4801:16:0;4617:207;:::o;2061:1862::-;2227:6;;-1:-1:-1;;;;;2227:6:0;2213:10;:20;2209:47;;2242:14;;-1:-1:-1;;;2242:14:0;;;;;;;;;;;2209:47;-1:-1:-1;;;;;;2270:19:0;;;;:49;;-1:-1:-1;2293:26:0;;2270:49;:75;;;-1:-1:-1;2323:22:0;;2270:75;:102;;;-1:-1:-1;2369:3:0;2349:23;;2270:102;:125;;;-1:-1:-1;2393:2:0;2376:19;;2270:125;2266:153;;;2404:15;;-1:-1:-1;;;2404:15:0;;;;;;;;;;;2266:153;2429:16;2469:5;2476:12;2490;2504:3;;2509:7;;2458:59;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2458:59:0;;;;;;;;;2448:70;;2458:59;2448:70;;;;2528:24;2555:22;;;:8;:22;;;;;;;;2591:19;;;;2448:70;;-1:-1:-1;;;;;;2591:19:0;:24;2587:136;;2656:8;2635;:17;;;:29;2631:61;;2673:19;;-1:-1:-1;;;2673:19:0;;;;;;;;;;;2631:61;2706:7;;;;2587:136;-1:-1:-1;;;;;;2736:13:0;;;;;;:6;:13;;;;;;:29;;2732:55;;2774:13;;-1:-1:-1;;;2774:13:0;;;;;;;;;;;2732:55;2822:85;;;;;;;;2830:5;-1:-1:-1;;;;;2822:85:0;;;;;;2837:12;2822:85;;;;2851:8;2822:85;;;;2868:15;-1:-1:-1;;;;;2822:85:0;;;;;2893:12;-1:-1:-1;;;;;2822:85:0;;;;2797:8;:22;2806:12;2797:22;;;;;;;;;;;:110;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;2933:12;2917:6;:13;2924:5;-1:-1:-1;;;;;2917:13:0;;-1:-1:-1;;;;;2917:13:0;;;;;;;;;;;;;:28;;;;2960:9;2955:895;2971:18;;;2955:895;;;3010:19;3032:7;;3040:1;3032:10;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3010:32;-1:-1:-1;3056:16:0;3091:6;;;;3010:32;3091:6;:::i;:::-;3075:24;;;;;;;:::i;:::-;;;;;;;;3056:43;;3118:1;:7;;;;;;;;;;:::i;:::-;:12;;;;;;:28;;-1:-1:-1;3134:7:0;;;;;;;;:::i;:::-;:12;;3145:1;3134:12;;3118:28;3117:54;;;-1:-1:-1;3151:15:0;;;;;;;;:::i;:::-;:20;;;;3117:54;:128;;;-1:-1:-1;3219:26:0;3207:6;;;;:1;:6;:::i;:::-;3191:24;;;;;;;:::i;:::-;;;;;;;;:54;;3117:128;:160;;;-1:-1:-1;3249:14:0;;;;:28;3117:160;:390;;;;3310:36;3298:8;:48;;:96;;;;;3362:32;3350:8;:44;;3298:96;:159;;;;;3427:30;3415:8;:42;;3298:159;:208;;;;;3473:33;3461:8;:45;;3298:208;3113:418;;;3516:15;;-1:-1:-1;;;3516:15:0;;;;;;;;;;;3113:418;3569:37;;;3580:9;;3569:37;;;;11565:25:2;;;;3591:14:0;;;;11606:18:2;;;11599:34;3569:37:0;;;;;;;;;11538:18:2;;;;3569:37:0;;3559:48;;;;;;;;;-1:-1:-1;3625:21:0;;;:16;:21;;;;;;;;;3621:49;;;3655:15;;-1:-1:-1;;;3655:15:0;;;;;;;;;;;3621:49;3684:21;;;;:16;:21;;;;;;;;;:28;;-1:-1:-1;;3684:28:0;3708:4;3684:28;;;-1:-1:-1;;;;;3726:18:0;:31;;;;3758:9;;;3769:7;;;;;;;;;:::i;:::-;3778:1;3781:6;;;;:1;:6;:::i;:::-;3789;;;;:1;:6;:::i;:::-;3797:10;;;;:1;:10;:::i;:::-;3809:13;;;;:1;:13;:::i;:::-;3824:1;:14;;;3726:113;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:854;;;2991:3;;;;;2955:895;;;;3884:12;3877:5;-1:-1:-1;;;;;3864:52:0;;;3898:12;3912:3;;3864:52;;;;;;;;:::i;:::-;;;;;;;;2199:1724;;2061:1862;;;;;;;;:::o;4138:257::-;4281:6;;-1:-1:-1;;;;;4281:6:0;4267:10;:20;4263:47;;4296:14;;-1:-1:-1;;;4296:14:0;;;;;;;;;;;4263:47;4320:68;;-1:-1:-1;;;4320:68:0;;-1:-1:-1;;;;;4320:18:0;:33;;;;:68;;4354:7;;4363:6;;4371:5;;4378:3;;;;4383:4;;4320:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:257;;;;;;:::o;222:173:2:-;290:20;;-1:-1:-1;;;;;339:31:2;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;400:186;-1:-1:-1;;;400:186:2:o;591:226::-;650:6;703:2;691:9;682:7;678:23;674:32;671:52;;;719:1;716;709:12;671:52;-1:-1:-1;764:23:2;;591:226;-1:-1:-1;591:226:2:o;1014:171::-;1081:20;;-1:-1:-1;;;;;1130:30:2;;1120:41;;1110:69;;1175:1;1172;1165:12;1190:298;1257:6;1265;1318:2;1306:9;1297:7;1293:23;1289:32;1286:52;;;1334:1;1331;1324:12;1286:52;1379:23;;;-1:-1:-1;1445:37:2;1478:2;1463:18;;1445:37;:::i;:::-;1435:47;;1190:298;;;;;:::o;1493:193::-;1561:20;;-1:-1:-1;;;;;;1610:51:2;;1600:62;;1590:90;;1676:1;1673;1666:12;1691:348;1743:8;1753:6;1807:3;1800:4;1792:6;1788:17;1784:27;1774:55;;1825:1;1822;1815:12;1774:55;-1:-1:-1;1848:20:2;;-1:-1:-1;;;;;1880:30:2;;1877:50;;;1923:1;1920;1913:12;1877:50;1960:4;1952:6;1948:17;1936:29;;2012:3;2005:4;1996:6;1988;1984:19;1980:30;1977:39;1974:59;;;2029:1;2026;2019:12;1974:59;1691:348;;;;;:::o;2044:1251::-;2204:6;2212;2220;2228;2236;2244;2252;2305:3;2293:9;2284:7;2280:23;2276:33;2273:53;;;2322:1;2319;2312:12;2273:53;2345:29;2364:9;2345:29;:::i;:::-;2335:39;-1:-1:-1;2443:2:2;2428:18;;2415:32;;-1:-1:-1;2544:2:2;2529:18;;2516:32;;-1:-1:-1;2625:2:2;2610:18;;2597:32;-1:-1:-1;;;;;2641:30:2;;2638:50;;;2684:1;2681;2674:12;2638:50;2723:59;2774:7;2765:6;2754:9;2750:22;2723:59;:::i;:::-;2801:8;;-1:-1:-1;2697:85:2;-1:-1:-1;;2889:3:2;2874:19;;2861:33;-1:-1:-1;;;;;2906:32:2;;2903:52;;;2951:1;2948;2941:12;2903:52;2974:24;;3029:4;3021:13;;3017:27;-1:-1:-1;3007:55:2;;3058:1;3055;3048:12;3007:55;3098:2;3085:16;-1:-1:-1;;;;;3116:6:2;3113:30;3110:50;;;3156:1;3153;3146:12;3110:50;3209:7;3204:2;3194:6;3191:1;3187:14;3183:2;3179:23;3175:32;3172:45;3169:65;;;3230:1;3227;3220:12;3169:65;3261:2;3257;3253:11;3243:21;;3283:6;3273:16;;;;2044:1251;;;;;;;;;;:::o;3300:793::-;3406:6;3414;3422;3430;3438;3446;3499:3;3487:9;3478:7;3474:23;3470:33;3467:53;;;3516:1;3513;3506:12;3467:53;3561:23;;;-1:-1:-1;3627:38:2;3661:2;3646:18;;3627:38;:::i;:::-;3617:48;;3684:37;3717:2;3706:9;3702:18;3684:37;:::i;:::-;3674:47;;3772:2;3761:9;3757:18;3744:32;-1:-1:-1;;;;;3791:6:2;3788:30;3785:50;;;3831:1;3828;3821:12;3785:50;3870:59;3921:7;3912:6;3901:9;3897:22;3870:59;:::i;:::-;3300:793;;;;-1:-1:-1;3300:793:2;;;;;4056:3;4041:19;;;4028:33;;3300:793;-1:-1:-1;;;;3300:793:2:o;4333:186::-;4392:6;4445:2;4433:9;4424:7;4420:23;4416:32;4413:52;;;4461:1;4458;4451:12;4413:52;4484:29;4503:9;4484:29;:::i;5542:267::-;5631:6;5626:3;5619:19;5683:6;5676:5;5669:4;5664:3;5660:14;5647:43;-1:-1:-1;5735:1:2;5710:16;;;5728:4;5706:27;;;5699:38;;;;5791:2;5770:15;;;-1:-1:-1;;5766:29:2;5757:39;;;5753:50;;5542:267::o;5814:162::-;5881:20;;5941:2;5930:21;;;5920:32;;5910:60;;5966:1;5963;5956:12;6079:156;6145:20;;6205:4;6194:16;;6184:27;;6174:55;;6225:1;6222;6215:12;6320:501;6379:5;6386:6;6446:3;6433:17;6532:2;6528:7;6517:8;6501:14;6497:29;6493:43;6473:18;6469:68;6459:96;;6551:1;6548;6541:12;6459:96;6579:33;;6683:4;6670:18;;;-1:-1:-1;6631:21:2;;-1:-1:-1;;;;;;6700:30:2;;6697:50;;;6743:1;6740;6733:12;6697:50;6790:6;6774:14;6770:27;6763:5;6759:39;6756:59;;;6811:1;6808;6801:12;6826:2920;-1:-1:-1;;;;;7219:39:2;7211:6;7207:52;7196:9;7189:71;7296:6;7291:2;7280:9;7276:18;7269:34;7339:6;7334:2;7323:9;7319:18;7312:34;7382:3;7377:2;7366:9;7362:18;7355:31;7170:4;7409:63;7467:3;7456:9;7452:19;7444:6;7436;7409:63;:::i;:::-;7509:22;;;7503:3;7488:19;;7481:51;7567:22;;;7617:2;7605:15;;;;7663:1;7659:14;;;7647:27;;7643:36;7702:6;7726:1;7754:14;7750:27;;;-1:-1:-1;;7746:42:2;7797:1920;7811:6;7808:1;7805:13;7797:1920;;;7876:19;;;-1:-1:-1;;7872:33:2;7860:46;;7945:20;;7988:27;;;7978:55;;8029:1;8026;8019:12;7978:55;8059:31;;8143:19;;8175:23;;8231:33;8260:2;8249:14;;8231:33;:::i;:::-;8277:48;8321:2;8313:6;8309:15;8295:12;6057:2;6046:21;6034:34;;5981:93;8277:48;;8360:32;8388:2;8381:5;8377:14;8360:32;:::i;:::-;6307:4;6296:16;8450:2;8438:15;;6284:29;8503:54;8553:2;8542:14;;8546:5;8503:54;:::i;:::-;8594:6;8589:2;8581:6;8577:15;8570:31;8628:77;8697:6;8689;8685:19;8671:12;8655:14;8628:77;:::i;:::-;8614:91;;;8756:55;8806:3;8799:5;8795:15;8788:5;8756:55;:::i;:::-;8861:6;8853;8849:19;8843:3;8835:6;8831:16;8824:45;8896:66;8955:6;8939:14;8923;8896:66;:::i;:::-;8882:80;;;;9013:55;9063:3;9056:5;9052:15;9045:5;9013:55;:::i;:::-;9118:6;9110;9106:19;9100:3;9092:6;9088:16;9081:45;9153:66;9212:6;9196:14;9180;9153:66;:::i;:::-;9139:80;;;;9270:56;9320:4;9313:5;9309:16;9302:5;9270:56;:::i;:::-;9377:6;9369;9365:19;9358:4;9350:6;9346:17;9339:46;9412:66;9471:6;9455:14;9439;9412:66;:::i;:::-;9555:4;9544:16;;;9531:30;9581:17;;;;9574:34;;;;-1:-1:-1;;9672:2:2;9695:12;;;;9398:80;;-1:-1:-1;9660:15:2;;;;;7833:1;7826:9;;;;;7797:1920;;;-1:-1:-1;9734:6:2;;6826:2920;-1:-1:-1;;;;;;;;;;;;;6826:2920:2:o;9751:127::-;9812:10;9807:3;9803:20;9800:1;9793:31;9843:4;9840:1;9833:15;9867:4;9864:1;9857:15;9883:324;9975:4;10033:11;10020:25;10127:3;10123:8;10112;10096:14;10092:29;10088:44;10068:18;10064:69;10054:97;;10147:1;10144;10137:12;10054:97;10168:33;;;;;9883:324;-1:-1:-1;;9883:324:2:o;10212:522::-;10290:4;10296:6;10356:11;10343:25;10450:2;10446:7;10435:8;10419:14;10415:29;10411:43;10391:18;10387:68;10377:96;;10469:1;10466;10459:12;10377:96;10496:33;;10548:20;;;-1:-1:-1;;;;;;10580:30:2;;10577:50;;;10623:1;10620;10613:12;10577:50;10656:4;10644:17;;-1:-1:-1;10687:14:2;10683:27;;;10673:38;;10670:58;;;10724:1;10721;10714:12;10739:271;10922:6;10914;10909:3;10896:33;10878:3;10948:16;;10973:13;;;10948:16;10739:271;-1:-1:-1;10739:271:2:o;11015:184::-;11073:6;11126:2;11114:9;11105:7;11101:23;11097:32;11094:52;;;11142:1;11139;11132:12;11094:52;11165:28;11183:9;11165:28;:::i;11204:182::-;11261:6;11314:2;11302:9;11293:7;11289:23;11285:32;11282:52;;;11330:1;11327;11320:12;11282:52;11353:27;11370:9;11353:27;:::i;11644:1142::-;12095:6;12084:9;12077:25;12153:6;12149:2;12138:22;12133:2;12122:9;12118:18;12111:50;12209:4;12201:6;12197:17;12192:2;12181:9;12177:18;12170:45;12251:3;12246:2;12235:9;12231:18;12224:31;12058:4;12278:63;12336:3;12325:9;12321:19;12313:6;12305;12278:63;:::i;:::-;12390:9;12382:6;12378:22;12372:3;12361:9;12357:19;12350:51;12424:50;12467:6;12459;12451;12424:50;:::i;:::-;12410:64;;12523:9;12515:6;12511:22;12505:3;12494:9;12490:19;12483:51;12557:50;12600:6;12592;12584;12557:50;:::i;:::-;12543:64;;12656:9;12648:6;12644:22;12638:3;12627:9;12623:19;12616:51;12684;12728:6;12719:7;12711:6;12684:51;:::i;:::-;12676:59;;;12772:7;12766:3;12755:9;12751:19;12744:36;11644:1142;;;;;;;;;;;;;;;:::o;12791:318::-;12978:6;12967:9;12960:25;13021:2;13016;13005:9;13001:18;12994:30;12941:4;13041:62;13099:2;13088:9;13084:18;13076:6;13068;13041:62;:::i;:::-;13033:70;12791:318;-1:-1:-1;;;;;12791:318:2:o;13114:583::-;13365:25;;;-1:-1:-1;;;;;13426:32:2;;13421:2;13406:18;;13399:60;-1:-1:-1;;;;;13495:31:2;;13490:2;13475:18;;13468:59;13446:3;13558:2;13543:18;;13536:31;;;-1:-1:-1;;13584:63:2;;13627:19;;13619:6;13611;13584:63;:::i;:::-;13576:71;;13684:6;13678:3;13667:9;13663:19;13656:35;13114:583;;;;;;;;;:::o","linkReferences":{},"cborAuxdata":{"1":{"value":"0xa164736f6c634300081a000a","offset":4308}},"immutableReferences":{"45":[{"start":419,"length":32},{"start":894,"length":32},{"start":2330,"length":32},{"start":2691,"length":32}],"47":[{"start":186,"length":32}]},"transformations":[{"id":"47","type":"replace","offset":186,"reason":"immutable"},{"id":"45","type":"replace","offset":419,"reason":"immutable"},{"id":"45","type":"replace","offset":894,"reason":"immutable"},{"id":"45","type":"replace","offset":2330,"reason":"immutable"},{"id":"45","type":"replace","offset":2691,"reason":"immutable"}],"transformationValues":{"immutables":{"45":"0x0000000000000000000000008004baa17c55a88189ae136b182e5fda19de9b63","47":"0x0000000000000000000000008004a169fb4a3325136eb29fa0ceb6d2e539a432"}}},"deployment":{"transactionHash":"0xb64e1d57212b1845209968c62e4ef32ae868c6155aa26a0e8daaf8a982ef98e2","blockNumber":"26013352","transactionIndex":"170","deployer":"0x047F606fD5b2BaA5f5C6c4aB8958E45CB6B054B7"},"sources":{"src/WorkRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\nimport {IReputationRegistry} from \"./interfaces/IReputationRegistry.sol\";\n\n/// @notice Append-only receipts for any work, and its explicitly labelled acceptance feedback.\n/// @dev One transaction commits a canonical document and optional ERC-8004 signals. Full evidence\n/// lives at the URI; its digest, history and identity namespace are permanently on chain.\ncontract WorkRegistry {\n    error Unauthorized();\n    error InvalidRecord();\n    error ConflictingReplay();\n    error StaleParent();\n    error InvalidSignal();\n\n    struct Feedback {\n        uint256 agentId;\n        int128 value;\n        uint8 valueDecimals;\n        string tag1;\n        string tag2;\n        string endpoint;\n        string feedbackURI;\n        bytes32 feedbackHash;\n    }\n\n    struct Receipt {\n        bytes16 jobId;\n        bytes32 previousHash;\n        bytes32 callHash;\n        uint64 recordedAt;\n        uint64 recordedBlock;\n    }\n\n    IReputationRegistry public immutable reputationRegistry;\n    address public immutable identityRegistry;\n    address public writer;\n    address public admin;\n    mapping(bytes16 => bytes32) public latest;\n    mapping(bytes32 => Receipt) public receipts;\n    // The same assessed submission cannot award reputation again in a later publication receipt.\n    mapping(bytes32 => bool) public feedbackRecorded;\n\n    event WorkRecorded(bytes16 indexed jobId, bytes32 indexed documentHash, bytes32 previousHash, string uri);\n    event WriterChanged(address indexed writer);\n    event AdminChanged(address indexed admin);\n\n    constructor(IReputationRegistry reputation_, address writer_, address admin_) {\n        if (address(reputation_).code.length == 0 || writer_ == address(0) || admin_ == address(0)) revert InvalidRecord();\n        address identity = reputation_.getIdentityRegistry();\n        if (identity == address(0)) revert InvalidRecord();\n        reputationRegistry = reputation_;\n        identityRegistry = identity;\n        writer = writer_;\n        admin = admin_;\n    }\n\n    function recordWork(bytes16 jobId, bytes32 previousHash, bytes32 documentHash, string calldata uri, Feedback[] calldata signals) external {\n        if (msg.sender != writer) revert Unauthorized();\n        if (jobId == bytes16(0) || documentHash == bytes32(0) || bytes(uri).length == 0 || bytes(uri).length > 512 || signals.length > 64) revert InvalidRecord();\n        bytes32 callHash = keccak256(abi.encode(jobId, previousHash, documentHash, uri, signals));\n        Receipt storage existing = receipts[documentHash];\n        if (existing.recordedAt != 0) {\n            if (existing.callHash != callHash) revert ConflictingReplay();\n            return;\n        }\n        if (latest[jobId] != previousHash) revert StaleParent();\n        receipts[documentHash] = Receipt(jobId, previousHash, callHash, uint64(block.timestamp), uint64(block.number));\n        latest[jobId] = documentHash;\n        for (uint256 i; i < signals.length; ++i) {\n            Feedback calldata s = signals[i];\n            bytes32 category = keccak256(bytes(s.tag1));\n            if ((s.value != 0 && s.value != 1) || s.valueDecimals != 0 ||\n                keccak256(bytes(s.tag2)) != keccak256(\"acceptance-v2\") || s.feedbackHash == bytes32(0) ||\n                (category != keccak256(\"verification:structural\") && category != keccak256(\"verification:checks\") &&\n                 category != keccak256(\"review:submission\") && category != keccak256(\"verification:unknown\"))) revert InvalidSignal();\n            bytes32 key = keccak256(abi.encode(s.agentId, s.feedbackHash));\n            if (feedbackRecorded[key]) revert InvalidSignal();\n            feedbackRecorded[key] = true;\n            reputationRegistry.giveFeedback(s.agentId, s.value, 0, s.tag1, s.tag2, s.endpoint, s.feedbackURI, s.feedbackHash);\n        }\n        emit WorkRecorded(jobId, documentHash, previousHash, uri);\n    }\n\n    function revokeFeedback(uint256 agentId, uint64 feedbackIndex) external {\n        if (msg.sender != writer) revert Unauthorized();\n        reputationRegistry.revokeFeedback(agentId, feedbackIndex);\n    }\n\n    function appendResponse(uint256 agentId, address client, uint64 index, string calldata uri, bytes32 hash) external {\n        if (msg.sender != writer) revert Unauthorized();\n        reputationRegistry.appendResponse(agentId, client, index, uri, hash);\n    }\n\n    function setWriter(address to) external {\n        if (msg.sender != admin) revert Unauthorized();\n        if (to == address(0)) revert InvalidRecord();\n        writer = to;\n        emit WriterChanged(to);\n    }\n\n    function setAdmin(address to) external {\n        if (msg.sender != admin) revert Unauthorized();\n        if (to == address(0)) revert InvalidRecord();\n        admin = to;\n        emit AdminChanged(to);\n    }\n}\n"},"src/interfaces/IReputationRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\n/// @notice The ERC-8004 Reputation Registry, as much of it as this system uses.\n/// @dev Transcribed from the ERC-8004 specification and checked against the reference deployment's\n/// selectors on mainnet and Sepolia. Only the writes and two reads are declared: the reads that\n/// matter happen off chain against the deployed registry, where `getSummary(agentId, [batcher],\n/// tag1, tag2)` filtering by our one client address is the query that counts — an unfiltered\n/// aggregate includes feedback from anyone, and under the identity adapter that includes the\n/// agent's own holder.\ninterface IReputationRegistry {\n    function giveFeedback(\n        uint256 agentId,\n        int128 value,\n        uint8 valueDecimals,\n        string calldata tag1,\n        string calldata tag2,\n        string calldata endpoint,\n        string calldata feedbackURI,\n        bytes32 feedbackHash\n    ) external;\n\n    /// @notice Withdraws feedback later found to have been given on a fraudulent submission.\n    function revokeFeedback(uint256 agentId, uint64 feedbackIndex) external;\n\n    /// @notice Lets a contributor answer a score we gave them.\n    function appendResponse(\n        uint256 agentId,\n        address clientAddress,\n        uint64 feedbackIndex,\n        string calldata responseURI,\n        bytes32 responseHash\n    ) external;\n\n    function getLastIndex(uint256 agentId, address clientAddress) external view returns (uint64);\n\n    /// @notice The identity registry this reputation registry scores agents from.\n    /// @dev The one read a deploy script needs: a batcher pointed at a registry whose identity\n    /// registry is not the one the adapter registers into would write reviews against agent ids\n    /// that mean something else, and mainnet and the testnets use different addresses for both.\n    function getIdentityRegistry() external view returns (address);\n}\n"}},"compilation":{"language":"Solidity","compiler":"solc","compilerVersion":"0.8.26+commit.8a97fa7a","compilerSettings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"none","useLiteralContent":false},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun","remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/","v4-core/=lib/v4-core/","@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/"]},"name":"WorkRegistry","fullyQualifiedName":"src/WorkRegistry.sol:WorkRegistry"},"abi":[{"type":"constructor","inputs":[{"name":"reputation_","type":"address","internalType":"contract IReputationRegistry"},{"name":"writer_","type":"address","internalType":"address"},{"name":"admin_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"ConflictingReplay","type":"error","inputs":[]},{"name":"InvalidRecord","type":"error","inputs":[]},{"name":"InvalidSignal","type":"error","inputs":[]},{"name":"StaleParent","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"AdminChanged","type":"event","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"WorkRecorded","type":"event","inputs":[{"name":"jobId","type":"bytes16","indexed":true,"internalType":"bytes16"},{"name":"documentHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"uri","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"name":"WriterChanged","type":"event","inputs":[{"name":"writer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"admin","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"appendResponse","type":"function","inputs":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"client","type":"address","internalType":"address"},{"name":"index","type":"uint64","internalType":"uint64"},{"name":"uri","type":"string","internalType":"string"},{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"feedbackRecorded","type":"function","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"identityRegistry","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"latest","type":"function","inputs":[{"name":"","type":"bytes16","internalType":"bytes16"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"receipts","type":"function","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"jobId","type":"bytes16","internalType":"bytes16"},{"name":"previousHash","type":"bytes32","internalType":"bytes32"},{"name":"callHash","type":"bytes32","internalType":"bytes32"},{"name":"recordedAt","type":"uint64","internalType":"uint64"},{"name":"recordedBlock","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"name":"recordWork","type":"function","inputs":[{"name":"jobId","type":"bytes16","internalType":"bytes16"},{"name":"previousHash","type":"bytes32","internalType":"bytes32"},{"name":"documentHash","type":"bytes32","internalType":"bytes32"},{"name":"uri","type":"string","internalType":"string"},{"name":"signals","type":"tuple[]","components":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"value","type":"int128","internalType":"int128"},{"name":"valueDecimals","type":"uint8","internalType":"uint8"},{"name":"tag1","type":"string","internalType":"string"},{"name":"tag2","type":"string","internalType":"string"},{"name":"endpoint","type":"string","internalType":"string"},{"name":"feedbackURI","type":"string","internalType":"string"},{"name":"feedbackHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct WorkRegistry.Feedback[]"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"reputationRegistry","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReputationRegistry"}],"stateMutability":"view"},{"name":"revokeFeedback","type":"function","inputs":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"feedbackIndex","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setAdmin","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setWriter","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"writer","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IReputationRegistry","name":"reputation_","type":"address"},{"internalType":"address","name":"writer_","type":"address"},{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ConflictingReplay","type":"error"},{"inputs":[],"name":"InvalidRecord","type":"error"},{"inputs":[],"name":"InvalidSignal","type":"error"},{"inputs":[],"name":"StaleParent","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes16","name":"jobId","type":"bytes16"},{"indexed":true,"internalType":"bytes32","name":"documentHash","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"previousHash","type":"bytes32"},{"indexed":false,"internalType":"string","name":"uri","type":"string"}],"name":"WorkRecorded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"writer","type":"address"}],"name":"WriterChanged","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"agentId","type":"uint256"},{"internalType":"address","name":"client","type":"address"},{"internalType":"uint64","name":"index","type":"uint64"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"bytes32","name":"hash","type":"bytes32"}],"name":"appendResponse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"feedbackRecorded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"identityRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"latest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"receipts","outputs":[{"internalType":"bytes16","name":"jobId","type":"bytes16"},{"internalType":"bytes32","name":"previousHash","type":"bytes32"},{"internalType":"bytes32","name":"callHash","type":"bytes32"},{"internalType":"uint64","name":"recordedAt","type":"uint64"},{"internalType":"uint64","name":"recordedBlock","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes16","name":"jobId","type":"bytes16"},{"internalType":"bytes32","name":"previousHash","type":"bytes32"},{"internalType":"bytes32","name":"documentHash","type":"bytes32"},{"internalType":"string","name":"uri","type":"string"},{"components":[{"internalType":"uint256","name":"agentId","type":"uint256"},{"internalType":"int128","name":"value","type":"int128"},{"internalType":"uint8","name":"valueDecimals","type":"uint8"},{"internalType":"string","name":"tag1","type":"string"},{"internalType":"string","name":"tag2","type":"string"},{"internalType":"string","name":"endpoint","type":"string"},{"internalType":"string","name":"feedbackURI","type":"string"},{"internalType":"bytes32","name":"feedbackHash","type":"bytes32"}],"internalType":"struct WorkRegistry.Feedback[]","name":"signals","type":"tuple[]"}],"name":"recordWork","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reputationRegistry","outputs":[{"internalType":"contract IReputationRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"agentId","type":"uint256"},{"internalType":"uint64","name":"feedbackIndex","type":"uint64"}],"name":"revokeFeedback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"setWriter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"writer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"One transaction commits a canonical document and optional ERC-8004 signals. Full evidence lives at the URI; its digest, history and identity namespace are permanently on chain.","kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"notice":"Append-only receipts for any work, and its explicitly labelled acceptance feedback.","version":1}},"settings":{"compilationTarget":{"src/WorkRegistry.sol":"WorkRegistry"},"evmVersion":"cancun","libraries":{},"metadata":{"bytecodeHash":"none"},"optimizer":{"enabled":true,"runs":200},"remappings":[":@ensdomains/=lib/v4-core/node_modules/@ensdomains/",":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/",":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/",":forge-std/=lib/forge-std/src/",":hardhat/=lib/v4-core/node_modules/hardhat/",":openzeppelin-contracts/=lib/openzeppelin-contracts/",":solmate/=lib/solmate/",":v4-core/=lib/v4-core/"]},"sources":{"src/WorkRegistry.sol":{"keccak256":"0xc94f36a0c19607dde3fa463af7a440670c119cdeb1c2cd58b48873e5e4b4ad63","license":"MIT","urls":["bzz-raw://07164474c8bf6f6626be36621f02833f074053e9bf5dad7a12354118a6d13917","dweb:/ipfs/QmbWizTUAYcN2hBEESsKyZaCUM2eookbQKgyJLeA4dmoWz"]},"src/interfaces/IReputationRegistry.sol":{"keccak256":"0x98775c1659a1517abc2199be3770346670d2084a889742b617d95dbecb3bda56","license":"MIT","urls":["bzz-raw://2401c9fd7b8130ea9f23fc04e92ac283ae53f2ecd2a1185f340649787515ff9e","dweb:/ipfs/QmPqVUCr9syLMAhEBT2YRZrno8sNmcz9MyHobgHLSBDYPD"]}},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_uint64":{"label":"uint64","encoding":"inplace","numberOfBytes":"8"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_bytes16":{"label":"bytes16","encoding":"inplace","numberOfBytes":"16"},"t_bytes32":{"label":"bytes32","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"key":"t_bytes32","label":"mapping(bytes32 => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_struct(Receipt)42_storage":{"label":"struct WorkRegistry.Receipt","members":[{"slot":"0","type":"t_bytes16","astId":33,"label":"jobId","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"1","type":"t_bytes32","astId":35,"label":"previousHash","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"2","type":"t_bytes32","astId":37,"label":"callHash","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_uint64","astId":39,"label":"recordedAt","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_uint64","astId":41,"label":"recordedBlock","offset":8,"contract":"src/WorkRegistry.sol:WorkRegistry"}],"encoding":"inplace","numberOfBytes":"128"},"t_mapping(t_bytes16,t_bytes32)":{"key":"t_bytes16","label":"mapping(bytes16 => bytes32)","value":"t_bytes32","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_bytes32,t_struct(Receipt)42_storage)":{"key":"t_bytes32","label":"mapping(bytes32 => struct WorkRegistry.Receipt)","value":"t_struct(Receipt)42_storage","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":49,"label":"writer","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"1","type":"t_address","astId":51,"label":"admin","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"2","type":"t_mapping(t_bytes16,t_bytes32)","astId":55,"label":"latest","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_mapping(t_bytes32,t_struct(Receipt)42_storage)","astId":60,"label":"receipts","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"4","type":"t_mapping(t_bytes32,t_bool)","astId":64,"label":"feedbackRecorded","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"}]},"transientStorageLayout":null,"userdoc":{"kind":"user","notice":"Append-only receipts for any work, and its explicitly labelled acceptance feedback.","methods":{},"version":1},"devdoc":{"kind":"dev","details":"One transaction commits a canonical document and optional ERC-8004 signals. Full evidence lives at the URI; its digest, history and identity namespace are permanently on chain.","methods":{},"version":1},"sourceIds":{"src/WorkRegistry.sol":{"id":0},"src/interfaces/IReputationRegistry.sol":{"id":1}},"additionalInput":null,"stdJsonInput":{"sources":{"src/WorkRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\nimport {IReputationRegistry} from \"./interfaces/IReputationRegistry.sol\";\n\n/// @notice Append-only receipts for any work, and its explicitly labelled acceptance feedback.\n/// @dev One transaction commits a canonical document and optional ERC-8004 signals. Full evidence\n/// lives at the URI; its digest, history and identity namespace are permanently on chain.\ncontract WorkRegistry {\n    error Unauthorized();\n    error InvalidRecord();\n    error ConflictingReplay();\n    error StaleParent();\n    error InvalidSignal();\n\n    struct Feedback {\n        uint256 agentId;\n        int128 value;\n        uint8 valueDecimals;\n        string tag1;\n        string tag2;\n        string endpoint;\n        string feedbackURI;\n        bytes32 feedbackHash;\n    }\n\n    struct Receipt {\n        bytes16 jobId;\n        bytes32 previousHash;\n        bytes32 callHash;\n        uint64 recordedAt;\n        uint64 recordedBlock;\n    }\n\n    IReputationRegistry public immutable reputationRegistry;\n    address public immutable identityRegistry;\n    address public writer;\n    address public admin;\n    mapping(bytes16 => bytes32) public latest;\n    mapping(bytes32 => Receipt) public receipts;\n    // The same assessed submission cannot award reputation again in a later publication receipt.\n    mapping(bytes32 => bool) public feedbackRecorded;\n\n    event WorkRecorded(bytes16 indexed jobId, bytes32 indexed documentHash, bytes32 previousHash, string uri);\n    event WriterChanged(address indexed writer);\n    event AdminChanged(address indexed admin);\n\n    constructor(IReputationRegistry reputation_, address writer_, address admin_) {\n        if (address(reputation_).code.length == 0 || writer_ == address(0) || admin_ == address(0)) revert InvalidRecord();\n        address identity = reputation_.getIdentityRegistry();\n        if (identity == address(0)) revert InvalidRecord();\n        reputationRegistry = reputation_;\n        identityRegistry = identity;\n        writer = writer_;\n        admin = admin_;\n    }\n\n    function recordWork(bytes16 jobId, bytes32 previousHash, bytes32 documentHash, string calldata uri, Feedback[] calldata signals) external {\n        if (msg.sender != writer) revert Unauthorized();\n        if (jobId == bytes16(0) || documentHash == bytes32(0) || bytes(uri).length == 0 || bytes(uri).length > 512 || signals.length > 64) revert InvalidRecord();\n        bytes32 callHash = keccak256(abi.encode(jobId, previousHash, documentHash, uri, signals));\n        Receipt storage existing = receipts[documentHash];\n        if (existing.recordedAt != 0) {\n            if (existing.callHash != callHash) revert ConflictingReplay();\n            return;\n        }\n        if (latest[jobId] != previousHash) revert StaleParent();\n        receipts[documentHash] = Receipt(jobId, previousHash, callHash, uint64(block.timestamp), uint64(block.number));\n        latest[jobId] = documentHash;\n        for (uint256 i; i < signals.length; ++i) {\n            Feedback calldata s = signals[i];\n            bytes32 category = keccak256(bytes(s.tag1));\n            if ((s.value != 0 && s.value != 1) || s.valueDecimals != 0 ||\n                keccak256(bytes(s.tag2)) != keccak256(\"acceptance-v2\") || s.feedbackHash == bytes32(0) ||\n                (category != keccak256(\"verification:structural\") && category != keccak256(\"verification:checks\") &&\n                 category != keccak256(\"review:submission\") && category != keccak256(\"verification:unknown\"))) revert InvalidSignal();\n            bytes32 key = keccak256(abi.encode(s.agentId, s.feedbackHash));\n            if (feedbackRecorded[key]) revert InvalidSignal();\n            feedbackRecorded[key] = true;\n            reputationRegistry.giveFeedback(s.agentId, s.value, 0, s.tag1, s.tag2, s.endpoint, s.feedbackURI, s.feedbackHash);\n        }\n        emit WorkRecorded(jobId, documentHash, previousHash, uri);\n    }\n\n    function revokeFeedback(uint256 agentId, uint64 feedbackIndex) external {\n        if (msg.sender != writer) revert Unauthorized();\n        reputationRegistry.revokeFeedback(agentId, feedbackIndex);\n    }\n\n    function appendResponse(uint256 agentId, address client, uint64 index, string calldata uri, bytes32 hash) external {\n        if (msg.sender != writer) revert Unauthorized();\n        reputationRegistry.appendResponse(agentId, client, index, uri, hash);\n    }\n\n    function setWriter(address to) external {\n        if (msg.sender != admin) revert Unauthorized();\n        if (to == address(0)) revert InvalidRecord();\n        writer = to;\n        emit WriterChanged(to);\n    }\n\n    function setAdmin(address to) external {\n        if (msg.sender != admin) revert Unauthorized();\n        if (to == address(0)) revert InvalidRecord();\n        admin = to;\n        emit AdminChanged(to);\n    }\n}\n"},"src/interfaces/IReputationRegistry.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\n/// @notice The ERC-8004 Reputation Registry, as much of it as this system uses.\n/// @dev Transcribed from the ERC-8004 specification and checked against the reference deployment's\n/// selectors on mainnet and Sepolia. Only the writes and two reads are declared: the reads that\n/// matter happen off chain against the deployed registry, where `getSummary(agentId, [batcher],\n/// tag1, tag2)` filtering by our one client address is the query that counts — an unfiltered\n/// aggregate includes feedback from anyone, and under the identity adapter that includes the\n/// agent's own holder.\ninterface IReputationRegistry {\n    function giveFeedback(\n        uint256 agentId,\n        int128 value,\n        uint8 valueDecimals,\n        string calldata tag1,\n        string calldata tag2,\n        string calldata endpoint,\n        string calldata feedbackURI,\n        bytes32 feedbackHash\n    ) external;\n\n    /// @notice Withdraws feedback later found to have been given on a fraudulent submission.\n    function revokeFeedback(uint256 agentId, uint64 feedbackIndex) external;\n\n    /// @notice Lets a contributor answer a score we gave them.\n    function appendResponse(\n        uint256 agentId,\n        address clientAddress,\n        uint64 feedbackIndex,\n        string calldata responseURI,\n        bytes32 responseHash\n    ) external;\n\n    function getLastIndex(uint256 agentId, address clientAddress) external view returns (uint64);\n\n    /// @notice The identity registry this reputation registry scores agents from.\n    /// @dev The one read a deploy script needs: a batcher pointed at a registry whose identity\n    /// registry is not the one the adapter registers into would write reviews against agent ids\n    /// that mean something else, and mainnet and the testnets use different addresses for both.\n    function getIdentityRegistry() external view returns (address);\n}\n"}},"language":"Solidity","settings":{"viaIR":false,"metadata":{"appendCBOR":true,"bytecodeHash":"none","useLiteralContent":false},"optimizer":{"runs":200,"enabled":true},"evmVersion":"cancun","remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/","v4-core/=lib/v4-core/","@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/"]}},"stdJsonOutput":{"sources":{"src/WorkRegistry.sol":{"id":0},"src/interfaces/IReputationRegistry.sol":{"id":1}},"contracts":{"src/WorkRegistry.sol":{"WorkRegistry":{"abi":[{"type":"constructor","inputs":[{"name":"reputation_","type":"address","internalType":"contract IReputationRegistry"},{"name":"writer_","type":"address","internalType":"address"},{"name":"admin_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"name":"ConflictingReplay","type":"error","inputs":[]},{"name":"InvalidRecord","type":"error","inputs":[]},{"name":"InvalidSignal","type":"error","inputs":[]},{"name":"StaleParent","type":"error","inputs":[]},{"name":"Unauthorized","type":"error","inputs":[]},{"name":"AdminChanged","type":"event","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"WorkRecorded","type":"event","inputs":[{"name":"jobId","type":"bytes16","indexed":true,"internalType":"bytes16"},{"name":"documentHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"uri","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"name":"WriterChanged","type":"event","inputs":[{"name":"writer","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"name":"admin","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"appendResponse","type":"function","inputs":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"client","type":"address","internalType":"address"},{"name":"index","type":"uint64","internalType":"uint64"},{"name":"uri","type":"string","internalType":"string"},{"name":"hash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"feedbackRecorded","type":"function","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"name":"identityRegistry","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"name":"latest","type":"function","inputs":[{"name":"","type":"bytes16","internalType":"bytes16"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"name":"receipts","type":"function","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"jobId","type":"bytes16","internalType":"bytes16"},{"name":"previousHash","type":"bytes32","internalType":"bytes32"},{"name":"callHash","type":"bytes32","internalType":"bytes32"},{"name":"recordedAt","type":"uint64","internalType":"uint64"},{"name":"recordedBlock","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"name":"recordWork","type":"function","inputs":[{"name":"jobId","type":"bytes16","internalType":"bytes16"},{"name":"previousHash","type":"bytes32","internalType":"bytes32"},{"name":"documentHash","type":"bytes32","internalType":"bytes32"},{"name":"uri","type":"string","internalType":"string"},{"name":"signals","type":"tuple[]","components":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"value","type":"int128","internalType":"int128"},{"name":"valueDecimals","type":"uint8","internalType":"uint8"},{"name":"tag1","type":"string","internalType":"string"},{"name":"tag2","type":"string","internalType":"string"},{"name":"endpoint","type":"string","internalType":"string"},{"name":"feedbackURI","type":"string","internalType":"string"},{"name":"feedbackHash","type":"bytes32","internalType":"bytes32"}],"internalType":"struct WorkRegistry.Feedback[]"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"reputationRegistry","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReputationRegistry"}],"stateMutability":"view"},{"name":"revokeFeedback","type":"function","inputs":[{"name":"agentId","type":"uint256","internalType":"uint256"},{"name":"feedbackIndex","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setAdmin","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"setWriter","type":"function","inputs":[{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"name":"writer","type":"function","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"metadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IReputationRegistry\",\"name\":\"reputation_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"writer_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"admin_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ConflictingReplay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidRecord\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StaleParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes16\",\"name\":\"jobId\",\"type\":\"bytes16\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"documentHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"previousHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"WorkRecorded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"writer\",\"type\":\"address\"}],\"name\":\"WriterChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"agentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"client\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"appendResponse\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"feedbackRecorded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identityRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"\",\"type\":\"bytes16\"}],\"name\":\"latest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"receipts\",\"outputs\":[{\"internalType\":\"bytes16\",\"name\":\"jobId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes32\",\"name\":\"previousHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"recordedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"recordedBlock\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes16\",\"name\":\"jobId\",\"type\":\"bytes16\"},{\"internalType\":\"bytes32\",\"name\":\"previousHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"documentHash\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"agentId\",\"type\":\"uint256\"},{\"internalType\":\"int128\",\"name\":\"value\",\"type\":\"int128\"},{\"internalType\":\"uint8\",\"name\":\"valueDecimals\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"tag1\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"tag2\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"endpoint\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"feedbackURI\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"feedbackHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct WorkRegistry.Feedback[]\",\"name\":\"signals\",\"type\":\"tuple[]\"}],\"name\":\"recordWork\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reputationRegistry\",\"outputs\":[{\"internalType\":\"contract IReputationRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"agentId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"feedbackIndex\",\"type\":\"uint64\"}],\"name\":\"revokeFeedback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setWriter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"writer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"One transaction commits a canonical document and optional ERC-8004 signals. Full evidence lives at the URI; its digest, history and identity namespace are permanently on chain.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Append-only receipts for any work, and its explicitly labelled acceptance feedback.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WorkRegistry.sol\":\"WorkRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\",\":v4-core/=lib/v4-core/\"]},\"sources\":{\"src/WorkRegistry.sol\":{\"keccak256\":\"0xc94f36a0c19607dde3fa463af7a440670c119cdeb1c2cd58b48873e5e4b4ad63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07164474c8bf6f6626be36621f02833f074053e9bf5dad7a12354118a6d13917\",\"dweb:/ipfs/QmbWizTUAYcN2hBEESsKyZaCUM2eookbQKgyJLeA4dmoWz\"]},\"src/interfaces/IReputationRegistry.sol\":{\"keccak256\":\"0x98775c1659a1517abc2199be3770346670d2084a889742b617d95dbecb3bda56\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2401c9fd7b8130ea9f23fc04e92ac283ae53f2ecd2a1185f340649787515ff9e\",\"dweb:/ipfs/QmPqVUCr9syLMAhEBT2YRZrno8sNmcz9MyHobgHLSBDYPD\"]}},\"version\":1}","userdoc":{"kind":"user","notice":"Append-only receipts for any work, and its explicitly labelled acceptance feedback.","methods":{},"version":1},"devdoc":{"kind":"dev","details":"One transaction commits a canonical document and optional ERC-8004 signals. Full evidence lives at the URI; its digest, history and identity namespace are permanently on chain.","methods":{},"version":1},"storageLayout":{"types":{"t_bool":{"label":"bool","encoding":"inplace","numberOfBytes":"1"},"t_uint64":{"label":"uint64","encoding":"inplace","numberOfBytes":"8"},"t_address":{"label":"address","encoding":"inplace","numberOfBytes":"20"},"t_bytes16":{"label":"bytes16","encoding":"inplace","numberOfBytes":"16"},"t_bytes32":{"label":"bytes32","encoding":"inplace","numberOfBytes":"32"},"t_mapping(t_bytes32,t_bool)":{"key":"t_bytes32","label":"mapping(bytes32 => bool)","value":"t_bool","encoding":"mapping","numberOfBytes":"32"},"t_struct(Receipt)42_storage":{"label":"struct WorkRegistry.Receipt","members":[{"slot":"0","type":"t_bytes16","astId":33,"label":"jobId","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"1","type":"t_bytes32","astId":35,"label":"previousHash","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"2","type":"t_bytes32","astId":37,"label":"callHash","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_uint64","astId":39,"label":"recordedAt","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_uint64","astId":41,"label":"recordedBlock","offset":8,"contract":"src/WorkRegistry.sol:WorkRegistry"}],"encoding":"inplace","numberOfBytes":"128"},"t_mapping(t_bytes16,t_bytes32)":{"key":"t_bytes16","label":"mapping(bytes16 => bytes32)","value":"t_bytes32","encoding":"mapping","numberOfBytes":"32"},"t_mapping(t_bytes32,t_struct(Receipt)42_storage)":{"key":"t_bytes32","label":"mapping(bytes32 => struct WorkRegistry.Receipt)","value":"t_struct(Receipt)42_storage","encoding":"mapping","numberOfBytes":"32"}},"storage":[{"slot":"0","type":"t_address","astId":49,"label":"writer","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"1","type":"t_address","astId":51,"label":"admin","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"2","type":"t_mapping(t_bytes16,t_bytes32)","astId":55,"label":"latest","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"3","type":"t_mapping(t_bytes32,t_struct(Receipt)42_storage)","astId":60,"label":"receipts","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"},{"slot":"4","type":"t_mapping(t_bytes32,t_bool)","astId":64,"label":"feedbackRecorded","offset":0,"contract":"src/WorkRegistry.sol:WorkRegistry"}]},"transientStorageLayout":null,"evm":{"bytecode":{"object":"60c060405234801561000f575f80fd5b506040516112d83803806112d883398101604081905261002e91610157565b6001600160a01b0383163b158061004c57506001600160a01b038216155b8061005e57506001600160a01b038116155b1561007c5760405163f2a3e8db60e01b815260040160405180910390fd5b5f836001600160a01b031663bc4d861b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100dd91906101a1565b90506001600160a01b0381166101065760405163f2a3e8db60e01b815260040160405180910390fd5b6001600160a01b03938416608052831660a0525f80549284166001600160a01b0319938416179055600180549190931691161790556101c3565b6001600160a01b0381168114610154575f80fd5b50565b5f805f60608486031215610169575f80fd5b835161017481610140565b602085015190935061018581610140565b604085015190925061019681610140565b809150509250925092565b5f602082840312156101b1575f80fd5b81516101bc81610140565b9392505050565b60805160a0516110e06101f85f395f60ba01525f81816101a30152818161037e0152818161091a0152610a8301526110e05ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a","sourceMap":"418:4408:0:-:0;;;1595:460;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1687:32:0;;;:37;;:62;;-1:-1:-1;;;;;;1728:21:0;;;1687:62;:86;;;-1:-1:-1;;;;;;1753:20:0;;;1687:86;1683:114;;;1782:15;;-1:-1:-1;;;1782:15:0;;;;;;;;;;;1683:114;1807:16;1826:11;-1:-1:-1;;;;;1826:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1807:52;-1:-1:-1;;;;;;1873:22:0;;1869:50;;1904:15;;-1:-1:-1;;;1904:15:0;;;;;;;;;;;1869:50;-1:-1:-1;;;;;1929:32:0;;;;;1971:27;;;;2008:6;:16;;;;;-1:-1:-1;;;;;;2008:16:0;;;;;;;2034:14;;;;;;;;;;;418:4408;;14:152:2;-1:-1:-1;;;;;110:31:2;;100:42;;90:70;;156:1;153;146:12;90:70;14:152;:::o;171:609::-;286:6;294;302;355:2;343:9;334:7;330:23;326:32;323:52;;;371:1;368;361:12;323:52;403:9;397:16;422:52;468:5;422:52;:::i;:::-;543:2;528:18;;522:25;493:5;;-1:-1:-1;556:54:2;522:25;556:54;:::i;:::-;681:2;666:18;;660:25;629:7;;-1:-1:-1;694:54:2;660:25;694:54;:::i;:::-;767:7;757:17;;;171:609;;;;;:::o;785:272::-;855:6;908:2;896:9;887:7;883:23;879:32;876:52;;;924:1;921;914:12;876:52;956:9;950:16;975:52;1021:5;975:52;:::i;:::-;1046:5;785:272;-1:-1:-1;;;785:272:2:o;:::-;418:4408:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"608060405234801561000f575f80fd5b50600436106100b1575f3560e01c8063765b59a51161006e578063765b59a514610178578063c2349ab21461018b578063c8db44e31461019e578063ebe9712c146101c5578063ef6cf04d146101f2578063f851a44014610285575f80fd5b8063134e18f4146100b557806339e20523146100f957806341dba4d51461010e578063453a2abc146101405780634ab3ca9914610152578063704b6c0214610165575b5f80fd5b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61010c610107366004610b12565b610298565b005b61013061011c366004610b32565b60046020525f908152604090205460ff1681565b60405190151581526020016100f0565b5f546100dc906001600160a01b031681565b61010c610160366004610b5f565b610330565b61010c610173366004610b12565b6103e1565b61010c610186366004610be4565b61047b565b61010c610199366004610ca5565b610a43565b6100dc7f000000000000000000000000000000000000000000000000000000000000000081565b6101e46101d3366004610d16565b60026020525f908152604090205481565b6040519081526020016100f0565b610246610200366004610b32565b600360208190525f9182526040909120805460018201546002830154929093015460809190911b9291906001600160401b03808216916801000000000000000090041685565b604080516001600160801b031990961686526020860194909452928401919091526001600160401b03908116606084015216608082015260a0016100f0565b6001546100dc906001600160a01b031681565b6001546001600160a01b031633146102c2576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166102e95760405163f2a3e8db60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b038316908117825560405190917fdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d91a250565b5f546001600160a01b03163314610359576040516282b42960e81b815260040160405180910390fd5b604051634ab3ca9960e01b8152600481018390526001600160401b03821660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ab3ca99906044015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050505050565b6001546001600160a01b0316331461040b576040516282b42960e81b815260040160405180910390fd5b6001600160a01b0381166104325760405163f2a3e8db60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c905f90a250565b5f546001600160a01b031633146104a4576040516282b42960e81b815260040160405180910390fd5b6001600160801b0319871615806104b9575084155b806104c2575082155b806104ce575061020083115b806104d95750604081115b156104f75760405163f2a3e8db60e01b815260040160405180910390fd5b5f878787878787876040516020016105159796959493929190610db9565b60408051601f1981840301815291815281516020928301205f89815260039384905291909120918201549092506001600160401b03161561057b57818160020154146105745760405163215a959360e11b815260040160405180910390fd5b5050610a3a565b6001600160801b031989165f9081526002602052604090205488146105b35760405163d391a76760e01b815260040160405180910390fd5b6040518060a001604052808a6001600160801b0319168152602001898152602001838152602001426001600160401b03168152602001436001600160401b031681525060035f8981526020019081526020015f205f820151815f015f6101000a8154816001600160801b03021916908360801c021790555060208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160401b0302191690836001600160401b0316021790555060808201518160030160086101000a8154816001600160401b0302191690836001600160401b031602179055509050508660025f8b6001600160801b0319166001600160801b03191681526020019081526020015f20819055505f5b838110156109ef57368585838181106106e2576106e2610f2c565b90506020028101906106f49190610f40565b90505f6107046060830183610f5e565b604051610712929190610fa0565b6040518091039020905081602001602081019061072f9190610faf565b600f0b15801590610753575061074b6040830160208401610faf565b600f0b600114155b8061076f57506107696060830160408401610fc8565b60ff1615155b806107bc57507f9df2d92c441d040cab6a30d95d62de2a7cfb50764b726ae1e5ad17afd5081d866107a36080840184610f5e565b6040516107b1929190610fa0565b604051809103902014155b806107c9575060e0820135155b8061087757507f3e631b5bd57ca9a7b92cb6533bd459c708e6986ae8f534688ee66cca693bf3b7811415801561081f57507f3a94014b19d01257cb7fd166a3d4de4c76a42a94ab19508875e706baceb45c588114155b801561084b57507fc1b8bc8ebf0a2012079907b7ce7033a630e51e319b0670924f95071fd3cc6ba28114155b801561087757507f03c476cde9e6b750ff3585eaf2356b97b783f8d1f9b492001ee960d3ca822cba8114155b15610895576040516328f7decb60e21b815260040160405180910390fd5b60408051833560208083019190915260e085013582840152825180830384018152606090920183528151918101919091205f81815260049092529190205460ff16156108f4576040516328f7decb60e21b815260040160405180910390fd5b5f81815260046020908152604091829020805460ff191660011790556001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633c036a7e9186359161095391908801908801610faf565b5f6109616060890189610f5e565b61096e60808b018b610f5e565b61097b60a08d018d610f5e565b61098860c08f018f610f5e565b8f60e001356040518d63ffffffff1660e01b81526004016109b49c9b9a99989796959493929190610fe1565b5f604051808303815f87803b1580156109cb575f80fd5b505af11580156109dd573d5f803e3d5ffd5b505050505050508060010190506106c7565b5086896001600160801b0319167fc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f868a8989604051610a2f93929190611065565b60405180910390a350505b50505050505050565b5f546001600160a01b03163314610a6c576040516282b42960e81b815260040160405180910390fd5b60405163611a4d5960e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c2349ab290610ac290899089908990899089908990600401611087565b5f604051808303815f87803b158015610ad9575f80fd5b505af1158015610aeb573d5f803e3d5ffd5b50505050505050505050565b80356001600160a01b0381168114610b0d575f80fd5b919050565b5f60208284031215610b22575f80fd5b610b2b82610af7565b9392505050565b5f60208284031215610b42575f80fd5b5035919050565b80356001600160401b0381168114610b0d575f80fd5b5f8060408385031215610b70575f80fd5b82359150610b8060208401610b49565b90509250929050565b80356001600160801b031981168114610b0d575f80fd5b5f8083601f840112610bb0575f80fd5b5081356001600160401b03811115610bc6575f80fd5b602083019150836020828501011115610bdd575f80fd5b9250929050565b5f805f805f805f60a0888a031215610bfa575f80fd5b610c0388610b89565b9650602088013595506040880135945060608801356001600160401b03811115610c2b575f80fd5b610c378a828b01610ba0565b90955093505060808801356001600160401b03811115610c55575f80fd5b8801601f81018a13610c65575f80fd5b80356001600160401b03811115610c7a575f80fd5b8a60208260051b8401011115610c8e575f80fd5b602082019350809250505092959891949750929550565b5f805f805f8060a08789031215610cba575f80fd5b86359550610cca60208801610af7565b9450610cd860408801610b49565b935060608701356001600160401b03811115610cf2575f80fd5b610cfe89828a01610ba0565b979a9699509497949695608090950135949350505050565b5f60208284031215610d26575f80fd5b610b2b82610b89565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b8035600f81900b8114610b0d575f80fd5b803560ff81168114610b0d575f80fd5b5f808335601e19843603018112610d8d575f80fd5b83016020810192503590506001600160401b03811115610dab575f80fd5b803603821315610bdd575f80fd5b6001600160801b03198816815286602082015285604082015260a060608201525f610de860a083018688610d2f565b8281036080840152838152602080820190600586901b830101865f3682900360fe19015b88821015610f1957858403601f190185528235818112610e2a575f80fd5b8a0180358552610e3c60208201610d57565b610e4b6020870182600f0b9052565b50610e5860408201610d68565b60ff166040860152610e6d6060820182610d78565b6101006060880152610e8461010088018284610d2f565b915050610e946080830183610d78565b8783036080890152610ea7838284610d2f565b92505050610eb860a0830183610d78565b87830360a0890152610ecb838284610d2f565b92505050610edc60c0830183610d78565b87830360c0890152610eef838284610d2f565b60e09485013598909401979097525050602095860195909450929092019160019190910190610e0c565b50919d9c50505050505050505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f823560fe19833603018112610f54575f80fd5b9190910192915050565b5f808335601e19843603018112610f73575f80fd5b8301803591506001600160401b03821115610f8c575f80fd5b602001915036819003821315610bdd575f80fd5b818382375f9101908152919050565b5f60208284031215610fbf575f80fd5b610b2b82610d57565b5f60208284031215610fd8575f80fd5b610b2b82610d68565b8c81528b600f0b602082015260ff8b16604082015261010060608201525f61100e61010083018b8d610d2f565b8281036080840152611021818a8c610d2f565b905082810360a084015261103681888a610d2f565b905082810360c084015261104b818688610d2f565b9150508260e08301529d9c50505050505050505050505050565b838152604060208201525f61107e604083018486610d2f565b95945050505050565b8681526001600160a01b03861660208201526001600160401b038516604082015260a0606082018190525f906110c09083018587610d2f565b905082608083015297965050505050505056fea164736f6c634300081a000a","sourceMap":"418:4408:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1038:41;;;;;;;;-1:-1:-1;;;;;178:32:2;;;160:51;;148:2;133:18;1038:41:0;;;;;;;;4401:210;;;;;;:::i;:::-;;:::i;:::-;;1332:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;987:14:2;;980:22;962:41;;950:2;935:18;1332:48:0;822:187:2;1085:21:0;;;;;-1:-1:-1;;;;;1085:21:0;;;3929:203;;;;;;:::i;:::-;;:::i;4617:207::-;;;;;;:::i;:::-;;:::i;2061:1862::-;;;;;;:::i;:::-;;:::i;4138:257::-;;;;;;:::i;:::-;;:::i;977:55::-;;;;;1138:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4670:25:2;;;4658:2;4643:18;1138:41:0;4524:177:2;1185:43:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1185:43:0;;;;;;;;;;;;;;-1:-1:-1;;;;;;4979:52:2;;;4961:71;;5063:2;5048:18;;5041:34;;;;5091:18;;;5084:34;;;;-1:-1:-1;;;;;5154:31:2;;;5149:2;5134:18;;5127:59;5223:31;5217:3;5202:19;;5195:60;4948:3;4933:19;1185:43:0;4706:555:2;1112:20:0;;;;;-1:-1:-1;;;;;1112:20:0;;;4401:210;4469:5;;-1:-1:-1;;;;;4469:5:0;4455:10;:19;4451:46;;4483:14;;-1:-1:-1;;;4483:14:0;;;;;;;;;;;4451:46;-1:-1:-1;;;;;4511:16:0;;4507:44;;4536:15;;-1:-1:-1;;;4536:15:0;;;;;;;;;;;4507:44;4561:6;:11;;-1:-1:-1;;;;;;4561:11:0;-1:-1:-1;;;;;4561:11:0;;;;;;;4587:17;;4561:11;;4587:17;;;4401:210;:::o;3929:203::-;4029:6;;-1:-1:-1;;;;;4029:6:0;4015:10;:20;4011:47;;4044:14;;-1:-1:-1;;;4044:14:0;;;;;;;;;;;4011:47;4068:57;;-1:-1:-1;;;4068:57:0;;;;;5438:25:2;;;-1:-1:-1;;;;;5499:31:2;;5479:18;;;5472:59;4068:18:0;-1:-1:-1;;;;;4068:33:0;;;;5411:18:2;;4068:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3929:203;;:::o;4617:207::-;4684:5;;-1:-1:-1;;;;;4684:5:0;4670:10;:19;4666:46;;4698:14;;-1:-1:-1;;;4698:14:0;;;;;;;;;;;4666:46;-1:-1:-1;;;;;4726:16:0;;4722:44;;4751:15;;-1:-1:-1;;;4751:15:0;;;;;;;;;;;4722:44;4776:5;:10;;-1:-1:-1;;;;;;4776:10:0;-1:-1:-1;;;;;4776:10:0;;;;;;;;4801:16;;;;-1:-1:-1;;4801:16:0;4617:207;:::o;2061:1862::-;2227:6;;-1:-1:-1;;;;;2227:6:0;2213:10;:20;2209:47;;2242:14;;-1:-1:-1;;;2242:14:0;;;;;;;;;;;2209:47;-1:-1:-1;;;;;;2270:19:0;;;;:49;;-1:-1:-1;2293:26:0;;2270:49;:75;;;-1:-1:-1;2323:22:0;;2270:75;:102;;;-1:-1:-1;2369:3:0;2349:23;;2270:102;:125;;;-1:-1:-1;2393:2:0;2376:19;;2270:125;2266:153;;;2404:15;;-1:-1:-1;;;2404:15:0;;;;;;;;;;;2266:153;2429:16;2469:5;2476:12;2490;2504:3;;2509:7;;2458:59;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2458:59:0;;;;;;;;;2448:70;;2458:59;2448:70;;;;2528:24;2555:22;;;:8;:22;;;;;;;;2591:19;;;;2448:70;;-1:-1:-1;;;;;;2591:19:0;:24;2587:136;;2656:8;2635;:17;;;:29;2631:61;;2673:19;;-1:-1:-1;;;2673:19:0;;;;;;;;;;;2631:61;2706:7;;;;2587:136;-1:-1:-1;;;;;;2736:13:0;;;;;;:6;:13;;;;;;:29;;2732:55;;2774:13;;-1:-1:-1;;;2774:13:0;;;;;;;;;;;2732:55;2822:85;;;;;;;;2830:5;-1:-1:-1;;;;;2822:85:0;;;;;;2837:12;2822:85;;;;2851:8;2822:85;;;;2868:15;-1:-1:-1;;;;;2822:85:0;;;;;2893:12;-1:-1:-1;;;;;2822:85:0;;;;2797:8;:22;2806:12;2797:22;;;;;;;;;;;:110;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2797:110:0;;;;;-1:-1:-1;;;;;2797:110:0;;;;;;;;;2933:12;2917:6;:13;2924:5;-1:-1:-1;;;;;2917:13:0;;-1:-1:-1;;;;;2917:13:0;;;;;;;;;;;;;:28;;;;2960:9;2955:895;2971:18;;;2955:895;;;3010:19;3032:7;;3040:1;3032:10;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;3010:32;-1:-1:-1;3056:16:0;3091:6;;;;3010:32;3091:6;:::i;:::-;3075:24;;;;;;;:::i;:::-;;;;;;;;3056:43;;3118:1;:7;;;;;;;;;;:::i;:::-;:12;;;;;;:28;;-1:-1:-1;3134:7:0;;;;;;;;:::i;:::-;:12;;3145:1;3134:12;;3118:28;3117:54;;;-1:-1:-1;3151:15:0;;;;;;;;:::i;:::-;:20;;;;3117:54;:128;;;-1:-1:-1;3219:26:0;3207:6;;;;:1;:6;:::i;:::-;3191:24;;;;;;;:::i;:::-;;;;;;;;:54;;3117:128;:160;;;-1:-1:-1;3249:14:0;;;;:28;3117:160;:390;;;;3310:36;3298:8;:48;;:96;;;;;3362:32;3350:8;:44;;3298:96;:159;;;;;3427:30;3415:8;:42;;3298:159;:208;;;;;3473:33;3461:8;:45;;3298:208;3113:418;;;3516:15;;-1:-1:-1;;;3516:15:0;;;;;;;;;;;3113:418;3569:37;;;3580:9;;3569:37;;;;11565:25:2;;;;3591:14:0;;;;11606:18:2;;;11599:34;3569:37:0;;;;;;;;;11538:18:2;;;;3569:37:0;;3559:48;;;;;;;;;-1:-1:-1;3625:21:0;;;:16;:21;;;;;;;;;3621:49;;;3655:15;;-1:-1:-1;;;3655:15:0;;;;;;;;;;;3621:49;3684:21;;;;:16;:21;;;;;;;;;:28;;-1:-1:-1;;3684:28:0;3708:4;3684:28;;;-1:-1:-1;;;;;3726:18:0;:31;;;;3758:9;;;3769:7;;;;;;;;;:::i;:::-;3778:1;3781:6;;;;:1;:6;:::i;:::-;3789;;;;:1;:6;:::i;:::-;3797:10;;;;:1;:10;:::i;:::-;3809:13;;;;:1;:13;:::i;:::-;3824:1;:14;;;3726:113;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2996:854;;;2991:3;;;;;2955:895;;;;3884:12;3877:5;-1:-1:-1;;;;;3864:52:0;;;3898:12;3912:3;;3864:52;;;;;;;;:::i;:::-;;;;;;;;2199:1724;;2061:1862;;;;;;;;:::o;4138:257::-;4281:6;;-1:-1:-1;;;;;4281:6:0;4267:10;:20;4263:47;;4296:14;;-1:-1:-1;;;4296:14:0;;;;;;;;;;;4263:47;4320:68;;-1:-1:-1;;;4320:68:0;;-1:-1:-1;;;;;4320:18:0;:33;;;;:68;;4354:7;;4363:6;;4371:5;;4378:3;;;;4383:4;;4320:68;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:257;;;;;;:::o;222:173:2:-;290:20;;-1:-1:-1;;;;;339:31:2;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:186::-;459:6;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;400:186;-1:-1:-1;;;400:186:2:o;591:226::-;650:6;703:2;691:9;682:7;678:23;674:32;671:52;;;719:1;716;709:12;671:52;-1:-1:-1;764:23:2;;591:226;-1:-1:-1;591:226:2:o;1014:171::-;1081:20;;-1:-1:-1;;;;;1130:30:2;;1120:41;;1110:69;;1175:1;1172;1165:12;1190:298;1257:6;1265;1318:2;1306:9;1297:7;1293:23;1289:32;1286:52;;;1334:1;1331;1324:12;1286:52;1379:23;;;-1:-1:-1;1445:37:2;1478:2;1463:18;;1445:37;:::i;:::-;1435:47;;1190:298;;;;;:::o;1493:193::-;1561:20;;-1:-1:-1;;;;;;1610:51:2;;1600:62;;1590:90;;1676:1;1673;1666:12;1691:348;1743:8;1753:6;1807:3;1800:4;1792:6;1788:17;1784:27;1774:55;;1825:1;1822;1815:12;1774:55;-1:-1:-1;1848:20:2;;-1:-1:-1;;;;;1880:30:2;;1877:50;;;1923:1;1920;1913:12;1877:50;1960:4;1952:6;1948:17;1936:29;;2012:3;2005:4;1996:6;1988;1984:19;1980:30;1977:39;1974:59;;;2029:1;2026;2019:12;1974:59;1691:348;;;;;:::o;2044:1251::-;2204:6;2212;2220;2228;2236;2244;2252;2305:3;2293:9;2284:7;2280:23;2276:33;2273:53;;;2322:1;2319;2312:12;2273:53;2345:29;2364:9;2345:29;:::i;:::-;2335:39;-1:-1:-1;2443:2:2;2428:18;;2415:32;;-1:-1:-1;2544:2:2;2529:18;;2516:32;;-1:-1:-1;2625:2:2;2610:18;;2597:32;-1:-1:-1;;;;;2641:30:2;;2638:50;;;2684:1;2681;2674:12;2638:50;2723:59;2774:7;2765:6;2754:9;2750:22;2723:59;:::i;:::-;2801:8;;-1:-1:-1;2697:85:2;-1:-1:-1;;2889:3:2;2874:19;;2861:33;-1:-1:-1;;;;;2906:32:2;;2903:52;;;2951:1;2948;2941:12;2903:52;2974:24;;3029:4;3021:13;;3017:27;-1:-1:-1;3007:55:2;;3058:1;3055;3048:12;3007:55;3098:2;3085:16;-1:-1:-1;;;;;3116:6:2;3113:30;3110:50;;;3156:1;3153;3146:12;3110:50;3209:7;3204:2;3194:6;3191:1;3187:14;3183:2;3179:23;3175:32;3172:45;3169:65;;;3230:1;3227;3220:12;3169:65;3261:2;3257;3253:11;3243:21;;3283:6;3273:16;;;;2044:1251;;;;;;;;;;:::o;3300:793::-;3406:6;3414;3422;3430;3438;3446;3499:3;3487:9;3478:7;3474:23;3470:33;3467:53;;;3516:1;3513;3506:12;3467:53;3561:23;;;-1:-1:-1;3627:38:2;3661:2;3646:18;;3627:38;:::i;:::-;3617:48;;3684:37;3717:2;3706:9;3702:18;3684:37;:::i;:::-;3674:47;;3772:2;3761:9;3757:18;3744:32;-1:-1:-1;;;;;3791:6:2;3788:30;3785:50;;;3831:1;3828;3821:12;3785:50;3870:59;3921:7;3912:6;3901:9;3897:22;3870:59;:::i;:::-;3300:793;;;;-1:-1:-1;3300:793:2;;;;;4056:3;4041:19;;;4028:33;;3300:793;-1:-1:-1;;;;3300:793:2:o;4333:186::-;4392:6;4445:2;4433:9;4424:7;4420:23;4416:32;4413:52;;;4461:1;4458;4451:12;4413:52;4484:29;4503:9;4484:29;:::i;5542:267::-;5631:6;5626:3;5619:19;5683:6;5676:5;5669:4;5664:3;5660:14;5647:43;-1:-1:-1;5735:1:2;5710:16;;;5728:4;5706:27;;;5699:38;;;;5791:2;5770:15;;;-1:-1:-1;;5766:29:2;5757:39;;;5753:50;;5542:267::o;5814:162::-;5881:20;;5941:2;5930:21;;;5920:32;;5910:60;;5966:1;5963;5956:12;6079:156;6145:20;;6205:4;6194:16;;6184:27;;6174:55;;6225:1;6222;6215:12;6320:501;6379:5;6386:6;6446:3;6433:17;6532:2;6528:7;6517:8;6501:14;6497:29;6493:43;6473:18;6469:68;6459:96;;6551:1;6548;6541:12;6459:96;6579:33;;6683:4;6670:18;;;-1:-1:-1;6631:21:2;;-1:-1:-1;;;;;;6700:30:2;;6697:50;;;6743:1;6740;6733:12;6697:50;6790:6;6774:14;6770:27;6763:5;6759:39;6756:59;;;6811:1;6808;6801:12;6826:2920;-1:-1:-1;;;;;7219:39:2;7211:6;7207:52;7196:9;7189:71;7296:6;7291:2;7280:9;7276:18;7269:34;7339:6;7334:2;7323:9;7319:18;7312:34;7382:3;7377:2;7366:9;7362:18;7355:31;7170:4;7409:63;7467:3;7456:9;7452:19;7444:6;7436;7409:63;:::i;:::-;7509:22;;;7503:3;7488:19;;7481:51;7567:22;;;7617:2;7605:15;;;;7663:1;7659:14;;;7647:27;;7643:36;7702:6;7726:1;7754:14;7750:27;;;-1:-1:-1;;7746:42:2;7797:1920;7811:6;7808:1;7805:13;7797:1920;;;7876:19;;;-1:-1:-1;;7872:33:2;7860:46;;7945:20;;7988:27;;;7978:55;;8029:1;8026;8019:12;7978:55;8059:31;;8143:19;;8175:23;;8231:33;8260:2;8249:14;;8231:33;:::i;:::-;8277:48;8321:2;8313:6;8309:15;8295:12;6057:2;6046:21;6034:34;;5981:93;8277:48;;8360:32;8388:2;8381:5;8377:14;8360:32;:::i;:::-;6307:4;6296:16;8450:2;8438:15;;6284:29;8503:54;8553:2;8542:14;;8546:5;8503:54;:::i;:::-;8594:6;8589:2;8581:6;8577:15;8570:31;8628:77;8697:6;8689;8685:19;8671:12;8655:14;8628:77;:::i;:::-;8614:91;;;8756:55;8806:3;8799:5;8795:15;8788:5;8756:55;:::i;:::-;8861:6;8853;8849:19;8843:3;8835:6;8831:16;8824:45;8896:66;8955:6;8939:14;8923;8896:66;:::i;:::-;8882:80;;;;9013:55;9063:3;9056:5;9052:15;9045:5;9013:55;:::i;:::-;9118:6;9110;9106:19;9100:3;9092:6;9088:16;9081:45;9153:66;9212:6;9196:14;9180;9153:66;:::i;:::-;9139:80;;;;9270:56;9320:4;9313:5;9309:16;9302:5;9270:56;:::i;:::-;9377:6;9369;9365:19;9358:4;9350:6;9346:17;9339:46;9412:66;9471:6;9455:14;9439;9412:66;:::i;:::-;9555:4;9544:16;;;9531:30;9581:17;;;;9574:34;;;;-1:-1:-1;;9672:2:2;9695:12;;;;9398:80;;-1:-1:-1;9660:15:2;;;;;7833:1;7826:9;;;;;7797:1920;;;-1:-1:-1;9734:6:2;;6826:2920;-1:-1:-1;;;;;;;;;;;;;6826:2920:2:o;9751:127::-;9812:10;9807:3;9803:20;9800:1;9793:31;9843:4;9840:1;9833:15;9867:4;9864:1;9857:15;9883:324;9975:4;10033:11;10020:25;10127:3;10123:8;10112;10096:14;10092:29;10088:44;10068:18;10064:69;10054:97;;10147:1;10144;10137:12;10054:97;10168:33;;;;;9883:324;-1:-1:-1;;9883:324:2:o;10212:522::-;10290:4;10296:6;10356:11;10343:25;10450:2;10446:7;10435:8;10419:14;10415:29;10411:43;10391:18;10387:68;10377:96;;10469:1;10466;10459:12;10377:96;10496:33;;10548:20;;;-1:-1:-1;;;;;;10580:30:2;;10577:50;;;10623:1;10620;10613:12;10577:50;10656:4;10644:17;;-1:-1:-1;10687:14:2;10683:27;;;10673:38;;10670:58;;;10724:1;10721;10714:12;10739:271;10922:6;10914;10909:3;10896:33;10878:3;10948:16;;10973:13;;;10948:16;10739:271;-1:-1:-1;10739:271:2:o;11015:184::-;11073:6;11126:2;11114:9;11105:7;11101:23;11097:32;11094:52;;;11142:1;11139;11132:12;11094:52;11165:28;11183:9;11165:28;:::i;11204:182::-;11261:6;11314:2;11302:9;11293:7;11289:23;11285:32;11282:52;;;11330:1;11327;11320:12;11282:52;11353:27;11370:9;11353:27;:::i;11644:1142::-;12095:6;12084:9;12077:25;12153:6;12149:2;12138:22;12133:2;12122:9;12118:18;12111:50;12209:4;12201:6;12197:17;12192:2;12181:9;12177:18;12170:45;12251:3;12246:2;12235:9;12231:18;12224:31;12058:4;12278:63;12336:3;12325:9;12321:19;12313:6;12305;12278:63;:::i;:::-;12390:9;12382:6;12378:22;12372:3;12361:9;12357:19;12350:51;12424:50;12467:6;12459;12451;12424:50;:::i;:::-;12410:64;;12523:9;12515:6;12511:22;12505:3;12494:9;12490:19;12483:51;12557:50;12600:6;12592;12584;12557:50;:::i;:::-;12543:64;;12656:9;12648:6;12644:22;12638:3;12627:9;12623:19;12616:51;12684;12728:6;12719:7;12711:6;12684:51;:::i;:::-;12676:59;;;12772:7;12766:3;12755:9;12751:19;12744:36;11644:1142;;;;;;;;;;;;;;;:::o;12791:318::-;12978:6;12967:9;12960:25;13021:2;13016;13005:9;13001:18;12994:30;12941:4;13041:62;13099:2;13088:9;13084:18;13076:6;13068;13041:62;:::i;:::-;13033:70;12791:318;-1:-1:-1;;;;;12791:318:2:o;13114:583::-;13365:25;;;-1:-1:-1;;;;;13426:32:2;;13421:2;13406:18;;13399:60;-1:-1:-1;;;;;13495:31:2;;13490:2;13475:18;;13468:59;13446:3;13558:2;13543:18;;13536:31;;;-1:-1:-1;;13584:63:2;;13627:19;;13619:6;13611;13584:63;:::i;:::-;13576:71;;13684:6;13678:3;13667:9;13663:19;13656:35;13114:583;;;;;;;;;:::o","linkReferences":{},"immutableReferences":{"45":[{"start":419,"length":32},{"start":894,"length":32},{"start":2330,"length":32},{"start":2691,"length":32}],"47":[{"start":186,"length":32}]}}}}}}},"signatures":{"function":[{"signature":"admin()","signatureHash4":"0xf851a440","signatureHash32":"0xf851a44064d54ebc488774050c771bacc14f01dd7456abacb48978dba9cd92a4"},{"signature":"appendResponse(uint256,address,uint64,string,bytes32)","signatureHash4":"0xc2349ab2","signatureHash32":"0xc2349ab27de138ea2906c56dc0f2351ef61a5a70b3e523218166868c88cded6c"},{"signature":"feedbackRecorded(bytes32)","signatureHash4":"0x41dba4d5","signatureHash32":"0x41dba4d52d61da8956b99064496f6089e5a3fd40120af49fefd05223825af551"},{"signature":"identityRegistry()","signatureHash4":"0x134e18f4","signatureHash32":"0x134e18f44e9e39fe3d39e9b5ec74d5a0c73d2b020b179165bf6e62b71e78a339"},{"signature":"latest(bytes16)","signatureHash4":"0xebe9712c","signatureHash32":"0xebe9712ca71adbe4b6d5bbbbbb505b67319f7cee51d1b70c6d735f1a72afa14b"},{"signature":"receipts(bytes32)","signatureHash4":"0xef6cf04d","signatureHash32":"0xef6cf04d23a411aaa671d03570cc6c3c7c76b9c229fc1e797a019040b2b294a4"},{"signature":"recordWork(bytes16,bytes32,bytes32,string,(uint256,int128,uint8,string,string,string,string,bytes32)[])","signatureHash4":"0x765b59a5","signatureHash32":"0x765b59a50201d438cac5dba132bd7b07203462d07976c9f6ff23ebc883c1db45"},{"signature":"reputationRegistry()","signatureHash4":"0xc8db44e3","signatureHash32":"0xc8db44e3464bcf249f52a1618d2e331a96ff0c74d542ea211c2b8abc38718631"},{"signature":"revokeFeedback(uint256,uint64)","signatureHash4":"0x4ab3ca99","signatureHash32":"0x4ab3ca99d4ada6b234bad25266cf5f87eb2a37c7ad5ea35c9215d6b8a620ee13"},{"signature":"setAdmin(address)","signatureHash4":"0x704b6c02","signatureHash32":"0x704b6c02682d329712ab11ef6312d46667fbdd78a5dc1aa406e65eec4d30cd5d"},{"signature":"setWriter(address)","signatureHash4":"0x39e20523","signatureHash32":"0x39e205235c1dedc74e75b4b56cf9479ce338cac5e2b42ce0efd1323a6387e646"},{"signature":"writer()","signatureHash4":"0x453a2abc","signatureHash32":"0x453a2abcb45bb41f195b0b39fada18fa46ef3d41ace0defd9d34dfcd2a9415d7"}],"event":[{"signature":"AdminChanged(address)","signatureHash4":"0x7ce7ec0b","signatureHash32":"0x7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c"},{"signature":"WorkRecorded(bytes16,bytes32,bytes32,string)","signatureHash4":"0xc3e4ffea","signatureHash32":"0xc3e4ffeab3a1fc840bb179d634166017188a59d5df2db3c5f563052a5f6f2f86"},{"signature":"WriterChanged(address)","signatureHash4":"0xdf2afb00","signatureHash32":"0xdf2afb002d33710875c19190ab5bdd8858cfc21b74586247f995ed4858f33b3d"}],"error":[{"signature":"ConflictingReplay()","signatureHash4":"0x42b52b26","signatureHash32":"0x42b52b26d09f4e4097c28f00cca74c7bc5e9ed049875dc73ec024175f910dcd5"},{"signature":"InvalidRecord()","signatureHash4":"0xf2a3e8db","signatureHash32":"0xf2a3e8db448861a247b65de5494e309151be044fd9cd088ac91171257e4ddfef"},{"signature":"InvalidSignal()","signatureHash4":"0xa3df7b2c","signatureHash32":"0xa3df7b2c3ce5bad1a28d0d3f4837a11aed3426685d28de0167c86616aff3f155"},{"signature":"StaleParent()","signatureHash4":"0xd391a767","signatureHash32":"0xd391a767f81861c0e0555b9b74b24c57e59d82adeba41befabf71e01b5d62fe1"},{"signature":"Unauthorized()","signatureHash4":"0x82b42900","signatureHash32":"0x82b4290015f7ec7256ca2a6247d3c2a89c4865c0e791456df195f40ad0a81367"}]},"proxyResolution":{"isProxy":false,"proxyType":null,"implementations":[]},"match":"match","chainId":"1","address":"0xb6d0a187b050FA5Bb0B87033a203f37BECF4a775"}