@boostxyz/cli 5.0.0 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,14 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@boostxyz/sdk"),t=require("../utils-BLfs3EZx.cjs"),yf="hh-sol-artifact-1",lf="ContractAction",mf="contracts/actions/ContractAction.sol",Tf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],hf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6080516108c46100905f395f61017601526108c45ff3fe6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",wf="0x6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",vf={},gf={},x0={_format:yf,contractName:lf,sourceName:mf,abi:Tf,bytecode:hf,deployedBytecode:wf,linkReferences:vf,deployedLinkReferences:gf},Mf="hh-sol-artifact-1",xf="ERC721MintAction",If="contracts/actions/ERC721MintAction.sol",Af=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Ef="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051610f896100905f395f6102100152610f895ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Rf="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Of={},Cf={},I0={_format:Mf,contractName:xf,sourceName:If,abi:Af,bytecode:Ef,deployedBytecode:Rf,linkReferences:Of,deployedLinkReferences:Cf},Bf="hh-sol-artifact-1",_f="EventAction",Pf="contracts/actions/EventAction.sol",zf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],Nf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051611c276100905f395f6101510152611c275ff3fe6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",$f="0x6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",Hf={},Lf={},A0={_format:Bf,contractName:_f,sourceName:Pf,abi:zf,bytecode:Nf,deployedBytecode:$f,linkReferences:Hf,deployedLinkReferences:Lf},Ff="hh-sol-artifact-1",kf="SimpleAllowList",Sf="contracts/allowlists/SimpleAllowList.sol",Gf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Df="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611160806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",Uf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",Vf={},qf={},E0={_format:Ff,contractName:kf,sourceName:Sf,abi:Gf,bytecode:Df,deployedBytecode:Uf,linkReferences:Vf,deployedLinkReferences:qf},jf="hh-sol-artifact-1",Zf="SimpleDenyList",Wf="contracts/allowlists/SimpleDenyList.sol",Kf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Yf="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611161806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Jf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Qf={},Xf={},R0={_format:jf,contractName:Zf,sourceName:Wf,abi:Kf,bytecode:Yf,deployedBytecode:Jf,linkReferences:Qf,deployedLinkReferences:Xf},f1="hh-sol-artifact-1",e1="ManagedBudget",b1="contracts/budgets/ManagedBudget.sol",a1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],t1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612ba6806100855f395ff3fe608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",d1="0x608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",n1={},c1={},O0={_format:f1,contractName:e1,sourceName:b1,abi:a1,bytecode:t1,deployedBytecode:d1,linkReferences:n1,deployedLinkReferences:c1},i1="hh-sol-artifact-1",s1="ManagedBudgetWithFees",r1="contracts/budgets/ManagedBudgetWithFees.sol",p1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"topupIncentive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],o1="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b607e565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b8160c01c808260011c146079578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137998061008b5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",u1="0x6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",y1={},l1={},C0={_format:i1,contractName:s1,sourceName:r1,abi:p1,bytecode:o1,deployedBytecode:u1,linkReferences:y1,deployedLinkReferences:l1},m1="hh-sol-artifact-1",T1="VestingBudget",h1="contracts/budgets/VestingBudget.sol",w1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],v1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121dd806100855f395ff3fe608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",g1="0x608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",M1={},x1={},B0={_format:m1,contractName:T1,sourceName:h1,abi:w1,bytecode:v1,deployedBytecode:g1,linkReferences:M1,deployedLinkReferences:x1},I1="hh-sol-artifact-1",A1="AllowListIncentive",E1="contracts/incentives/AllowListIncentive.sol",R1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],O1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610f75806100855f395ff3fe608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",C1="0x608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",B1={},_1={},_0={_format:I1,contractName:A1,sourceName:E1,abi:R1,bytecode:O1,deployedBytecode:C1,linkReferences:B1,deployedLinkReferences:_1},P1="hh-sol-artifact-1",z1="CGDAIncentive",N1="contracts/incentives/CGDAIncentive.sol",$1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],H1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611b65806100855f395ff3fe6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",L1="0x6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",F1={},k1={},P0={_format:P1,contractName:z1,sourceName:N1,abi:$1,bytecode:H1,deployedBytecode:L1,linkReferences:F1,deployedLinkReferences:k1},S1="hh-sol-artifact-1",G1="ERC20Incentive",D1="contracts/incentives/ERC20Incentive.sol",U1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],V1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612135806100855f395ff3fe608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",q1="0x608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",j1={},Z1={},z0={_format:S1,contractName:G1,sourceName:D1,abi:U1,bytecode:V1,deployedBytecode:q1,linkReferences:j1,deployedLinkReferences:Z1},W1="hh-sol-artifact-1",K1="ERC20VariableCriteriaIncentive",Y1="contracts/incentives/ERC20VariableCriteriaIncentive.sol",J1=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Q1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612096806100855f395ff3fe608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",X1="0x608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",f5={},e5={},N0={_format:W1,contractName:K1,sourceName:Y1,abi:J1,bytecode:Q1,deployedBytecode:X1,linkReferences:f5,deployedLinkReferences:e5},b5="hh-sol-artifact-1",a5="ERC20VariableIncentive",t5="contracts/incentives/ERC20VariableIncentive.sol",d5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],n5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611c6d806100855f395ff3fe60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",c5="0x60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",i5={},s5={},$0={_format:b5,contractName:a5,sourceName:t5,abi:d5,bytecode:n5,deployedBytecode:c5,linkReferences:i5,deployedLinkReferences:s5},r5="hh-sol-artifact-1",p5="ERC1155Incentive",o5="contracts/incentives/ERC1155Incentive.sol",u5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],y5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612419806100855f395ff3fe60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",l5="0x60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",m5={},T5={},H0={_format:r5,contractName:p5,sourceName:o5,abi:u5,bytecode:y5,deployedBytecode:l5,linkReferences:m5,deployedLinkReferences:T5},h5="hh-sol-artifact-1",w5="PointsIncentive",v5="contracts/incentives/PointsIncentive.sol",g5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],M5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6113ca806100855f395ff3fe6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",x5="0x6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",I5={},A5={},L0={_format:h5,contractName:w5,sourceName:v5,abi:g5,bytecode:M5,deployedBytecode:x5,linkReferences:I5,deployedLinkReferences:A5},E5="hh-sol-artifact-1",R5="LimitedSignerValidator",O5="contracts/validators/LimitedSignerValidator.sol",C5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],B5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161194d6100c45f395f50505f50505f50505f50505f505061194d5ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",_5="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",P5={},z5={},F0={_format:E5,contractName:R5,sourceName:O5,abi:C5,bytecode:B5,deployedBytecode:_5,linkReferences:P5,deployedLinkReferences:z5},N5="hh-sol-artifact-1",$5="SignerValidator",H5="contracts/validators/SignerValidator.sol",L5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],F5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161167d6100c45f395f50505f50505f50505f50505f505061167d5ff3fe6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",k5="0x6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",S5={},G5={},k0={_format:N5,contractName:$5,sourceName:H5,abi:L5,bytecode:F5,deployedBytecode:k5,linkReferences:S5,deployedLinkReferences:G5};class D5 extends t.BaseError{constructor({docsPath:e}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
2
- `),{docsPath:e,name:"AbiConstructorNotFoundError"})}}class S0 extends t.BaseError{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
3
- `),{docsPath:e,name:"AbiConstructorParamsNotFoundError"})}}class U5 extends t.BaseError{constructor({expectedLength:e,givenLength:b,type:a}){super([`ABI encoding array length mismatch for type ${a}.`,`Expected length: ${e}`,`Given length: ${b}`].join(`
4
- `),{name:"AbiEncodingArrayLengthMismatchError"})}}class V5 extends t.BaseError{constructor({expectedSize:e,value:b}){super(`Size of bytes "${b}" (bytes${t.size(b)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class q5 extends t.BaseError{constructor({expectedLength:e,givenLength:b}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${e}`,`Given length (values): ${b}`].join(`
5
- `),{name:"AbiEncodingLengthMismatchError"})}}class j5 extends t.BaseError{constructor(e,{docsPath:b}){super([`Type "${e}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
6
- `),{docsPath:b,name:"InvalidAbiEncodingType"})}}class Z5 extends t.BaseError{constructor(e){super([`Value "${e}" is not a valid array.`].join(`
7
- `),{name:"InvalidArrayError"})}}function j(f){return typeof f[0]=="string"?y0(f):W5(f)}function W5(f){let e=0;for(const d of f)e+=d.length;const b=new Uint8Array(e);let a=0;for(const d of f)b.set(d,a),a+=d.length;return b}function y0(f){return`0x${f.reduce((e,b)=>e+b.replace("0x",""),"")}`}function K5(f,e,b,{strict:a}={}){return t.isHex(f,{strict:!1})?J5(f,e,b,{strict:a}):Y5(f,e,b,{strict:a})}function Z0(f,e){if(typeof e=="number"&&e>0&&e>t.size(f)-1)throw new t.SliceOffsetOutOfBoundsError({offset:e,position:"start",size:t.size(f)})}function W0(f,e,b){if(typeof e=="number"&&typeof b=="number"&&t.size(f)!==b-e)throw new t.SliceOffsetOutOfBoundsError({offset:b,position:"end",size:t.size(f)})}function Y5(f,e,b,{strict:a}={}){Z0(f,e);const d=f.slice(e,b);return a&&W0(d,e,b),d}function J5(f,e,b,{strict:a}={}){Z0(f,e);const d=`0x${f.replace("0x","").slice((e??0)*2,(b??f.length)*2)}`;return a&&W0(d,e,b),d}function Q5(f,e){if(f.length!==e.length)throw new q5({expectedLength:f.length,givenLength:e.length});const b=X5({params:f,values:e}),a=m0(b);return a.length===0?"0x":a}function X5({params:f,values:e}){const b=[];for(let a=0;a<f.length;a++)b.push(l0({param:f[a],value:e[a]}));return b}function l0({param:f,value:e}){const b=c6(f.type);if(b){const[a,d]=b;return e6(e,{length:a,param:{...f,type:d}})}if(f.type==="tuple")return n6(e,{param:f});if(f.type==="address")return f6(e);if(f.type==="bool")return a6(e);if(f.type.startsWith("uint")||f.type.startsWith("int")){const a=f.type.startsWith("int");return t6(e,{signed:a})}if(f.type.startsWith("bytes"))return b6(e,{param:f});if(f.type==="string")return d6(e);throw new j5(f.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function m0(f){let e=0;for(let n=0;n<f.length;n++){const{dynamic:c,encoded:r}=f[n];c?e+=32:e+=t.size(r)}const b=[],a=[];let d=0;for(let n=0;n<f.length;n++){const{dynamic:c,encoded:r}=f[n];c?(b.push(t.numberToHex(e+d,{size:32})),a.push(r),d+=t.size(r)):b.push(r)}return j([...b,...a])}function f6(f){if(!t.isAddress(f))throw new t.InvalidAddressError({address:f});return{dynamic:!1,encoded:t.padHex(f.toLowerCase())}}function e6(f,{length:e,param:b}){const a=e===null;if(!Array.isArray(f))throw new Z5(f);if(!a&&f.length!==e)throw new U5({expectedLength:e,givenLength:f.length,type:`${b.type}[${e}]`});let d=!1;const n=[];for(let c=0;c<f.length;c++){const r=l0({param:b,value:f[c]});r.dynamic&&(d=!0),n.push(r)}if(a||d){const c=m0(n);if(a){const r=t.numberToHex(n.length,{size:32});return{dynamic:!0,encoded:n.length>0?j([r,c]):r}}if(d)return{dynamic:!0,encoded:c}}return{dynamic:!1,encoded:j(n.map(({encoded:c})=>c))}}function b6(f,{param:e}){const[,b]=e.type.split("bytes"),a=t.size(f);if(!b){let d=f;return a%32!==0&&(d=t.padHex(d,{dir:"right",size:Math.ceil((f.length-2)/2/32)*32})),{dynamic:!0,encoded:j([t.padHex(t.numberToHex(a,{size:32})),d])}}if(a!==Number.parseInt(b))throw new V5({expectedSize:Number.parseInt(b),value:f});return{dynamic:!1,encoded:t.padHex(f,{dir:"right"})}}function a6(f){if(typeof f!="boolean")throw new t.BaseError(`Invalid boolean value: "${f}" (type: ${typeof f}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:t.padHex(t.boolToHex(f))}}function t6(f,{signed:e}){return{dynamic:!1,encoded:t.numberToHex(f,{size:32,signed:e})}}function d6(f){const e=t.stringToHex(f),b=Math.ceil(t.size(e)/32),a=[];for(let d=0;d<b;d++)a.push(t.padHex(K5(e,d*32,(d+1)*32),{dir:"right"}));return{dynamic:!0,encoded:j([t.padHex(t.numberToHex(t.size(e),{size:32})),...a])}}function n6(f,{param:e}){let b=!1;const a=[];for(let d=0;d<e.components.length;d++){const n=e.components[d],c=Array.isArray(f)?d:n.name,r=l0({param:n,value:f[c]});a.push(r),r.dynamic&&(b=!0)}return{dynamic:b,encoded:b?m0(a):j(a.map(({encoded:d})=>d))}}function c6(f){const e=f.match(/^(.*)\[(\d+)?\]$/);return e?[e[2]?Number(e[2]):null,e[1]]:void 0}const t0="/docs/contract/encodeDeployData";function i6(f){const{abi:e,args:b,bytecode:a}=f;if(!b||b.length===0)return a;const d=e.find(c=>"type"in c&&c.type==="constructor");if(!d)throw new D5({docsPath:t0});if(!("inputs"in d))throw new S0({docsPath:t0});if(!d.inputs||d.inputs.length===0)throw new S0({docsPath:t0});const n=Q5(d.inputs,b);return y0([a,n])}class s6 extends t.BaseError{constructor({docsPath:e}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(`
8
- `),{docsPath:e,docsSlug:"account",name:"AccountNotFoundError"})}}class d0 extends t.BaseError{constructor({docsPath:e,metaMessages:b,type:a}){super(`Account type "${a}" is not supported.`,{docsPath:e,metaMessages:b,name:"AccountTypeNotSupportedError"})}}function r6(f){const e=t.keccak256(`0x${f.substring(4)}`).substring(26);return t.checksumAddress(`0x${e}`)}async function p6({hash:f,signature:e}){const b=t.isHex(f)?f:t.toHex(f),{secp256k1:a}=await Promise.resolve().then(()=>require("../utils-BLfs3EZx.cjs")).then(c=>c.secp256k1);return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:s,s:p,v:u,yParity:o}=e,m=Number(o??u),l=G0(m);return new a.Signature(t.hexToBigInt(s),t.hexToBigInt(p)).addRecoveryBit(l)}const c=t.isHex(e)?e:t.toHex(e),r=t.hexToNumber(`0x${c.slice(130)}`),i=G0(r);return a.Signature.fromCompact(c.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(b.substring(2)).toHex(!1)}`}function G0(f){if(f===0||f===1)return f;if(f===27)return 0;if(f===28)return 1;throw new Error("Invalid yParityOrV value")}async function o6({hash:f,signature:e}){return r6(await p6({hash:f,signature:e}))}class D0 extends t.BaseError{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class u6 extends t.BaseError{constructor({length:e,position:b}){super(`Position \`${b}\` is out of bounds (\`0 < position < ${e}\`).`,{name:"PositionOutOfBoundsError"})}}class y6 extends t.BaseError{constructor({count:e,limit:b}){super(`Recursive read limit of \`${b}\` exceeded (recursive read count: \`${e}\`).`,{name:"RecursiveReadLimitExceededError"})}}const l6={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new y6({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(f){if(f<0||f>this.bytes.length-1)throw new u6({length:this.bytes.length,position:f})},decrementPosition(f){if(f<0)throw new D0({offset:f});const e=this.position-f;this.assertPosition(e),this.position=e},getReadCount(f){return this.positionReadCount.get(f||this.position)||0},incrementPosition(f){if(f<0)throw new D0({offset:f});const e=this.position+f;this.assertPosition(e),this.position=e},inspectByte(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectBytes(f,e){const b=e??this.position;return this.assertPosition(b+f-1),this.bytes.subarray(b,b+f)},inspectUint8(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectUint16(f){const e=f??this.position;return this.assertPosition(e+1),this.dataView.getUint16(e)},inspectUint24(f){const e=f??this.position;return this.assertPosition(e+2),(this.dataView.getUint16(e)<<8)+this.dataView.getUint8(e+2)},inspectUint32(f){const e=f??this.position;return this.assertPosition(e+3),this.dataView.getUint32(e)},pushByte(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushBytes(f){this.assertPosition(this.position+f.length-1),this.bytes.set(f,this.position),this.position+=f.length},pushUint8(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushUint16(f){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,f),this.position+=2},pushUint24(f){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,f>>8),this.dataView.setUint8(this.position+2,f&255),this.position+=3},pushUint32(f){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,f),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const f=this.inspectByte();return this.position++,f},readBytes(f,e){this.assertReadLimit(),this._touch();const b=this.inspectBytes(f);return this.position+=e??f,b},readUint8(){this.assertReadLimit(),this._touch();const f=this.inspectUint8();return this.position+=1,f},readUint16(){this.assertReadLimit(),this._touch();const f=this.inspectUint16();return this.position+=2,f},readUint24(){this.assertReadLimit(),this._touch();const f=this.inspectUint24();return this.position+=3,f},readUint32(){this.assertReadLimit(),this._touch();const f=this.inspectUint32();return this.position+=4,f},get remaining(){return this.bytes.length-this.position},setPosition(f){const e=this.position;return this.assertPosition(f),this.position=f,()=>this.position=e},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const f=this.getReadCount();this.positionReadCount.set(this.position,f+1),f>0&&this.recursiveReadCount++}};function K0(f,{recursiveReadLimit:e=8192}={}){const b=Object.create(l6);return b.bytes=f,b.dataView=new DataView(f.buffer,f.byteOffset,f.byteLength),b.positionReadCount=new Map,b.recursiveReadLimit=e,b}function m6(f,e="hex"){const b=Y0(f),a=K0(new Uint8Array(b.length));return b.encode(a),e==="hex"?t.bytesToHex(a.bytes):a.bytes}function Y0(f){return Array.isArray(f)?T6(f.map(e=>Y0(e))):h6(f)}function T6(f){const e=f.reduce((d,n)=>d+n.length,0),b=J0(e);return{length:e<=55?1+e:1+b+e,encode(d){e<=55?d.pushByte(192+e):(d.pushByte(247+b),b===1?d.pushUint8(e):b===2?d.pushUint16(e):b===3?d.pushUint24(e):d.pushUint32(e));for(const{encode:n}of f)n(d)}}}function h6(f){const e=typeof f=="string"?t.hexToBytes(f):f,b=J0(e.length);return{length:e.length===1&&e[0]<128?1:e.length<=55?1+e.length:1+b+e.length,encode(d){e.length===1&&e[0]<128?d.pushBytes(e):e.length<=55?(d.pushByte(128+e.length),d.pushBytes(e)):(d.pushByte(183+b),b===1?d.pushUint8(e.length):b===2?d.pushUint16(e.length):b===3?d.pushUint24(e.length):d.pushUint32(e.length),d.pushBytes(e))}}}function J0(f){if(f<2**8)return 1;if(f<2**16)return 2;if(f<2**24)return 3;if(f<2**32)return 4;throw new t.BaseError("Length is too large.")}function w6(f){const{chainId:e,contractAddress:b,nonce:a,to:d}=f,n=t.keccak256(y0(["0x05",m6([t.numberToHex(e),b,a?t.numberToHex(a):"0x"])]));return d==="bytes"?t.hexToBytes(n):n}async function Q0(f){const{authorization:e,signature:b}=f;return o6({hash:w6(e),signature:b??e})}class v6 extends t.BaseError{constructor({chain:e,currentChainId:b}){super(`The current chain of the wallet (id: ${b}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${b}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:"ChainMismatchError"})}}class g6 extends t.BaseError{constructor(){super(["No chain was provided to the request.","Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(`
9
- `),{name:"ChainNotFoundError"})}}function M6({chain:f,currentChainId:e}){if(!f)throw new g6;if(e!==f.id)throw new v6({chain:f,currentChainId:e})}const x6={gwei:9,wei:18},I6={ether:-9,wei:9};function X0(f,e){let b=f.toString();const a=b.startsWith("-");a&&(b=b.slice(1)),b=b.padStart(e,"0");let[d,n]=[b.slice(0,b.length-e),b.slice(b.length-e)];return n=n.replace(/(0+)$/,""),`${a?"-":""}${d||"0"}${n?`.${n}`:""}`}function R(f,e="wei"){return X0(f,I6[e])}class q extends t.BaseError{constructor({cause:e,message:b}={}){var d;const a=(d=b==null?void 0:b.replace("execution reverted: ",""))==null?void 0:d.replace("execution reverted","");super(`Execution reverted ${a?`with reason: ${a}`:"for an unknown reason"}.`,{cause:e,name:"ExecutionRevertedError"})}}Object.defineProperty(q,"code",{enumerable:!0,configurable:!0,writable:!0,value:3});Object.defineProperty(q,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});class f0 extends t.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${R(b)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:"FeeCapTooHighError"})}}Object.defineProperty(f0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class n0 extends t.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${R(b)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e,name:"FeeCapTooLowError"})}}Object.defineProperty(n0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class c0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}is higher than the next one expected.`,{cause:e,name:"NonceTooHighError"})}}Object.defineProperty(c0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class i0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super([`Nonce provided for the transaction ${b?`(${b}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(`
10
- `),{cause:e,name:"NonceTooLowError"})}}Object.defineProperty(i0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class s0 extends t.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}exceeds the maximum allowed nonce.`,{cause:e,name:"NonceMaxValueError"})}}Object.defineProperty(s0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class r0 extends t.BaseError{constructor({cause:e}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
11
- `),{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(r0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class p0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(p0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class o0 extends t.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction is too low.`,{cause:e,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(o0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class u0 extends t.BaseError{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(u0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class e0 extends t.BaseError{constructor({cause:e,maxPriorityFeePerGas:b,maxFeePerGas:a}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${b?` = ${R(b)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${a?` = ${R(a)} gwei`:""}).`].join(`
12
- `),{cause:e,name:"TipAboveFeeCapError"})}}Object.defineProperty(e0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class T0 extends t.BaseError{constructor({cause:e}){super(`An error occurred while executing: ${e==null?void 0:e.shortMessage}`,{cause:e,name:"UnknownNodeError"})}}function ff(f,e="wei"){return X0(f,x6[e])}function h0(f){const e=Object.entries(f).map(([a,d])=>d===void 0||d===!1?null:[a,d]).filter(Boolean),b=e.reduce((a,[d])=>Math.max(a,d.length),0);return e.map(([a,d])=>` ${`${a}:`.padEnd(b+1)} ${d}`).join(`
13
- `)}class A6 extends t.BaseError{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(`
14
- `),{name:"FeeConflictError"})}}class E6 extends t.BaseError{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",h0(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class R6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const m=h0({chain:d&&`${d==null?void 0:d.name} (id: ${d==null?void 0:d.id})`,from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ff(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${R(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${R(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${R(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Request Arguments:",m].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function ef(f,e){const b=(f.details||"").toLowerCase(),a=f instanceof t.BaseError?f.walk(d=>(d==null?void 0:d.code)===q.code):f;return a instanceof t.BaseError?new q({cause:f,message:a.details}):q.nodeMessage.test(b)?new q({cause:f,message:f.details}):f0.nodeMessage.test(b)?new f0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):n0.nodeMessage.test(b)?new n0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):c0.nodeMessage.test(b)?new c0({cause:f,nonce:e==null?void 0:e.nonce}):i0.nodeMessage.test(b)?new i0({cause:f,nonce:e==null?void 0:e.nonce}):s0.nodeMessage.test(b)?new s0({cause:f,nonce:e==null?void 0:e.nonce}):r0.nodeMessage.test(b)?new r0({cause:f}):p0.nodeMessage.test(b)?new p0({cause:f,gas:e==null?void 0:e.gas}):o0.nodeMessage.test(b)?new o0({cause:f,gas:e==null?void 0:e.gas}):u0.nodeMessage.test(b)?new u0({cause:f}):e0.nodeMessage.test(b)?new e0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas,maxPriorityFeePerGas:e==null?void 0:e.maxPriorityFeePerGas}):new T0({cause:f})}function O6(f,{docsPath:e,...b}){const a=(()=>{const d=ef(f,b);return d instanceof T0?f:d})();return new R6(a,{docsPath:e,...b})}function bf(f,{format:e}){if(!e)return{};const b={};function a(n){const c=Object.keys(n);for(const r of c)r in f&&(b[r]=f[r]),n[r]&&typeof n[r]=="object"&&!Array.isArray(n[r])&&a(n[r])}const d=e(f||{});return a(d),b}const C6={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function af(f){const e={};return typeof f.authorizationList<"u"&&(e.authorizationList=B6(f.authorizationList)),typeof f.accessList<"u"&&(e.accessList=f.accessList),typeof f.blobVersionedHashes<"u"&&(e.blobVersionedHashes=f.blobVersionedHashes),typeof f.blobs<"u"&&(typeof f.blobs[0]!="string"?e.blobs=f.blobs.map(b=>t.bytesToHex(b)):e.blobs=f.blobs),typeof f.data<"u"&&(e.data=f.data),typeof f.from<"u"&&(e.from=f.from),typeof f.gas<"u"&&(e.gas=t.numberToHex(f.gas)),typeof f.gasPrice<"u"&&(e.gasPrice=t.numberToHex(f.gasPrice)),typeof f.maxFeePerBlobGas<"u"&&(e.maxFeePerBlobGas=t.numberToHex(f.maxFeePerBlobGas)),typeof f.maxFeePerGas<"u"&&(e.maxFeePerGas=t.numberToHex(f.maxFeePerGas)),typeof f.maxPriorityFeePerGas<"u"&&(e.maxPriorityFeePerGas=t.numberToHex(f.maxPriorityFeePerGas)),typeof f.nonce<"u"&&(e.nonce=t.numberToHex(f.nonce)),typeof f.to<"u"&&(e.to=f.to),typeof f.type<"u"&&(e.type=C6[f.type]),typeof f.value<"u"&&(e.value=t.numberToHex(f.value)),e}function B6(f){return f.map(e=>({address:e.contractAddress,r:e.r,s:e.s,chainId:t.numberToHex(e.chainId),nonce:t.numberToHex(e.nonce),...typeof e.yParity<"u"?{yParity:t.numberToHex(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:t.numberToHex(e.v)}:{}}))}function E(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}const _6=2n**256n-1n;function w0(f){const{account:e,gasPrice:b,maxFeePerGas:a,maxPriorityFeePerGas:d,to:n}=f,c=e?t.parseAccount(e):void 0;if(c&&!t.isAddress(c.address))throw new t.InvalidAddressError({address:c.address});if(n&&!t.isAddress(n))throw new t.InvalidAddressError({address:n});if(typeof b<"u"&&(typeof a<"u"||typeof d<"u"))throw new A6;if(a&&a>_6)throw new f0({maxFeePerGas:a});if(d&&a&&d>a)throw new e0({maxFeePerGas:a,maxPriorityFeePerGas:d})}async function tf(f){const e=await f.request({method:"eth_chainId"},{dedupe:!0});return t.hexToNumber(e)}class P6 extends t.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}class v0 extends t.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}class z6 extends t.BaseError{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${R(e)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}class N6 extends t.BaseError{constructor({blockHash:e,blockNumber:b}){let a="Block";e&&(a=`Block at hash "${e}"`),b&&(a=`Block at number "${b}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}const $6={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function H6(f){const e={...f,blockHash:f.blockHash?f.blockHash:null,blockNumber:f.blockNumber?BigInt(f.blockNumber):null,chainId:f.chainId?t.hexToNumber(f.chainId):void 0,gas:f.gas?BigInt(f.gas):void 0,gasPrice:f.gasPrice?BigInt(f.gasPrice):void 0,maxFeePerBlobGas:f.maxFeePerBlobGas?BigInt(f.maxFeePerBlobGas):void 0,maxFeePerGas:f.maxFeePerGas?BigInt(f.maxFeePerGas):void 0,maxPriorityFeePerGas:f.maxPriorityFeePerGas?BigInt(f.maxPriorityFeePerGas):void 0,nonce:f.nonce?t.hexToNumber(f.nonce):void 0,to:f.to?f.to:null,transactionIndex:f.transactionIndex?Number(f.transactionIndex):null,type:f.type?$6[f.type]:void 0,typeHex:f.type?f.type:void 0,value:f.value?BigInt(f.value):void 0,v:f.v?BigInt(f.v):void 0};return f.authorizationList&&(e.authorizationList=L6(f.authorizationList)),e.yParity=(()=>{if(f.yParity)return Number(f.yParity);if(typeof e.v=="bigint"){if(e.v===0n||e.v===27n)return 0;if(e.v===1n||e.v===28n)return 1;if(e.v>=35n)return e.v%2n===0n?1:0}})(),e.type==="legacy"&&(delete e.accessList,delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas,delete e.yParity),e.type==="eip2930"&&(delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),e.type==="eip1559"&&delete e.maxFeePerBlobGas,e}function L6(f){return f.map(e=>({contractAddress:e.address,r:e.r,s:e.s,chainId:Number(e.chainId),nonce:Number(e.nonce),...typeof e.yParity<"u"?{yParity:Number(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:Number(e.v)}:{}}))}function F6(f){var b;const e=(b=f.transactions)==null?void 0:b.map(a=>typeof a=="string"?a:H6(a));return{...f,baseFeePerGas:f.baseFeePerGas?BigInt(f.baseFeePerGas):null,blobGasUsed:f.blobGasUsed?BigInt(f.blobGasUsed):void 0,difficulty:f.difficulty?BigInt(f.difficulty):void 0,excessBlobGas:f.excessBlobGas?BigInt(f.excessBlobGas):void 0,gasLimit:f.gasLimit?BigInt(f.gasLimit):void 0,gasUsed:f.gasUsed?BigInt(f.gasUsed):void 0,hash:f.hash?f.hash:null,logsBloom:f.logsBloom?f.logsBloom:null,nonce:f.nonce?f.nonce:null,number:f.number?BigInt(f.number):null,size:f.size?BigInt(f.size):void 0,timestamp:f.timestamp?BigInt(f.timestamp):void 0,transactions:e,totalDifficulty:f.totalDifficulty?BigInt(f.totalDifficulty):null}}async function b0(f,{blockHash:e,blockNumber:b,blockTag:a,includeTransactions:d}={}){var p,u,o;const n=a??"latest",c=d??!1,r=b!==void 0?t.numberToHex(b):void 0;let i=null;if(e?i=await f.request({method:"eth_getBlockByHash",params:[e,c]},{dedupe:!0}):i=await f.request({method:"eth_getBlockByNumber",params:[r||n,c]},{dedupe:!!r}),!i)throw new N6({blockHash:e,blockNumber:b});return(((o=(u=(p=f.chain)==null?void 0:p.formatters)==null?void 0:u.block)==null?void 0:o.format)||F6)(i)}async function df(f){const e=await f.request({method:"eth_gasPrice"});return BigInt(e)}async function k6(f,e){var n,c;const{block:b,chain:a=f.chain,request:d}=e||{};try{const r=((n=a==null?void 0:a.fees)==null?void 0:n.maxPriorityFeePerGas)??((c=a==null?void 0:a.fees)==null?void 0:c.defaultPriorityFee);if(typeof r=="function"){const s=b||await E(f,b0,"getBlock")({}),p=await r({block:s,client:f,request:d});if(p===null)throw new Error;return p}if(typeof r<"u")return r;const i=await f.request({method:"eth_maxPriorityFeePerGas"});return t.hexToBigInt(i)}catch{const[r,i]=await Promise.all([b?Promise.resolve(b):E(f,b0,"getBlock")({}),E(f,df,"getGasPrice")({})]);if(typeof r.baseFeePerGas!="bigint")throw new v0;const s=i-r.baseFeePerGas;return s<0n?0n:s}}async function U0(f,e){var o,m;const{block:b,chain:a=f.chain,request:d,type:n="eip1559"}=e||{},c=await(async()=>{var l,v;return typeof((l=a==null?void 0:a.fees)==null?void 0:l.baseFeeMultiplier)=="function"?a.fees.baseFeeMultiplier({block:b,client:f,request:d}):((v=a==null?void 0:a.fees)==null?void 0:v.baseFeeMultiplier)??1.2})();if(c<1)throw new P6;const i=10**(((o=c.toString().split(".")[1])==null?void 0:o.length)??0),s=l=>l*BigInt(Math.ceil(c*i))/BigInt(i),p=b||await E(f,b0,"getBlock")({});if(typeof((m=a==null?void 0:a.fees)==null?void 0:m.estimateFeesPerGas)=="function"){const l=await a.fees.estimateFeesPerGas({block:b,client:f,multiply:s,request:d,type:n});if(l!==null)return l}if(n==="eip1559"){if(typeof p.baseFeePerGas!="bigint")throw new v0;const l=typeof(d==null?void 0:d.maxPriorityFeePerGas)=="bigint"?d.maxPriorityFeePerGas:await k6(f,{block:p,chain:a,request:d}),v=s(p.baseFeePerGas);return{maxFeePerGas:(d==null?void 0:d.maxFeePerGas)??v+l,maxPriorityFeePerGas:l}}return{gasPrice:(d==null?void 0:d.gasPrice)??s(await E(f,df,"getGasPrice")({}))}}class S6 extends t.BaseError{constructor(e,{account:b,docsPath:a,chain:d,data:n,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const m=h0({from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ff(o)} ${((l=d==null?void 0:d.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:n,gas:c,gasPrice:typeof r<"u"&&`${R(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${R(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${R(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",m].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function G6(f,{docsPath:e,...b}){const a=(()=>{const d=ef(f,b);return d instanceof T0?f:d})();return new S6(a,{docsPath:e,...b})}class D6 extends t.BaseError{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:"AccountStateConflictError"})}}class U6 extends t.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}function V0(f){if(!(!f||f.length===0))return f.reduce((e,{slot:b,value:a})=>{if(b.length!==66)throw new t.InvalidBytesLengthError({size:b.length,targetSize:66,type:"hex"});if(a.length!==66)throw new t.InvalidBytesLengthError({size:a.length,targetSize:66,type:"hex"});return e[b]=a,e},{})}function V6(f){const{balance:e,nonce:b,state:a,stateDiff:d,code:n}=f,c={};if(n!==void 0&&(c.code=n),e!==void 0&&(c.balance=t.numberToHex(e)),b!==void 0&&(c.nonce=t.numberToHex(b)),a!==void 0&&(c.state=V0(a)),d!==void 0){if(c.state)throw new U6;c.stateDiff=V0(d)}return c}function q6(f){if(!f)return;const e={};for(const{address:b,...a}of f){if(!t.isAddress(b,{strict:!1}))throw new t.InvalidAddressError({address:b});if(e[b])throw new D6({address:b});e[b]=V6(a)}return e}async function j6(f,{address:e,blockNumber:b,blockTag:a="latest"}){const d=b?t.numberToHex(b):void 0,n=await f.request({method:"eth_getBalance",params:[e,d||a]});return BigInt(n)}async function Z6(f,e){var d,n,c;const b=e.account??f.account,a=b?t.parseAccount(b):void 0;try{let K=function(J){const{block:C,request:M,rpcStateOverride:I}=J;return f.request({method:"eth_estimateGas",params:I?[M,C??"latest",I]:C?[M,C]:[M]})};const{accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,blockNumber:u,blockTag:o,data:m,gas:l,gasPrice:v,maxFeePerBlobGas:h,maxFeePerGas:T,maxPriorityFeePerGas:g,nonce:x,value:z,stateOverride:O,...A}=await of(f,{...e,parameters:(a==null?void 0:a.type)==="local"?void 0:["blobVersionedHashes"]}),_=(u?t.numberToHex(u):void 0)||o,N=q6(O),Q=await(async()=>{if(A.to)return A.to;if(i&&i.length>0)return await Q0({authorization:i[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`")})})();w0(e);const Z=(c=(n=(d=f.chain)==null?void 0:d.formatters)==null?void 0:n.transactionRequest)==null?void 0:c.format,W=(Z||af)({...bf(A,{format:Z}),from:a==null?void 0:a.address,accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,data:m,gas:l,gasPrice:v,maxFeePerBlobGas:h,maxFeePerGas:T,maxPriorityFeePerGas:g,nonce:x,to:Q,value:z});let Y=BigInt(await K({block:_,request:W,rpcStateOverride:N}));if(i){const J=await j6(f,{address:W.from}),C=await Promise.all(i.map(async M=>{const{contractAddress:I}=M,P=await K({block:_,request:{authorizationList:void 0,data:m,from:a==null?void 0:a.address,to:I,value:t.numberToHex(J)},rpcStateOverride:N}).catch(()=>100000n);return 2n*BigInt(P)}));Y+=C.reduce((M,I)=>M+I,0n)}return Y}catch(r){throw G6(r,{...e,account:a,chain:f.chain})}}async function W6(f,{address:e,blockTag:b="latest",blockNumber:a}){const d=await f.request({method:"eth_getTransactionCount",params:[e,a?t.numberToHex(a):b]},{dedupe:!!a});return t.hexToNumber(d)}function nf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(n=>t.hexToBytes(n)):f.blobs,d=[];for(const n of a)d.push(Uint8Array.from(e.blobToKzgCommitment(n)));return b==="bytes"?d:d.map(n=>t.bytesToHex(n))}function cf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(c=>t.hexToBytes(c)):f.blobs,d=typeof f.commitments[0]=="string"?f.commitments.map(c=>t.hexToBytes(c)):f.commitments,n=[];for(let c=0;c<a.length;c++){const r=a[c],i=d[c];n.push(Uint8Array.from(e.computeBlobKzgProof(r,i)))}return b==="bytes"?n:n.map(c=>t.bytesToHex(c))}function K6(f,e){return t.sha256(t.isHex(f,{strict:!1})?t.toBytes(f):f)}function Y6(f){const{commitment:e,version:b=1}=f,a=f.to??(typeof e=="string"?"hex":"bytes"),d=K6(e);return d.set([b],0),a==="bytes"?d:t.bytesToHex(d)}function J6(f){const{commitments:e,version:b}=f,a=f.to??(typeof e[0]=="string"?"hex":"bytes"),d=[];for(const n of e)d.push(Y6({commitment:n,to:a,version:b}));return d}const q0=6,sf=32,g0=4096,rf=sf*g0,j0=rf*q0-1-1*g0*q0;class Q6 extends t.BaseError{constructor({maxSize:e,size:b}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${b} bytes`],name:"BlobSizeTooLargeError"})}}class X6 extends t.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}function f8(f){const e=f.to??(typeof f.data=="string"?"hex":"bytes"),b=typeof f.data=="string"?t.hexToBytes(f.data):f.data,a=t.size(b);if(!a)throw new X6;if(a>j0)throw new Q6({maxSize:j0,size:a});const d=[];let n=!0,c=0;for(;n;){const r=K0(new Uint8Array(rf));let i=0;for(;i<g0;){const s=b.slice(c,c+(sf-1));if(r.pushByte(0),r.pushBytes(s),s.length<31){r.pushByte(128),n=!1;break}i++,c+=31}d.push(r)}return e==="bytes"?d.map(r=>r.bytes):d.map(r=>t.bytesToHex(r.bytes))}function e8(f){const{data:e,kzg:b,to:a}=f,d=f.blobs??f8({data:e,to:a}),n=f.commitments??nf({blobs:d,kzg:b,to:a}),c=f.proofs??cf({blobs:d,commitments:n,kzg:b,to:a}),r=[];for(let i=0;i<d.length;i++)r.push({blob:d[i],commitment:n[i],proof:c[i]});return r}function b8(f){if(f.type)return f.type;if(typeof f.authorizationList<"u")return"eip7702";if(typeof f.blobs<"u"||typeof f.blobVersionedHashes<"u"||typeof f.maxFeePerBlobGas<"u"||typeof f.sidecars<"u")return"eip4844";if(typeof f.maxFeePerGas<"u"||typeof f.maxPriorityFeePerGas<"u")return"eip1559";if(typeof f.gasPrice<"u")return typeof f.accessList<"u"?"eip2930":"legacy";throw new E6({transaction:f})}const pf=["blobVersionedHashes","chainId","fees","gas","nonce","type"];async function of(f,e){const{account:b=f.account,blobs:a,chain:d,gas:n,kzg:c,nonce:r,nonceManager:i,parameters:s=pf,type:p}=e,u=b?t.parseAccount(b):void 0,o={...e,...u?{from:u==null?void 0:u.address}:{}};let m;async function l(){return m||(m=await E(f,b0,"getBlock")({blockTag:"latest"}),m)}let v;async function h(){return v||(d?d.id:typeof e.chainId<"u"?e.chainId:(v=await E(f,tf,"getChainId")({}),v))}if((s.includes("blobVersionedHashes")||s.includes("sidecars"))&&a&&c){const T=nf({blobs:a,kzg:c});if(s.includes("blobVersionedHashes")){const g=J6({commitments:T,to:"hex"});o.blobVersionedHashes=g}if(s.includes("sidecars")){const g=cf({blobs:a,commitments:T,kzg:c}),x=e8({blobs:a,commitments:T,proofs:g,to:"hex"});o.sidecars=x}}if(s.includes("chainId")&&(o.chainId=await h()),s.includes("nonce")&&typeof r>"u"&&u)if(i){const T=await h();o.nonce=await i.consume({address:u.address,chainId:T,client:f})}else o.nonce=await E(f,W6,"getTransactionCount")({address:u.address,blockTag:"pending"});if((s.includes("fees")||s.includes("type"))&&typeof p>"u")try{o.type=b8(o)}catch{const T=await l();o.type=typeof(T==null?void 0:T.baseFeePerGas)=="bigint"?"eip1559":"legacy"}if(s.includes("fees"))if(o.type!=="legacy"&&o.type!=="eip2930"){if(typeof o.maxFeePerGas>"u"||typeof o.maxPriorityFeePerGas>"u"){const T=await l(),{maxFeePerGas:g,maxPriorityFeePerGas:x}=await U0(f,{block:T,chain:d,request:o});if(typeof e.maxPriorityFeePerGas>"u"&&e.maxFeePerGas&&e.maxFeePerGas<x)throw new z6({maxPriorityFeePerGas:x});o.maxPriorityFeePerGas=x,o.maxFeePerGas=g}}else{if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")throw new v0;const T=await l(),{gasPrice:g}=await U0(f,{block:T,chain:d,request:o,type:"legacy"});o.gasPrice=g}return s.includes("gas")&&typeof n>"u"&&(o.gas=await E(f,Z6,"estimateGas")({...o,account:u?{address:u.address,type:"json-rpc"}:void 0})),w0(o),delete o.parameters,o}async function a8(f,{serializedTransaction:e}){return f.request({method:"eth_sendRawTransaction",params:[e]},{retryCount:0})}async function t8(f,e){var T,g,x,z;const{account:b=f.account,chain:a=f.chain,accessList:d,authorizationList:n,blobs:c,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,value:l,...v}=e;if(!b)throw new s6({docsPath:"/docs/actions/wallet/sendTransaction"});const h=t.parseAccount(b);try{w0(e);const O=await(async()=>{if(e.to)return e.to;if(n&&n.length>0)return await Q0({authorization:n[0]}).catch(()=>{throw new t.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if(h.type==="json-rpc"){let A;a!==null&&(A=await E(f,tf,"getChainId")({}),M6({currentChainId:A,chain:a}));const B=(x=(g=(T=f.chain)==null?void 0:T.formatters)==null?void 0:g.transactionRequest)==null?void 0:x.format,N=(B||af)({...bf(v,{format:B}),accessList:d,authorizationList:n,blobs:c,chainId:A,data:r,from:h.address,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,to:O,value:l});return await f.request({method:"eth_sendTransaction",params:[N]},{retryCount:0})}if(h.type==="local"){const A=await E(f,of,"prepareTransactionRequest")({account:h,accessList:d,authorizationList:n,blobs:c,chain:a,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:m,nonceManager:h.nonceManager,parameters:[...pf,"sidecars"],value:l,...v,to:O}),B=(z=a==null?void 0:a.serializers)==null?void 0:z.transaction,_=await h.signTransaction(A,{serializer:B});return await E(f,a8,"sendRawTransaction")({serializedTransaction:_})}throw h.type==="smart"?new d0({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new d0({docsPath:"/docs/actions/wallet/sendTransaction",type:h.type})}catch(O){throw O instanceof d0?O:O6(O,{...e,account:h,chain:e.chain||void 0})}}function d8(f,e){const{abi:b,args:a,bytecode:d,...n}=e,c=i6({abi:b,args:a,bytecode:d});return t8(f,{...n,data:c})}const X=new t.LruMap(8192);function n8(f,{enabled:e=!0,id:b}){if(!e||!b)return f();if(X.get(b))return X.get(b);const a=f().finally(()=>X.delete(b));return X.set(b,a),a}function c8(f,e={}){return async(b,a={})=>{const{dedupe:d=!1,retryDelay:n=150,retryCount:c=3,uid:r}={...e,...a},i=d?t.keccak256(t.stringToHex(`${r}.${t.stringify(b)}`)):void 0;return n8(()=>t.withRetry(async()=>{try{return await f(b)}catch(s){const p=s;switch(p.code){case t.ParseRpcError.code:throw new t.ParseRpcError(p);case t.InvalidRequestRpcError.code:throw new t.InvalidRequestRpcError(p);case t.MethodNotFoundRpcError.code:throw new t.MethodNotFoundRpcError(p,{method:b.method});case t.InvalidParamsRpcError.code:throw new t.InvalidParamsRpcError(p);case t.InternalRpcError.code:throw new t.InternalRpcError(p);case t.InvalidInputRpcError.code:throw new t.InvalidInputRpcError(p);case t.ResourceNotFoundRpcError.code:throw new t.ResourceNotFoundRpcError(p);case t.ResourceUnavailableRpcError.code:throw new t.ResourceUnavailableRpcError(p);case t.TransactionRejectedRpcError.code:throw new t.TransactionRejectedRpcError(p);case t.MethodNotSupportedRpcError.code:throw new t.MethodNotSupportedRpcError(p,{method:b.method});case t.LimitExceededRpcError.code:throw new t.LimitExceededRpcError(p);case t.JsonRpcVersionUnsupportedError.code:throw new t.JsonRpcVersionUnsupportedError(p);case t.UserRejectedRequestError.code:throw new t.UserRejectedRequestError(p);case t.UnauthorizedProviderError.code:throw new t.UnauthorizedProviderError(p);case t.UnsupportedProviderMethodError.code:throw new t.UnsupportedProviderMethodError(p);case t.ProviderDisconnectedError.code:throw new t.ProviderDisconnectedError(p);case t.ChainDisconnectedError.code:throw new t.ChainDisconnectedError(p);case t.SwitchChainError.code:throw new t.SwitchChainError(p);case 5e3:throw new t.UserRejectedRequestError(p);default:throw s instanceof t.BaseError?s:new t.UnknownRpcError(p)}}},{delay:({count:s,error:p})=>{var u;if(p&&p instanceof t.HttpRequestError){const o=(u=p==null?void 0:p.headers)==null?void 0:u.get("Retry-After");if(o!=null&&o.match(/\d/))return Number.parseInt(o)*1e3}return~~(1<<s)*n},retryCount:c,shouldRetry:({error:s})=>i8(s)}),{enabled:d,id:i})}}function i8(f){return"code"in f&&typeof f.code=="number"?f.code===-1||f.code===t.LimitExceededRpcError.code||f.code===t.InternalRpcError.code:f instanceof t.HttpRequestError&&f.status?f.status===403||f.status===408||f.status===413||f.status===429||f.status===500||f.status===502||f.status===503||f.status===504:!0}function s8(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const d=f[b];return typeof d=="function"?d:n=>e(f,n)}function r8({key:f,name:e,request:b,retryCount:a=3,retryDelay:d=150,timeout:n,type:c},r){const i=t.uid();return{config:{key:f,name:e,request:b,retryCount:a,retryDelay:d,timeout:n,type:c},request:c8(b,{retryCount:a,retryDelay:d,uid:i}),value:r}}function p8(f,e={}){const{key:b="custom",name:a="Custom Provider",retryDelay:d}=e;return({retryCount:n})=>r8({key:b,name:a,request:f.request.bind(f),retryCount:e.retryCount??n,retryDelay:d,type:"custom"})}async function o8(f,e={}){let b;if(e.connector){const{connector:s}=e;if(f.state.status==="reconnecting"&&!s.getAccounts&&!s.getChainId)throw new t.ConnectorUnavailableReconnectingError({connector:s});const[p,u]=await Promise.all([s.getAccounts(),s.getChainId()]);b={accounts:p,chainId:u,connector:s}}else b=f.state.connections.get(f.state.current);if(!b)throw new t.ConnectorNotConnectedError;const a=e.chainId??b.chainId,d=await b.connector.getChainId();if(d!==b.chainId)throw new t.ConnectorChainMismatchError({connectionChainId:b.chainId,connectorChainId:d});const n=b.connector;if(n.getClient)return n.getClient({chainId:a});const c=t.parseAccount(e.account??b.accounts[0]);if(c.address=t.getAddress(c.address),e.account&&!b.accounts.some(s=>s.toLowerCase()===c.address.toLowerCase()))throw new t.ConnectorAccountNotFoundError({address:c.address,connector:n});const r=f.chains.find(s=>s.id===a),i=await b.connector.getProvider({chainId:a});return t.createClient({account:c,chain:r,name:"Connector Client",transport:s=>p8(i)({...s,retryCount:0})})}async function w(f,e){const{account:b,chainId:a,connector:d,...n}=e;let c;return typeof b=="object"&&b.type==="local"?c=f.getClient({chainId:a}):c=await o8(f,{account:b,chainId:a,connector:d}),await s8(c,d8,"deployContract")({...n,...b?{account:b}:{},chain:a?{id:a}:null})}const u8=async function(e,b){var M,I,P,$,H,L,F,k,S,G,D,U,V;const a=b.privateKey,d=b.mnemonic,n=b.chain;if(!a&&!d)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!n||!t.Chains[n])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,r]=t.getDeployableOptions({chain:n,privateKey:a,mnemonic:d}),{config:i,account:s}=c,p=r.id,u=await new y.BoostRegistry({address:null,...c}).deploy(),C=class C extends y.BoostRegistry{};C.addresses={[p]:u.assertValidAddress()};let o=C;const m=new o({...c,address:u.assertValidAddress()}),l=await new y.BoostCore({...c,registryAddress:m.assertValidAddress(),protocolFeeReceiver:s.address,owner:s.address}).deploy(),v=await y.getDeployedContractAddress(i,w(i,{abi:x0.abi,bytecode:x0.bytecode,account:s})),h=await y.getDeployedContractAddress(i,w(i,{abi:I0.abi,bytecode:I0.bytecode,account:s})),T=await y.getDeployedContractAddress(i,w(i,{abi:E0.abi,bytecode:E0.bytecode,account:s})),g=await y.getDeployedContractAddress(i,w(i,{abi:R0.abi,bytecode:R0.bytecode,account:s})),x=await y.getDeployedContractAddress(i,w(i,{abi:O0.abi,bytecode:O0.bytecode,account:s})),z=await y.getDeployedContractAddress(i,w(i,{abi:C0.abi,bytecode:C0.bytecode,account:s})),O=await y.getDeployedContractAddress(i,w(i,{abi:B0.abi,bytecode:B0.bytecode,account:s})),A=await y.getDeployedContractAddress(i,w(i,{abi:_0.abi,bytecode:_0.bytecode,account:s})),B=await y.getDeployedContractAddress(i,w(i,{abi:P0.abi,bytecode:P0.bytecode,account:s})),_=await y.getDeployedContractAddress(i,w(i,{abi:z0.abi,bytecode:z0.bytecode,account:s})),N=await y.getDeployedContractAddress(i,w(i,{abi:H0.abi,bytecode:H0.bytecode,account:s})),Q=await y.getDeployedContractAddress(i,w(i,{abi:A0.abi,bytecode:A0.bytecode,account:s})),Z=await y.getDeployedContractAddress(i,w(i,{abi:L0.abi,bytecode:L0.bytecode,account:s})),a0=await y.getDeployedContractAddress(i,w(i,{abi:$0.abi,bytecode:$0.bytecode,account:s})),W=await y.getDeployedContractAddress(i,w(i,{abi:N0.abi,bytecode:N0.bytecode,account:s})),K=await y.getDeployedContractAddress(i,w(i,{abi:k0.abi,bytecode:k0.bytecode,account:s})),Y=await y.getDeployedContractAddress(i,w(i,{abi:F0.abi,bytecode:F0.bytecode,account:s})),J={EventAction:(M=class extends y.EventAction{},M.bases={[p]:Q},M),SimpleAllowList:(I=class extends y.SimpleAllowList{},I.bases={[p]:T},I),SimpleDenyList:(P=class extends y.SimpleDenyList{},P.bases={[p]:g},P),ManagedBudget:($=class extends y.ManagedBudget{},$.bases={[p]:x},$),ManagedBudgetWithFees:(H=class extends y.ManagedBudgetWithFees{},H.bases={[p]:z},H),AllowListIncentive:(L=class extends y.AllowListIncentive{},L.bases={[p]:A},L),CGDAIncentive:(F=class extends y.CGDAIncentive{},F.bases={[p]:B},F),ERC20Incentive:(k=class extends y.ERC20Incentive{},k.bases={[p]:_},k),ERC20VariableIncentive:(S=class extends y.ERC20VariableIncentive{},S.bases={[p]:a0},S),ERC20VariableCriteriaIncentive:(G=class extends y.ERC20VariableCriteriaIncentive{},G.bases={[p]:W},G),PointsIncentive:(D=class extends y.PointsIncentive{},D.bases={[p]:Z},D),SignerValidator:(U=class extends y.SignerValidator{},U.bases={[p]:K},U),LimitedSignerValidator:(V=class extends y.LimitedSignerValidator{},V.bases={[p]:Y},V)};for(const[uf,M0]of Object.entries(J))await m.register(M0.registryType,uf,M0.bases[p]);return{BOOST_CORE_ADDRESS:l.assertValidAddress(),BOOST_REGISTRY_ADDRESS:m.assertValidAddress(),CONTRACT_ACTION_BASE:v,EVENT_ACTION_BASE:Q,ERC721_MINT_ACTION_BASE:h,SIMPLE_ALLOWLIST_BASE:T,SIMPLE_DENYLIST_BASE:g,MANAGED_BUDGET_BASE:x,VESTING_BUDGET_BASE:O,ALLOWLIST_INCENTIVE_BASE:A,CGDA_INCENTIVE_BASE:B,ERC20_INCENTIVE_BASE:_,ERC20_VARIABLE_INCENTIVE_BASE:a0,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:W,ERC1155_INCENTIVE_BASE:N,POINTS_INCENTIVE_BASE:Z,SIGNER_VALIDATOR_BASE:K,LIMITED_SIGNER_VALIDATOR_BASE:Y}};exports.deploy=u8;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("@boostxyz/sdk"),n=require("../utils-dz3mUqTs.cjs"),lf="hh-sol-artifact-1",mf="ContractAction",Tf="contracts/actions/ContractAction.sol",hf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"bytes_",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],wf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6080516108c46100905f395f61017601526108c45ff3fe6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",vf="0x6080604052600436106100ad575f3560e01c8063439fab9111610066578063d4b839921161004c578063d4b8399214610215578063d7768c4714610241578063ea3d508a1461026d575f80fd5b8063439fab91146101e05780639a8a059214610201575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb146101655780633fa4f245146101bd575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb3660046106c1565b61029e565b60405190151581526020015b60405180910390f35b6100f86100f33660046106da565b6102f9565b6040516100dc929190610794565b348015610111575f80fd5b507f6c3129aa000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100dc565b348015610170575f80fd5b506101987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101c8575f80fd5b506101d260025481565b6040519081526020016100dc565b3480156101eb575f80fd5b506101ff6101fa3660046106da565b6103e6565b005b34801561020c575f80fd5b506101d25f5481565b348015610220575f80fd5b506001546101989073ffffffffffffffffffffffffffffffffffffffff1681565b34801561024c575f80fd5b5061026061025b3660046106da565b610486565b6040516100dc91906107b6565b348015610278575f80fd5b506001546101349074010000000000000000000000000000000000000000900460e01b81565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa0000000000000000000000000000000000000000000000000000000014806102f357506102f3826104b9565b92915050565b5f6060465f5414610344575f546040517f180098f400000000000000000000000000000000000000000000000000000000815260040161033b91815260200190565b60405180910390fd5b6001546002545f91829173ffffffffffffffffffffffffffffffffffffffff82169161038c9074010000000000000000000000000000000000000000900460e01b898961050e565b60405161039991906107c8565b5f6040518083038185875af1925050503d805f81146103d3576040519150601f19603f3d011682016040523d82523d5f602084013e6103d8565b606091505b509097909650945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156104375760018160011c14303b1061042e5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061044c610447838501856107de565b61053a565b8015610481576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001546060906104b29074010000000000000000000000000000000000000000900460e01b848461050e565b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102f357506102f3826105bd565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b610542610653565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102f357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460011661068a5763d7e6bcf85f526004601cfd5b50565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106bc575f80fd5b919050565b5f602082840312156106d1575f80fd5b6104b28261068d565b5f80602083850312156106eb575f80fd5b823567ffffffffffffffff811115610701575f80fd5b8301601f81018513610711575f80fd5b803567ffffffffffffffff811115610727575f80fd5b856020828401011115610738575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f6107ae6040830184610748565b949350505050565b602081525f6104b26020830184610748565b5f82518060208501845e5f920191825250919050565b5f60808284031280156107ef575f80fd5b506040516080810167ffffffffffffffff81118282101715610838577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282358152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610865575f80fd5b60208201526108766040840161068d565b6040820152606092830135928101929092525091905056fea2646970667358221220565859fe3054762cc5690542fd83f600eae00bf2d525e3eade5c8075af145c9564736f6c634300081a0033",gf={},Mf={},I0={_format:lf,contractName:mf,sourceName:Tf,abi:hf,bytecode:wf,deployedBytecode:vf,linkReferences:gf,deployedLinkReferences:Mf},xf="hh-sol-artifact-1",If="ERC721MintAction",Af="contracts/actions/ERC721MintAction.sol",Ef=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[{internalType:"uint256",name:"targetChainId",type:"uint256"}],name:"TargetChainUnsupported",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"target",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"success",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"validated",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"value",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Rf="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051610f896100905f395f6102100152610f895ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Of="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063d7768c4711610071578063f04e283e11610057578063f04e283e146103ba578063f2fde38b146103cd578063fee81cf4146103e0575f80fd5b8063d7768c471461035d578063ea3d508a14610389575f80fd5b80639a8a0592116100a15780639a8a0592146102ef578063bec9527714610303578063d4b8399214610331575f80fd5b8063715018a6146102b45780638da5cb5b146102bc575f80fd5b8063393df8cb11610110578063439fab91116100f6578063439fab911461027a57806354d1f13d14610299578063703b6900146102a1575f80fd5b8063393df8cb146101ff5780633fa4f24514610257575f80fd5b806301ffc9a71461014157806309c5eabe14610175578063256929621461019657806328d6183b146101a0575b5f80fd5b34801561014c575f80fd5b5061016061015b366004610b6a565b610411565b60405190151581526020015b60405180910390f35b610188610183366004610bc8565b61046c565b60405161016c929190610c53565b61019e6104a1565b005b3480156101ab575f80fd5b507f97e083eb000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161016c565b34801561020a575f80fd5b506102327f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610262575f80fd5b5061026c60025481565b60405190815260200161016c565b348015610285575f80fd5b5061019e610294366004610bc8565b6104ee565b61019e61058e565b6101606102af366004610c96565b6105c7565b61019e610705565b3480156102c7575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610232565b3480156102fa575f80fd5b5061026c5f5481565b34801561030e575f80fd5b5061016061031d366004610cfb565b60036020525f908152604090205460ff1681565b34801561033c575f80fd5b506001546102329073ffffffffffffffffffffffffffffffffffffffff1681565b348015610368575f80fd5b5061037c610377366004610bc8565b610718565b60405161016c9190610d12565b348015610394575f80fd5b506001546101ce9074010000000000000000000000000000000000000000900460e01b81565b61019e6103c8366004610d24565b61072b565b61019e6103db366004610d24565b610768565b3480156103eb575f80fd5b5061026c6103fa366004610d24565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f97e083eb00000000000000000000000000000000000000000000000000000000148061046657506104668261078e565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561053f5760018160011c14303b106105365763f92ee8a95f526004601cfd5b818160ff1b1b91505b5061055461054f83850185610dbb565b6107e3565b8015610589576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80806105d684860186610e2e565b915091505f816105e590610ef3565b6001546040517f6352211e0000000000000000000000000000000000000000000000000000000081526004810183905291925073ffffffffffffffffffffffffffffffffffffffff85811692911690636352211e90602401602060405180830381865afa158015610658573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067c9190610f38565b73ffffffffffffffffffffffffffffffffffffffff161480156106ad57505f8181526003602052604090205460ff16155b156106f5575f90815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915592506106fc915050565b5f93505050505b95945050505050565b61070d61086f565b6107165f6108a4565b565b60606107248383610909565b9392505050565b61073361086f565b63389a75e1600c52805f526020600c20805442111561075957636f5e88185f526004601cfd5b5f9055610765816108a4565b50565b61077061086f565b8060601b61078557637448fbae5f526004601cfd5b610765816108a4565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c000000000000000000000000000000000000000000000000000000001480610466575061046682610935565b6107eb61098a565b6107f4336109c1565b80515f55602081015160018054604084015160e01c74010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090911673ffffffffffffffffffffffffffffffffffffffff9093169290921791909117905560600151600255565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610716576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b6001546060906107249074010000000000000000000000000000000000000000900460e01b8484610a24565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6c3129aa000000000000000000000000000000000000000000000000000000001480610466575061046682610a50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166107655763d7e6bcf85f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b606081600401604051915080825260208101820160405250836020820152818360248301379392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806104665750610466825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061046657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610466565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610b65575f80fd5b919050565b5f60208284031215610b7a575f80fd5b61072482610b36565b5f8083601f840112610b93575f80fd5b50813567ffffffffffffffff811115610baa575f80fd5b602083019150836020828501011115610bc1575f80fd5b9250929050565b5f8060208385031215610bd9575f80fd5b823567ffffffffffffffff811115610bef575f80fd5b610bfb85828601610b83565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f610c6d6040830184610c07565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610765575f80fd5b5f805f805f60808688031215610caa575f80fd5b85359450602086013593506040860135610cc381610c75565b9250606086013567ffffffffffffffff811115610cde575f80fd5b610cea88828901610b83565b969995985093965092949392505050565b5f60208284031215610d0b575f80fd5b5035919050565b602081525f6107246020830184610c07565b5f60208284031215610d34575f80fd5b813561072481610c75565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610db357610db3610d3f565b604052919050565b5f6080828403128015610dcc575f80fd5b506040516080810167ffffffffffffffff81118282101715610df057610df0610d3f565b604052823581526020830135610e0581610c75565b6020820152610e1660408401610b36565b60408201526060928301359281019290925250919050565b5f8060408385031215610e3f575f80fd5b8235610e4a81610c75565b9150602083013567ffffffffffffffff811115610e65575f80fd5b8301601f81018513610e75575f80fd5b803567ffffffffffffffff811115610e8f57610e8f610d3f565b610ec060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610d6c565b818152866020838501011115610ed4575f80fd5b816020840160208301375f602083830101528093505050509250929050565b80516020808301519190811015610f32577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8160200360031b1b821691505b50919050565b5f60208284031215610f48575f80fd5b815161072481610c7556fea264697066735822122018f8b3a12cbe661b46e1ac05e494f7269412be3c2659d60bf4dad429ab0ca1a864736f6c634300081a0033",Cf={},_f={},A0={_format:xf,contractName:If,sourceName:Af,abi:Ef,bytecode:Rf,deployedBytecode:Of,linkReferences:Cf,deployedLinkReferences:_f},Bf="hh-sol-artifact-1",Pf="EventAction",zf="contracts/actions/EventAction.sol",Nf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"executor",type:"address"},{indexed:!1,internalType:"address",name:"caller",type:"address"},{indexed:!1,internalType:"bool",name:"success",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"bool",name:"isValidated",type:"bool"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"ActionValidated",type:"event"},{anonymous:!1,inputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],indexed:!1,internalType:"struct AEventAction.ActionClaimant",name:"actionClaimant",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepOne",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepTwo",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepThree",type:"tuple"},{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],indexed:!1,internalType:"struct AEventAction.ActionStep",name:"actionStepFour",type:"tuple"}],name:"EventActionInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{inputs:[],name:"VALIDATOR",outputs:[{internalType:"contract AValidator",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"execute",outputs:[{internalType:"bool",name:"",type:"bool"},{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getActionClaimant",outputs:[{components:[{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"}],internalType:"struct AEventAction.ActionClaimant",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"index",type:"uint256"}],name:"getActionStep",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionSteps",outputs:[{components:[{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"enum AEventAction.SignatureType",name:"signatureType",type:"uint8"},{internalType:"uint8",name:"actionType",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"},{internalType:"uint256",name:"chainid",type:"uint256"},{components:[{internalType:"enum AEventAction.FilterType",name:"filterType",type:"uint8"},{internalType:"enum AEventAction.PrimitiveType",name:"fieldType",type:"uint8"},{internalType:"uint32",name:"fieldIndex",type:"uint32"},{internalType:"bytes",name:"filterData",type:"bytes"}],internalType:"struct AEventAction.Criteria",name:"actionParameter",type:"tuple"}],internalType:"struct AEventAction.ActionStep[]",name:"",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getActionStepsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"prepare",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"}],$f="0x60a0604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b608051611c276100905f395f6101510152611c275ff3fe6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",Hf="0x6080604052600436106100ad575f3560e01c80639bc1cf8111610066578063d7768c471161004c578063d7768c4714610206578063dbdf211014610232578063ddd6ab0814610253575f80fd5b80639bc1cf81146101b9578063c26624e8146101da575f80fd5b806328d6183b1161009657806328d6183b14610106578063393df8cb14610140578063439fab9114610198575f80fd5b806301ffc9a7146100b157806309c5eabe146100e5575b5f80fd5b3480156100bc575f80fd5b506100d06100cb366004611281565b610270565b60405190151581526020015b60405180910390f35b6100f86100f33660046112c7565b6102cb565b6040516100dc929190611381565b348015610111575f80fd5b506040517f7687b0ed0000000000000000000000000000000000000000000000000000000081526020016100dc565b34801561014b575f80fd5b506101737f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100dc565b3480156101a3575f80fd5b506101b76101b23660046112c7565b610300565b005b3480156101c4575f80fd5b506101cd6103a0565b6040516100dc919061149b565b3480156101e5575f80fd5b506101f96101f436600461151c565b61059f565b6040516100dc9190611533565b348015610211575f80fd5b506102256102203660046112c7565b61077a565b6040516100dc9190611545565b34801561023d575f80fd5b506102466107ae565b6040516100dc91906115a7565b34801561025e575f80fd5b506004546040519081526020016100dc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7687b0ed0000000000000000000000000000000000000000000000000000000014806102c557506102c582610858565b92915050565b5f60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103515760018160011c14303b106103485763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610366610361838501856118a8565b6108ad565b801561039b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60606004805480602002602001604051908101604052809291908181526020015f905b82821015610596578382905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff166001811115610410576104106113a3565b6001811115610421576104216113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610494576104946113a3565b60078111156104a5576104a56113a3565b81528154602090910190610100900460ff1660058111156104c8576104c86113a3565b60058111156104d9576104d96113a3565b8152815462010000900463ffffffff166020820152600182018054604090920191610503906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461052f906119a9565b801561057a5780601f106105515761010080835404028352916020019161057a565b820191905f5260205f20905b81548152906001019060200180831161055d57829003601f168201915b50505050508152505081525050815260200190600101906103c3565b50505050905090565b6105a7611226565b600482815481106105ba576105ba6119fa565b905f5260205f2090600502016040518060c00160405290815f8201548152602001600182015f9054906101000a900460ff1660018111156105fd576105fd6113a3565b600181111561060e5761060e6113a3565b81526001820154610100810460ff90811660208401526201000090910473ffffffffffffffffffffffffffffffffffffffff1660408084019190915260028401546060840152805160808082019092526003850180549290940193909290918391166007811115610681576106816113a3565b6007811115610692576106926113a3565b81528154602090910190610100900460ff1660058111156106b5576106b56113a3565b60058111156106c6576106c66113a3565b8152815462010000900463ffffffff1660208201526001820180546040909201916106f0906119a9565b80601f016020809104026020016040519081016040528092919081815260200182805461071c906119a9565b80156107675780601f1061073e57610100808354040283529160200191610767565b820191905f5260205f20905b81548152906001019060200180831161074a57829003601f168201915b5050509190925250505090525092915050565b60606040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040805160a081019091525f8054829060ff1660018111156107fc576107fc6113a3565b600181111561080d5761080d6113a3565b815260018201546020820152600282015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff166060820152600390910154608090910152919050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe67157950000000000000000000000000000000000000000000000000000000014806102c557506102c582611156565b6108b56111ec565b805180515f8054909190829060ff1916600183818111156108d8576108d86113a3565b02179055506020828101516001808401919091556040840151600284018054606087015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090911660ff90931692909217919091179055608090930151600390920191909155828101516004805480850182555f91909152815160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b8101918255928201517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c90930180549294919392909160ff19919091169083818111156109e1576109e16113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610aa257610aa26113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ae757610ae76113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610b3b9082611a72565b505050604083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610bcc57610bcc6113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610c8d57610c8d6113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610cd257610cd26113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610d269082611a72565b505050606083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610db757610db76113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115610e7857610e786113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836005811115610ebd57610ebd6113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff90911617815560608201516001820190610f119082611a72565b505050608083015160048054600181810183555f92909252825160059091027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b810191825560208401517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c909101805494965091945092909160ff19909116908381811115610fa257610fa26113a3565b0217905550604082015160018083018054606086015173ffffffffffffffffffffffffffffffffffffffff1662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff60ff90951661010002949094167fffffffffffffffffffff000000000000000000000000000000000000000000ff90911617929092179091556080830151600283015560a0830151805160038401805492939092839160ff1990911690836007811115611063576110636113a3565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360058111156110a8576110a86113a3565b02179055506040820151815463ffffffff90911662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ffff909116178155606082015160018201906110fc9082611a72565b50505050507fdc8145a6c863ebd27b18aa903b7f82f1015527a05a81f227ef06ab79616082b4815f0151826020015183604001518460600151856080015160405161114b959493929190611b89565b60405180910390a150565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806102c557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146102c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546001166112235763d7e6bcf85f526004601cfd5b50565b6040805160c081019091525f808252602082019081525f6020820181905260408201819052606082015260800161127c6040805160808101909152805f81526020015f81525f6020820152606060409091015290565b905290565b5f60208284031215611291575f80fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112c0575f80fd5b9392505050565b5f80602083850312156112d8575f80fd5b823567ffffffffffffffff8111156112ee575f80fd5b8301601f810185136112fe575f80fd5b803567ffffffffffffffff811115611314575f80fd5b856020828401011115611325575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201525f61139b6040830184611335565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106113e0576113e06113a3565b9052565b805182525f60208201516113fb60208501826113d0565b5060ff604083015116604084015273ffffffffffffffffffffffffffffffffffffffff60608301511660608401526080820151608084015260a082015160c060a0850152805160088110611451576114516113a3565b60c085015260208101516006811061146b5761146b6113a3565b60e0850152604081015163ffffffff1661010085015260600151608061012085015261139b610140850182611335565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015611510577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184526114fb8583516113e4565b945060209384019391909101906001016114c1565b50929695505050505050565b5f6020828403121561152c575f80fd5b5035919050565b602081525f6112c060208301846113e4565b602081525f6112c06020830184611335565b6115628282516113d0565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff6060820151166060830152608081015160808301525050565b60a081016102c58284611557565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611605576116056115b5565b60405290565b60405160c0810167ffffffffffffffff81118282101715611605576116056115b5565b6040516080810167ffffffffffffffff81118282101715611605576116056115b5565b80356002811061165f575f80fd5b919050565b803560ff8116811461165f575f80fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461165f575f80fd5b5f60a082840312156116a7575f80fd5b6116af6115e2565b90506116ba82611651565b8152602082810135908201526116d260408301611664565b60408201526116e360608301611674565b606082015260809182013591810191909152919050565b5f82601f830112611709575f80fd5b813567ffffffffffffffff811115611723576117236115b5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611770576117706115b5565b604052818152838201602001851015611787575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60c082840312156117b3575f80fd5b6117bb61160b565b8235815290506117cd60208301611651565b60208201526117de60408301611664565b60408201526117ef60608301611674565b60608201526080828101359082015260a082013567ffffffffffffffff811115611817575f80fd5b820160808185031215611828575f80fd5b61183061162e565b81356008811061183e575f80fd5b8152602082013560068110611851575f80fd5b6020820152604082013563ffffffff8116811461186c575f80fd5b6040820152606082013567ffffffffffffffff81111561188a575f80fd5b611896868285016116fa565b60608301525060a08301525092915050565b5f602082840312156118b8575f80fd5b813567ffffffffffffffff8111156118ce575f80fd5b820161012081850312156118e0575f80fd5b6118e86115e2565b6118f28583611697565b815260a082013567ffffffffffffffff81111561190d575f80fd5b611919868285016117a3565b60208301525060c082013567ffffffffffffffff811115611938575f80fd5b611944868285016117a3565b60408301525060e082013567ffffffffffffffff811115611963575f80fd5b61196f868285016117a3565b60608301525061010082013567ffffffffffffffff81111561198f575f80fd5b61199b868285016117a3565b608083015250949350505050565b600181811c908216806119bd57607f821691505b6020821081036119f4577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b601f82111561039b57805f5260205f20601f840160051c81016020851015611a4c5750805b601f840160051c820191505b81811015611a6b575f8155600101611a58565b5050505050565b815167ffffffffffffffff811115611a8c57611a8c6115b5565b611aa081611a9a84546119a9565b84611a27565b6020601f821160018114611af1575f8315611abb5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611a6b565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015611b3e5787850151825560209485019460019092019101611b1e565b5084821015611b7a57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b611b938187611557565b61012060a08201525f611baa6101208301876113e4565b82810360c0840152611bbc81876113e4565b905082810360e0840152611bd081866113e4565b9050828103610100840152611be581856113e4565b9897505050505050505056fea2646970667358221220d56d85089e2c998c805bbe0d4e5ad7257c3cb379f303d0012771ee0f026004f864736f6c634300081a0033",Lf={},Ff={},E0={_format:Bf,contractName:Pf,sourceName:zf,abi:Nf,bytecode:$f,deployedBytecode:Hf,linkReferences:Lf,deployedLinkReferences:Ff},kf="hh-sol-artifact-1",Sf="SimpleAllowList",Gf="contracts/allowlists/SimpleAllowList.sol",Df=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"allowed_",type:"bool[]"}],name:"setAllowed",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Uf="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611160806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",Vf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610445578063fe9fbb8014610458578063fee81cf414610477575f80fd5b8063e3f756de146103d8578063ec87621c1461041e578063f04e283e14610432575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b80632de9480711610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b80632de948071461025a5780633abb0604146102995780634359d28a146102b8575f80fd5b80631cd64df4116101615780631cd64df4146101e3578063256929621461021857806328d6183b14610220575f80fd5b806301ffc9a714610187578063183a4f6e146101bb5780631c10893f146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5e565b6104a8565b60405190151581526020015b60405180910390f35b6101ce6101c9366004610da4565b610503565b005b6101ce6101de366004610dec565b610510565b3480156101ee575f80fd5b506101a66101fd366004610dec565b638b78c6d8600c9081525f9290925260209091205481161490565b6101ce610526565b34801561022b575f80fd5b506040517f1392d7980000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610265575f80fd5b5061028b610274366004610e16565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102a4575f80fd5b506101ce6102b3366004610e79565b610573565b3480156102c3575f80fd5b506101ce6102d2366004610e79565b6106a6565b3480156102e2575f80fd5b506101ce6102f1366004610f23565b6107a0565b6101ce610304366004610dec565b6108cf565b348015610314575f80fd5b506101a6610323366004610dec565b638b78c6d8600c9081525f9290925260209091205416151590565b6101ce6108e1565b6101ce61091a565b348015610359575f80fd5b5061028b600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101ce6103b4366004610e79565b61092d565b3480156103c4575f80fd5b506101ce6103d3366004610e79565b6109cb565b3480156103e3575f80fd5b506101a66103f2366004610f62565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1690565b348015610429575f80fd5b5061028b600181565b6101ce610440366004610e16565b610a69565b6101ce610453366004610e16565b610aa3565b348015610463575f80fd5b506101a6610472366004610e16565b610ac9565b348015610482575f80fd5b5061028b610491366004610e16565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f1392d7980000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610b28565b92915050565b61050d3382610b7d565b50565b610518610b88565b6105228282610ba2565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b61057c33610ac9565b6105b2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281146105eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8381101561069f5782828281811061060757610607610fb3565b905060200201602081019061061c9190610fe0565b5f8087878581811061063057610630610fb3565b90506020020160208101906106459190610e16565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556001016105ed565b5050505050565b60026106b181610bae565b8382146106ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798575f84848381811061070757610707610fb3565b905060200201602081019061071c9190610fe0565b905080151560010361075e5761075987878481811061073d5761073d610fb3565b90506020020160208101906107529190610e16565b6001610ba2565b61078f565b61078f87878481811061077357610773610fb3565b90506020020160208101906107889190610e16565b6001610b7d565b506001016106ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f15760018160011c14303b106107e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108008486018661102c565b9150915061080d82610bdf565b5f5b81518110156108925760015f8084848151811061082e5761082e610fb3565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161080f565b50505080156108ca576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d7610b88565b6105228282610b7d565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610922610b88565b61092b5f610c27565b565b600261093881610bae565b838214610971576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610798576109c386868381811061099057610990610fb3565b90506020020160208101906109a59190610e16565b8585848181106109b7576109b7610fb3565b90506020020135610ba2565b600101610973565b60026109d681610bae565b838214610a0f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079857610a61868683818110610a2e57610a2e610fb3565b9050602002016020810190610a439190610e16565b858584818110610a5557610a55610fb3565b90506020020135610b7d565b600101610a11565b610a71610b88565b63389a75e1600c52805f526020600c208054421115610a9757636f5e88185f526004601cfd5b5f905561050d81610c27565b610aab610b88565b8060601b610ac057637448fbae5f526004601cfd5b61050d81610c27565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aee638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fd5750638b78c6d8600c9081525f839052602090205460031615156104fd565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fd57506104fd82610c71565b61052282825f610d07565b638b78c6d81954331461092b576382b429005f526004601cfd5b61052282826001610d07565b638b78c6d81954331461050d57638b78c6d8600c52335f52806020600c20541661050d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fd57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fd565b638b78c6d8600c52825f526020600c20805483811783610d28575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6e575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9d575f80fd5b9392505050565b5f60208284031215610db4575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461050d575f80fd5b8035610de781610dbb565b919050565b5f8060408385031215610dfd575f80fd5b8235610e0881610dbb565b946020939093013593505050565b5f60208284031215610e26575f80fd5b8135610d9d81610dbb565b5f8083601f840112610e41575f80fd5b50813567ffffffffffffffff811115610e58575f80fd5b6020830191508360208260051b8501011115610e72575f80fd5b9250929050565b5f805f8060408587031215610e8c575f80fd5b843567ffffffffffffffff811115610ea2575f80fd5b610eae87828801610e31565b909550935050602085013567ffffffffffffffff811115610ecd575f80fd5b610ed987828801610e31565b95989497509550505050565b5f8083601f840112610ef5575f80fd5b50813567ffffffffffffffff811115610f0c575f80fd5b602083019150836020828501011115610e72575f80fd5b5f8060208385031215610f34575f80fd5b823567ffffffffffffffff811115610f4a575f80fd5b610f5685828601610ee5565b90969095509350505050565b5f805f60408486031215610f74575f80fd5b8335610f7f81610dbb565b9250602084013567ffffffffffffffff811115610f9a575f80fd5b610fa686828701610ee5565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff0575f80fd5b81358015158114610d9d575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103d575f80fd5b823561104881610dbb565b9150602083013567ffffffffffffffff811115611063575f80fd5b8301601f81018513611073575f80fd5b803567ffffffffffffffff81111561108d5761108d610fff565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d8576110d8610fff565b6040529182526020818401810192908101888411156110f5575f80fd5b6020850194505b8385101561111b5761110d85610ddc565b8152602094850194016110fc565b5080945050505050925092905056fea2646970667358221220392d1f98427e115da35fb42135dcbab39c81d38fa3079a8b98ac9d488ba0c1f764736f6c634300081a0033",qf={},jf={},R0={_format:kf,contractName:Sf,sourceName:Gf,abi:Df,bytecode:Uf,deployedBytecode:Vf,linkReferences:qf,deployedLinkReferences:jf},Wf="hh-sol-artifact-1",Zf="SimpleDenyList",Kf="contracts/allowlists/SimpleDenyList.sol",Yf=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user_",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isAllowed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"users_",type:"address[]"},{internalType:"bool[]",name:"denied_",type:"bool[]"}],name:"setDenied",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],Jf="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611161806100855f395ff3fe608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Qf="0x608060405260043610610183575f3560e01c806354d1f13d116100d1578063e3f756de1161007c578063f2fde38b11610057578063f2fde38b14610446578063fe9fbb8014610459578063fee81cf414610478575f80fd5b8063e3f756de146103d8578063ec87621c1461041f578063f04e283e14610433575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610362578063be4994f81461039a578063dcc21361146103b9575f80fd5b806354d1f13d1461033e578063715018a61461034657806375b238fc1461034e575f80fd5b806328d6183b11610131578063439fab911161010c578063439fab91146102d75780634a4ee7b1146102f6578063514e62fc14610309575f80fd5b806328d6183b1461023f5780632de94807146102795780634359d28a146102b8575f80fd5b80631c10893f116101615780631c10893f146101ef5780631cd64df4146102025780632569296214610237575f80fd5b806301ffc9a714610187578063141973b0146101bb578063183a4f6e146101dc575b5f80fd5b348015610192575f80fd5b506101a66101a1366004610d5f565b6104a9565b60405190151581526020015b60405180910390f35b3480156101c6575f80fd5b506101da6101d5366004610ded565b610504565b005b6101da6101ea366004610e59565b610637565b6101da6101fd366004610ea1565b610644565b34801561020d575f80fd5b506101a661021c366004610ea1565b638b78c6d8600c9081525f9290925260209091205481161490565b6101da61065a565b34801561024a575f80fd5b506040517f3d30a22c0000000000000000000000000000000000000000000000000000000081526020016101b2565b348015610284575f80fd5b506102aa610293366004610ecb565b638b78c6d8600c9081525f91909152602090205490565b6040519081526020016101b2565b3480156102c3575f80fd5b506101da6102d2366004610ded565b6106a7565b3480156102e2575f80fd5b506101da6102f1366004610f24565b6107a1565b6101da610304366004610ea1565b6108d0565b348015610314575f80fd5b506101a6610323366004610ea1565b638b78c6d8600c9081525f9290925260209091205416151590565b6101da6108e2565b6101da61091b565b348015610359575f80fd5b506102aa600281565b34801561036d575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b3480156103a5575f80fd5b506101da6103b4366004610ded565b61092e565b3480156103c4575f80fd5b506101da6103d3366004610ded565b6109cc565b3480156103e3575f80fd5b506101a66103f2366004610f63565b505073ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff161590565b34801561042a575f80fd5b506102aa600181565b6101da610441366004610ecb565b610a6a565b6101da610454366004610ecb565b610aa4565b348015610464575f80fd5b506101a6610473366004610ecb565b610aca565b348015610483575f80fd5b506102aa610492366004610ecb565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f3d30a22c0000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610b29565b92915050565b61050d33610aca565b610543576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82811461057c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156106305782828281811061059857610598610fb4565b90506020020160208101906105ad9190610fe1565b5f808787858181106105c1576105c1610fb4565b90506020020160208101906105d69190610ecb565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161057e565b5050505050565b6106413382610b7e565b50565b61064c610b89565b6106568282610ba3565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026106b281610baf565b8382146106eb576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799575f84848381811061070857610708610fb4565b905060200201602081019061071d9190610fe1565b905080151560010361075f5761075a87878481811061073e5761073e610fb4565b90506020020160208101906107539190610ecb565b6001610ba3565b610790565b61079087878481811061077457610774610fb4565b90506020020160208101906107899190610ecb565b6001610b7e565b506001016106ed565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156107f25760018160011c14303b106107e95763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f806108018486018661102d565b9150915061080e82610be0565b5f5b81518110156108935760015f8084848151811061082f5761082f610fb4565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610810565b50505080156108cb576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6108d8610b89565b6106568282610b7e565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610923610b89565b61092c5f610c28565b565b600261093981610baf565b838214610972576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610799576109c486868381811061099157610991610fb4565b90506020020160208101906109a69190610ecb565b8585848181106109b8576109b8610fb4565b90506020020135610ba3565b600101610974565b60026109d781610baf565b838214610a10576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561079957610a62868683818110610a2f57610a2f610fb4565b9050602002016020810190610a449190610ecb565b858584818110610a5657610a56610fb4565b90506020020135610b7e565b600101610a12565b610a72610b89565b63389a75e1600c52805f526020600c208054421115610a9857636f5e88185f526004601cfd5b5f905561064181610c28565b610aac610b89565b8060601b610ac157637448fbae5f526004601cfd5b61064181610c28565b5f8173ffffffffffffffffffffffffffffffffffffffff16610aef638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806104fe5750638b78c6d8600c9081525f839052602090205460031615156104fe565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe2089f790000000000000000000000000000000000000000000000000000000014806104fe57506104fe82610c72565b61065682825f610d08565b638b78c6d81954331461092c576382b429005f526004601cfd5b61065682826001610d08565b638b78c6d81954331461064157638b78c6d8600c52335f52806020600c205416610641576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104fe57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104fe565b638b78c6d8600c52825f526020600c20805483811783610d29575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215610d6f575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610d9e575f80fd5b9392505050565b5f8083601f840112610db5575f80fd5b50813567ffffffffffffffff811115610dcc575f80fd5b6020830191508360208260051b8501011115610de6575f80fd5b9250929050565b5f805f8060408587031215610e00575f80fd5b843567ffffffffffffffff811115610e16575f80fd5b610e2287828801610da5565b909550935050602085013567ffffffffffffffff811115610e41575f80fd5b610e4d87828801610da5565b95989497509550505050565b5f60208284031215610e69575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610641575f80fd5b8035610e9c81610e70565b919050565b5f8060408385031215610eb2575f80fd5b8235610ebd81610e70565b946020939093013593505050565b5f60208284031215610edb575f80fd5b8135610d9e81610e70565b5f8083601f840112610ef6575f80fd5b50813567ffffffffffffffff811115610f0d575f80fd5b602083019150836020828501011115610de6575f80fd5b5f8060208385031215610f35575f80fd5b823567ffffffffffffffff811115610f4b575f80fd5b610f5785828601610ee6565b90969095509350505050565b5f805f60408486031215610f75575f80fd5b8335610f8081610e70565b9250602084013567ffffffffffffffff811115610f9b575f80fd5b610fa786828701610ee6565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215610ff1575f80fd5b81358015158114610d9e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f806040838503121561103e575f80fd5b823561104981610e70565b9150602083013567ffffffffffffffff811115611064575f80fd5b8301601f81018513611074575f80fd5b803567ffffffffffffffff81111561108e5761108e611000565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156110d9576110d9611000565b6040529182526020818401810192908101888411156110f6575f80fd5b6020850194505b8385101561111c5761110e85610e91565b8152602094850194016110fd565b5080945050505050925092905056fea2646970667358221220693fef5ebd345c6186dd2eca2c237bba8f7f63fbc241dc656400c725c22ef67f64736f6c634300081a0033",Xf={},f1={},O0={_format:Wf,contractName:Zf,sourceName:Kf,abi:Yf,bytecode:Jf,deployedBytecode:Qf,linkReferences:Xf,deployedLinkReferences:f1},e1="hh-sol-artifact-1",b1="ManagedBudget",a1="contracts/budgets/ManagedBudget.sol",t1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],n1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612ba6806100855f395ff3fe608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",d1="0x608060405260043610610252575f3560e01c8063715018a611610137578063ec87621c116100af578063f8724aba1161007e578063fa4ca9b111610063578063fa4ca9b11461076e578063fe9fbb801461078d578063fee81cf4146107ac57610259565b8063f8724aba14610730578063f9a802c31461074f57610259565b8063ec87621c146106b1578063f04e283e146106c5578063f23a6e61146106d8578063f2fde38b1461071d57610259565b8063b300579311610106578063be4994f8116100eb578063be4994f814610654578063d2514e8414610673578063dcc213611461069257610259565b8063b3005793146105c4578063bc197c811461060d57610259565b8063715018a61461052257806375b238fc1461052a578063774c33ab1461053e5780638da5cb5b1461058c57610259565b8063439fab91116101ca578063514e62fc11610199578063578bcf351161017e578063578bcf35146104af5780635aef467a146104f057806361400c991461050357610259565b8063514e62fc1461047257806354d1f13d146104a757610259565b8063439fab9114610400578063451cc1911461041f578063474f5a44146104405780634a4ee7b11461045f57610259565b80631cd64df41161022157806328d6183b1161020657806328d6183b146103515780632de94807146103b05780634359d28a146103e157610259565b80631cd64df414610314578063256929621461034957610259565b806301ffc9a71461028b57806310098ad5146102bf578063183a4f6e146102ec5780631c10893f1461030157610259565b3661025957005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b348015610296575f80fd5b506102aa6102a53660046120a4565b6107dd565b60405190151581526020015b60405180910390f35b3480156102ca575f80fd5b506102de6102d9366004612104565b6108d0565b6040519081526020016102b6565b6102ff6102fa36600461211f565b610919565b005b6102ff61030f366004612136565b610926565b34801561031f575f80fd5b506102aa61032e366004612136565b638b78c6d8600c9081525f9290925260209091205481161490565b6102ff61093c565b34801561035c575f80fd5b507f5fbfaa4e000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016102b6565b3480156103bb575f80fd5b506102de6103ca366004612104565b638b78c6d8600c9081525f91909152602090205490565b3480156103ec575f80fd5b506102ff6103fb3660046121a8565b610989565b34801561040b575f80fd5b506102ff61041a366004612252565b610a83565b34801561042a575f80fd5b506102de610439366004612252565b5f92915050565b34801561044b575f80fd5b506102de61045a366004612252565b610b87565b6102ff61046d366004612136565b610d4a565b34801561047d575f80fd5b506102aa61048c366004612136565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ff610d5c565b3480156104ba575f80fd5b506102de6104c9366004612104565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b6102aa6104fe366004612252565b610d95565b34801561050e575f80fd5b506102aa61051d366004612291565b6110f5565b6102ff61113c565b348015610535575f80fd5b506102de600281565b348015610549575f80fd5b506102de610558366004612136565b73ffffffffffffffffffffffffffffffffffffffff919091165f908152600160209081526040808320938352929052205490565b348015610597575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102b6565b3480156105cf575f80fd5b506105e36105de3660046122c4565b61114f565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102b6565b348015610618575f80fd5b5061037f610627366004612326565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561065f575f80fd5b506102ff61066e3660046121a8565b6112e4565b34801561067e575f80fd5b506102de61068d366004612104565b611382565b34801561069d575f80fd5b506102ff6106ac3660046121a8565b6113ba565b3480156106bc575f80fd5b506102de600181565b6102ff6106d3366004612104565b611458565b3480156106e3575f80fd5b5061037f6106f23660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102ff61072b366004612104565b611492565b34801561073b575f80fd5b506102de61074a366004612136565b6114b8565b34801561075a575f80fd5b506102de610769366004612136565b611552565b348015610779575f80fd5b506102aa610788366004612252565b611609565b348015610798575f80fd5b506102aa6107a7366004612104565b6118e1565b3480156107b7575f80fd5b506102de6107c6366004612104565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e00000000000000000000000000000000000000000000000000000000148061086f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806108bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b806108ca57506108ca82611940565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff8216156109125761090d73ffffffffffffffffffffffffffffffffffffffff831630611995565b6108ca565b4792915050565b61092333826119c8565b50565b61092e6119d3565b61093882826119ed565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610994816119f9565b8382146109cd576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b575f8484838181106109ea576109ea612460565b90506020020160208101906109ff919061248d565b9050801515600103610a4157610a3c878784818110610a2057610a20612460565b9050602002016020810190610a359190612104565b60016119ed565b610a72565b610a72878784818110610a5657610a56612460565b9050602002016020810190610a6b9190612104565b60016119c8565b506001016109cf565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610ad45760018160011c14303b10610acb5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610ae283850185612601565b9050610af0815f0151611a2a565b5f5b816020015151811015610b4b57610b4382602001518281518110610b1857610b18612460565b602002602001015183604001518381518110610b3657610b36612460565b6020026020010151611a72565b600101610af2565b50508015610b82576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f6002610b93816119f9565b5f610ba084860186612750565b90505f8082516002811115610bb757610bb7612836565b1480610bd55750600182516002811115610bd357610bd3612836565b145b15610c2c575f8260600151806020019051810190610bf39190612863565b602084015160408501518251929350610c249215610c12578351611ab3565b610c1f86602001516108d0565b611ab3565b519050610d3f565b600282516002811115610c4157610c41612836565b03610d36575f8260600151806020019051810190610c5f91906128a5565b9050610d2b83602001518460400151835f015184602001515f14610c87578460200151610d21565b602087015185516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa158015610cfd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d219190612963565b8560400151611c71565b602001519050610d3f565b9250610d439050565b9250505b5092915050565b610d526119d3565b61093882826119c8565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610da383850185612750565b90505f81516002811115610db957610db9612836565b03610e44575f8160600151806020019051810190610dd79190612863565b80519091503414610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b506110eb565b600181516002811115610e5957610e59612836565b03610f2d575f8160600151806020019051810190610e779190612863565b604083015181516020850151929350610ea99273ffffffffffffffffffffffffffffffffffffffff1691903090611eb3565b80516020830151610ed09073ffffffffffffffffffffffffffffffffffffffff1630611995565b1015610e3e57602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b600281516002811115610f4257610f42612836565b036110e2575f8160600151806020019051810190610f6091906128a5565b9050816020015173ffffffffffffffffffffffffffffffffffffffff1663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b8152600401610fb69594939291906129c6565b5f604051808303815f87803b158015610fcd575f80fd5b505af1158015610fdf573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481019190915291925073ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa15801561105e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110829190612963565b1015610e3e57602080830151908201516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610e35565b5f9150506108ca565b5060019392505050565b5f805b828110156110eb5761112784848381811061111557611115612460565b90506020028101906107889190612a27565b611134575f9150506108ca565b6001016110f8565b6111446119d3565b61114d5f611f0b565b565b5f8061115a336118e1565b611190576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a92909150819073ffffffffffffffffffffffffffffffffffffffff84169063dd98558c90611228908790602001612a88565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b815260040161125793929190612aca565b60408051808303815f875af1158015611272573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112969190612aee565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120805493955091935084926112cf908490612b4a565b90915550919b909a5098505050505050505050565b60026112ef816119f9565b838214611328576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761137a86868381811061134757611347612460565b905060200201602081019061135c9190612104565b85858481811061136e5761136e612460565b905060200201356119ed565b60010161132a565b73ffffffffffffffffffffffffffffffffffffffff81165f908152602081905260408120546113b0836108d0565b6108ca9190612b5d565b60026113c5816119f9565b8382146113fe576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610a7b5761145086868381811061141d5761141d612460565b90506020020160208101906114329190612104565b85858481811061144457611444612460565b905060200201356119c8565b600101611400565b6114606119d3565b63389a75e1600c52805f526020600c20805442111561148657636f5e88185f526004601cfd5b5f905561092381611f0b565b61149a6119d3565b8060601b6114af57637448fbae5f526004601cfd5b61092381611f0b565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169062fdd58e90604401602060405180830381865afa158015611527573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190612963565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82165f8181526001602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa1580156115db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ff9190612963565b61154b9190612b5d565b5f611613336118e1565b611649576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61165683850185612750565b905060018151600281111561166d5761166d612836565b148061168a57505f8151600281111561168857611688612836565b145b15611780575f81606001518060200190518101906116a89190612863565b90505f6116b883602001516108d0565b905080825f0151111561172357602083015182516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b815160208085015173ffffffffffffffffffffffffffffffffffffffff165f9081529081905260408120805490919061175d908490612b5d565b9091555050602083015160408401518351611779929190611ab3565b50506110eb565b60028151600281111561179557611795612836565b036110e2575f81606001518060200190518101906117b391906128a5565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f9173ffffffffffffffffffffffffffffffffffffffff9091169062fdd58e90604401602060405180830381865afa15801561182e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118529190612963565b905080826020015111156118c157602080840151908301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482018390526044820152606401610e35565b61177983602001518460400151845f015185602001518660400151611c71565b5f8173ffffffffffffffffffffffffffffffffffffffff16611906638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806108ca5750638b78c6d8600c9081525f839052602090205460031615156108ca565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806108ca57506108ca82611f55565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61093882825f611feb565b638b78c6d81954331461114d576382b429005f526004601cfd5b61093882826001611feb565b638b78c6d81954331461092357638b78c6d8600c52335f52806020600c205416610923576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd212685403611ad15763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8216611b51576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610e35565b611b5a836108d0565b811115611bc25782611b6b846108d0565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff8316611bec57611be78282612042565b611c0d565b611c0d73ffffffffffffffffffffffffffffffffffffffff8416838361205b565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd212685403611c8f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff8416611d0f576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301528516602482015260448101839052606401610e35565b611d1985846114b8565b821115611d825784611d2b86856114b8565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101839052606401610e35565b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020908152604080832086845290915281208054849290611dc1908490612b5d565b90915550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063f242432a90611e2090309088908890889088906004016129c6565b5f604051808303815f87803b158015611e37575f80fd5b505af1158015611e49573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f51141716611efe57637939f4245f526004601cfd5b5f60605260405250505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806108ca57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146108ca565b638b78c6d8600c52825f526020600c2080548381178361200c575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109385763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f5114171661209b576390b8ec185f526004601cfd5b5f603452505050565b5f602082840312156120b4575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461154b575f80fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610923575f80fd5b5f60208284031215612114575f80fd5b813561154b816120e3565b5f6020828403121561212f575f80fd5b5035919050565b5f8060408385031215612147575f80fd5b8235612152816120e3565b946020939093013593505050565b5f8083601f840112612170575f80fd5b50813567ffffffffffffffff811115612187575f80fd5b6020830191508360208260051b85010111156121a1575f80fd5b9250929050565b5f805f80604085870312156121bb575f80fd5b843567ffffffffffffffff8111156121d1575f80fd5b6121dd87828801612160565b909550935050602085013567ffffffffffffffff8111156121fc575f80fd5b61220887828801612160565b95989497509550505050565b5f8083601f840112612224575f80fd5b50813567ffffffffffffffff81111561223b575f80fd5b6020830191508360208285010111156121a1575f80fd5b5f8060208385031215612263575f80fd5b823567ffffffffffffffff811115612279575f80fd5b61228585828601612214565b90969095509350505050565b5f80602083850312156122a2575f80fd5b823567ffffffffffffffff8111156122b8575f80fd5b61228585828601612160565b5f805f805f608086880312156122d8575f80fd5b85356122e3816120e3565b9450602086013567ffffffffffffffff8111156122fe575f80fd5b61230a88828901612214565b9699909850959660408101359660609091013595509350505050565b5f805f805f805f8060a0898b03121561233d575f80fd5b8835612348816120e3565b97506020890135612358816120e3565b9650604089013567ffffffffffffffff811115612373575f80fd5b61237f8b828c01612160565b909750955050606089013567ffffffffffffffff81111561239e575f80fd5b6123aa8b828c01612160565b909550935050608089013567ffffffffffffffff8111156123c9575f80fd5b6123d58b828c01612214565b999c989b5096995094979396929594505050565b5f805f805f8060a087890312156123fe575f80fd5b8635612409816120e3565b95506020870135612419816120e3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612442575f80fd5b61244e89828a01612214565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020828403121561249d575f80fd5b8135801515811461154b575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156124fc576124fc6124ac565b60405290565b6040516080810167ffffffffffffffff811182821017156124fc576124fc6124ac565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561256c5761256c6124ac565b604052919050565b5f67ffffffffffffffff82111561258d5761258d6124ac565b5060051b60200190565b5f82601f8301126125a6575f80fd5b81356125b96125b482612574565b612525565b8082825260208201915060208360051b8601019250858311156125da575f80fd5b602085015b838110156125f75780358352602092830192016125df565b5095945050505050565b5f60208284031215612611575f80fd5b813567ffffffffffffffff811115612627575f80fd5b820160608185031215612638575f80fd5b6126406124d9565b813561264b816120e3565b8152602082013567ffffffffffffffff811115612666575f80fd5b8201601f81018613612676575f80fd5b80356126846125b482612574565b8082825260208201915060208360051b8501019250888311156126a5575f80fd5b6020840193505b828410156126d05783356126bf816120e3565b8252602093840193909101906126ac565b6020850152505050604082013567ffffffffffffffff8111156126f1575f80fd5b6126fd86828501612597565b604083015250949350505050565b5f67ffffffffffffffff821115612724576127246124ac565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f60208284031215612760575f80fd5b813567ffffffffffffffff811115612776575f80fd5b820160808185031215612787575f80fd5b61278f612502565b81356003811061279d575f80fd5b815260208201356127ad816120e3565b602082015260408201356127c0816120e3565b6040820152606082013567ffffffffffffffff8111156127de575f80fd5b80830192505084601f8301126127f2575f80fd5b81356128006125b48261270b565b818152866020838601011115612814575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015612874575f80fd5b506040516020810167ffffffffffffffff81118282101715612898576128986124ac565b6040529151825250919050565b5f602082840312156128b5575f80fd5b815167ffffffffffffffff8111156128cb575f80fd5b8201606081850312156128dc575f80fd5b6128e46124d9565b8151815260208083015190820152604082015167ffffffffffffffff81111561290b575f80fd5b80830192505084601f83011261291f575f80fd5b815161292d6125b48261270b565b818152866020838601011115612941575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f60208284031215612973575f80fd5b5051919050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f612a1c60a083018461297a565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612a5a575f80fd5b83018035915067ffffffffffffffff821115612a74575f80fd5b6020019150368190038213156121a1575f80fd5b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612ac2606084018261297a565b949350505050565b606081525f612adc606083018661297a565b60208301949094525060400152919050565b5f8060408385031215612aff575f80fd5b82516020840151909250612b12816120e3565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156108ca576108ca612b1d565b808201808211156108ca576108ca612b1d56fea26469706673582212200609e7c0419216f3ee5f34117a2ce4c02422b031a1d7065e2621834a487df80064736f6c634300081a0033",c1={},i1={},C0={_format:e1,contractName:b1,sourceName:a1,abi:t1,bytecode:n1,deployedBytecode:d1,linkReferences:c1,deployedLinkReferences:i1},s1="hh-sol-artifact-1",r1="ManagedBudgetWithFees",p1="contracts/budgets/ManagedBudgetWithFees.sol",o1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"ZeroBalancePayout",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"questId",type:"uint256"},{indexed:!0,internalType:"uint256",name:"incentiveId",type:"uint256"},{indexed:!0,internalType:"address",name:"manager",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ManagementFeePaid",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newFee",type:"uint256"}],name:"ManagementFeeSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTargetAndPayFee",outputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"asset",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesDisbursed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"incentiveFeesMax",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"managementFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"payManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"reservedFunds",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"fee_",type:"uint256"}],name:"setManagementFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"topupIncentive",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"},{internalType:"uint256",name:"tokenId_",type:"uint256"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],u1="0x6080604052348015600e575f80fd5b506015601f565b601b601f565b607e565b63409feecd1980546001811615603c5763f92ee8a95f526004601cfd5b8160c01c808260011c146079578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6137998061008b5f395ff3fe6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",y1="0x6080604052600436106102ea575f3560e01c806375b238fc11610183578063dcc21361116100d5578063f8724aba11610089578063fe56e23211610063578063fe56e232146108e4578063fe9fbb8014610903578063fee81cf414610922576102f1565b8063f8724aba14610887578063f9a802c3146108a6578063fa4ca9b1146108c5576102f1565b8063f04e283e116100ba578063f04e283e1461081c578063f23a6e611461082f578063f2fde38b14610874576102f1565b8063dcc21361146107e9578063ec87621c14610808576102f1565b8063b300579311610137578063c6004a3a11610111578063c6004a3a14610774578063d2514e841461079f578063d8c12d22146107be576102f1565b8063b3005793146106ef578063bc197c811461070e578063be4994f814610755576102f1565b80638da5cb5b116101685780638da5cb5b14610690578063929470eb146106bb578063a6f7f5d6146106da576102f1565b806375b238fc1461063b578063774c33ab1461064f576102f1565b8063439fab911161023c578063514e62fc116101f05780635aef467a116101ca5780635aef467a1461060157806361400c9914610614578063715018a614610633576102f1565b8063514e62fc1461059057806354d1f13d146105c5578063578bcf35146105cd576102f1565b8063451cc19111610221578063451cc1911461053d578063474f5a441461055e5780634a4ee7b11461057d576102f1565b8063439fab91146104ff57806343cc96e11461051e576102f1565b80631c10893f1161029e57806328d6183b1161027857806328d6183b146104505780632de94807146104af5780634359d28a146104e0576102f1565b80631c10893f146104005780631cd64df4146104135780632569296214610448576102f1565b806314135ce0116102cf57806314135ce014610384578063183a4f6e146103af578063185832a3146103c4576102f1565b806301ffc9a71461032357806310098ad514610357576102f1565b366102f157005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561032e575f80fd5b5061034261033d3660046129b4565b610953565b60405190151581526020015b60405180910390f35b348015610362575f80fd5b50610376610371366004612a07565b610963565b60405190815260200161034e565b34801561038f575f80fd5b5061037661039e366004612a07565b60046020525f908152604090205481565b6103c26103bd366004612a22565b61098e565b005b3480156103cf575f80fd5b506103e36103de366004612a7e565b61099b565b604080519283526001600160a01b0390911660208301520161034e565b6103c261040e366004612ae0565b6109c3565b34801561041e575f80fd5b5061034261042d366004612ae0565b638b78c6d8600c9081525f9290925260209091205481161490565b6103c26109d9565b34801561045b575f80fd5b507fde98bbf0000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161034e565b3480156104ba575f80fd5b506103766104c9366004612a07565b638b78c6d8600c9081525f91909152602090205490565b3480156104eb575f80fd5b506103c26104fa366004612b4b565b610a26565b34801561050a575f80fd5b506103c2610519366004612bb7565b610b20565b348015610529575f80fd5b506103c2610538366004612bf6565b610d2a565b348015610548575f80fd5b50610376610557366004612bb7565b5f92915050565b348015610569575f80fd5b50610376610578366004612bb7565b6110b3565b6103c261058b366004612ae0565b611269565b34801561059b575f80fd5b506103426105aa366004612ae0565b638b78c6d8600c9081525f9290925260209091205416151590565b6103c261127b565b3480156105d8575f80fd5b506103766105e7366004612a07565b6001600160a01b03165f9081526005602052604090205490565b61034261060f366004612bb7565b6112b4565b34801561061f575f80fd5b5061034261062e366004612c16565b6115b4565b6103c26115fb565b348015610646575f80fd5b50610376600281565b34801561065a575f80fd5b50610376610669366004612ae0565b6001600160a01b03919091165f908152600660209081526040808320938352929052205490565b34801561069b575f80fd5b50638b78c6d819546040516001600160a01b03909116815260200161034e565b3480156106c6575f80fd5b506103426106d5366004612c49565b61160e565b3480156106e5575f80fd5b5061037660015481565b3480156106fa575f80fd5b506103e3610709366004612a7e565b6116d4565b348015610719575f80fd5b5061047e610728366004612cae565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610760575f80fd5b506103c261076f366004612b4b565b611842565b34801561077f575f80fd5b5061037661078e366004612a07565b60036020525f908152604090205481565b3480156107aa575f80fd5b506103766107b9366004612a07565b6118e0565b3480156107c9575f80fd5b506103766107d8366004612a07565b60026020525f908152604090205481565b3480156107f4575f80fd5b506103c2610803366004612b4b565b611920565b348015610813575f80fd5b50610376600181565b6103c261082a366004612a07565b6119be565b34801561083a575f80fd5b5061047e610849366004612d71565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6103c2610882366004612a07565b6119f8565b348015610892575f80fd5b506103766108a1366004612ae0565b611a1e565b3480156108b1575f80fd5b506103766108c0366004612ae0565b611aab565b3480156108d0575f80fd5b506103426108df366004612bb7565b611b55565b3480156108ef575f80fd5b506103c26108fe366004612a22565b611e9d565b34801561090e575f80fd5b5061034261091d366004612a07565b611f50565b34801561092d575f80fd5b5061037661093c366004612a07565b63389a75e1600c9081525f91909152602090205490565b5f61095d82611f95565b92915050565b6001600160a01b0381165f9081526004602052604081205461098483611fea565b61095d9190612e15565b6109983382612019565b50565b5f806109aa87878787876116d4565b90925090506109b98484610d2a565b9550959350505050565b6109cb612024565b6109d5828261203e565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6002610a318161204a565b838214610a6a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18575f848483818110610a8757610a87612e28565b9050602002016020810190610a9c9190612e62565b9050801515600103610ade57610ad9878784818110610abd57610abd612e28565b9050602002016020810190610ad29190612a07565b600161203e565b610b0f565b610b0f878784818110610af357610af3612e28565b9050602002016020810190610b089190612a07565b6001612019565b50600101610a6c565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610b715760018160011c14303b10610b685763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610b7f83850185612ff6565b9050610b8d815f015161207b565b5f5b816020015151811015610be857610be082602001518281518110610bb557610bb5612e28565b602002602001015183604001518381518110610bd357610bd3612e28565b60200260200101516120b6565b600101610b8f565b508060200151515f03610c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f20636f726520636f6e74726163742073657400000000000000000000000060448201526064015b60405180910390fd5b80602001515f81518110610c7257610c72612e28565b6020908102919091018101515f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055606082015160018190556040519081527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd0978910160405180910390a1508015610d25576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f80546040517f13c8e2de000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906313c8e2de906024015f60405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610dce9190810190613197565b90505f81608001518381518110610de757610de7612e28565b60209081029190910101516040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f7cc1d5bb0000000000000000000000000000000000000000000000000000000060048201529091506001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610e70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e949190613274565b15610f6e575f816001600160a01b031663dcc59b6f6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610ed7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610efb919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610f3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5f919061328f565b9050610b1886868685856120f7565b6040517f01ffc9a70000000000000000000000000000000000000000000000000000000081527f903181110000000000000000000000000000000000000000000000000000000060048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190613274565b156102f1575f816001600160a01b031663d54ad2a16040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611050573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611074919061328f565b90505f826001600160a01b031663a4d66daf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f3b573d5f803e3d5ffd5b5f60026110bf8161204a565b5f6110cc848601866132eb565b90505f80825160028111156110e3576110e36133d1565b148061110157506001825160028111156110ff576110ff6133d1565b145b15611158575f826060015180602001905181019061111f91906133fe565b602084015160408501518251929350611150921561113e5783516122fc565b61114b8660200151610963565b6122fc565b51905061125e565b60028251600281111561116d5761116d6133d1565b03611255575f826060015180602001905181019061118b9190613440565b905061124a83602001518460400151835f015184602001515f146111b3578460200151611240565b602087015185516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091526001600160a01b039091169062fdd58e90604401602060405180830381865afa15801561121c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611240919061328f565b856040015161246c565b60200151905061125e565b92506112629050565b9250505b5092915050565b611271612024565b6109d58282612019565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f806112c2838501856132eb565b90505f815160028111156112d8576112d86133d1565b03611351575f81606001518060200190518101906112f691906133fe565b8051909150341461134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b506115aa565b600181516002811115611366576113666133d1565b03611413575f816060015180602001905181019061138491906133fe565b6040830151815160208501519293506113a9926001600160a01b031691903090612660565b805160208301516113c3906001600160a01b0316306126b8565b101561134b57602082015181516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b600281516002811115611428576114286133d1565b036115a1575f81606001518060200190518101906114469190613440565b905081602001516001600160a01b031663f242432a836040015130845f0151856020015186604001516040518663ffffffff1660e01b815260040161148f95949392919061354a565b5f604051808303815f87803b1580156114a6575f80fd5b505af11580156114b8573d5f803e3d5ffd5b5050506020808301519084015183516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192506001600160a01b03169062fdd58e90604401602060405180830381865afa15801561152a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154e919061328f565b101561134b57602080830151908201516040517fcece04c50000000000000000000000000000000000000000000000000000000081526001600160a01b0390921660048301526024820152604401610c53565b5f91505061095d565b5060019392505050565b5f805b828110156115aa576115e68484838181106115d4576115d4612e28565b90506020028101906108df9190613591565b6115f3575f91505061095d565b6001016115b7565b611603612024565b61160c5f6126eb565b565b5f61161833611f50565b61164e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f1fa2acdc0000000000000000000000000000000000000000000000000000000081526001600160a01b03871690631fa2acdc9061169b90889088908890889030906004016135f2565b5f604051808303815f87803b1580156116b2575f80fd5b505af11580156116c4573d5f803e3d5ffd5b5060019998505050505050505050565b5f806116df33611f50565b611715576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6040518060400160405280306001600160a01b0316815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052509390945250506040519293508a9290915081906001600160a01b0384169063dd98558c9061179390879060200161365e565b6040516020818303038152906040528a8a6040518463ffffffff1660e01b81526004016117c293929190613693565b60408051808303815f875af11580156117dd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061180191906136b7565b6001600160a01b0381165f9081526005602052604081208054939550919350849261182d908490612e15565b90915550919b909a5098505050505050505050565b600261184d8161204a565b838214611886576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576118d88686838181106118a5576118a5612e28565b90506020020160208101906118ba9190612a07565b8585848181106118cc576118cc612e28565b9050602002013561203e565b600101611888565b6001600160a01b0381165f90815260046020908152604080832054600590925282205461190c84610963565b61191691906136e6565b61095d91906136e6565b600261192b8161204a565b838214611964576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b18576119b686868381811061198357611983612e28565b90506020020160208101906119989190612a07565b8585848181106119aa576119aa612e28565b90506020020135612019565b600101611966565b6119c6612024565b63389a75e1600c52805f526020600c2080544211156119ec57636f5e88185f526004601cfd5b5f9055610998816126eb565b611a00612024565b8060601b611a1557637448fbae5f526004601cfd5b610998816126eb565b6040517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018290525f906001600160a01b0384169062fdd58e90604401602060405180830381865afa158015611a80573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aa4919061328f565b9392505050565b6001600160a01b0382165f8181526006602090815260408083208584529091528082205490517efdd58e000000000000000000000000000000000000000000000000000000008152306004820152602481018590529192909162fdd58e90604401602060405180830381865afa158015611b27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4b919061328f565b611aa491906136e6565b5f611b5f33611f50565b611b95576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ba2838501856132eb565b9050600181516002811115611bb957611bb96133d1565b1480611bd657505f81516002811115611bd457611bd46133d1565b145b15611d4f575f8160600151806020019051810190611bf491906133fe565b90505f612710600154835f0151611c0b91906136f9565b611c159190613710565b90505f611c258460200151610963565b90508082845f0151611c3791906136e6565b1115611c9c57602084015183518290611c519085906136e6565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b03909316600484015260248301919091526044820152606401610c53565b6040808501516001600160a01b03165f90815260026020529081208054849290611cc79084906136e6565b90915550506020808501516001600160a01b03165f9081526004909152604081208054849290611cf89084906136e6565b909155505082516020808601516001600160a01b03165f9081526005909152604081208054909190611d2b9084906136e6565b9091555050602084015160408501518451611d479291906122fc565b5050506115aa565b600281516002811115611d6457611d646133d1565b036115a1575f8160600151806020019051810190611d829190613440565b602083015181516040517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091529192505f916001600160a01b039091169062fdd58e90604401602060405180830381865afa158015611df0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e14919061328f565b90508082602001511115611e7657602080840151908301516040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482018390526044820152606401610c53565b611e9683602001518460400151845f01518560200151866040015161246c565b50506115aa565b6002611ea88161204a565b612710821115611f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665652063616e6e6f74206578636565642031303025000000000000000000006044820152606401610c53565b60018290556040518281527f74f254e69f1d1aa50fbf15b184112c15530415ac9f4b4bf2b75778c6befd09789060200160405180910390a15050565b5f816001600160a01b0316611f68638b78c6d8195490565b6001600160a01b0316148061095d5750638b78c6d8600c9081525f8390526020902054600316151561095d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fde98bbf000000000000000000000000000000000000000000000000000000000148061095d575061095d82612728565b5f6001600160a01b038216156120125761200d6001600160a01b038316306126b8565b61095d565b4792915050565b6109d582825f612815565b638b78c6d81954331461160c576382b429005f526004601cfd5b6109d582826001612815565b638b78c6d81954331461099857638b78c6d8600c52335f52806020600c205416610998576382b429005f526004601cfd5b6001600160a01b0316638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b5f8360800151858151811061210e5761210e612e28565b6020908102919091018101516001600160a01b0381165f908152600283526040808220546003909452812054919350818561214988866136f9565b6121539190613710565b61215d9190612e15565b905061216981836136e6565b6001600160a01b0385165f8181526003602090815260408083209490945583517f38d52e0f000000000000000000000000000000000000000000000000000000008152935191936338d52e0f92600480830193928290030181865afa1580156121d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f89190613748565b60e08901516001600160a01b0382165f908152600460205260408120805493945091928592919061222a908490612e15565b90915550505f839003612269576040517fb2e783cd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8461227484866136e6565b0361229f576001600160a01b0386165f90815260026020908152604080832083905560039091528120555b806001600160a01b03168a8c7ff44ff640e648077f3acc130c6ce75240070e8c40adc85b0feeeec28d9dd921b4866040516122dc91815260200190565b60405180910390a46122ef8282856122fc565b5050505050505050505050565b3068929eee149b4bd21268540361231a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b038216612380576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380851660048301528316602482015260448101829052606401610c53565b61238983610963565b8111156123e4578261239a84610963565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610c53565b6001600160a01b038316612401576123fc828261286c565b612415565b6124156001600160a01b0384168383612885565b604080516001600160a01b038481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b3068929eee149b4bd21268540361248a5763ab143c065f526004601cfd5b3068929eee149b4bd21268556001600160a01b0384166124f0576040517fbf182be80000000000000000000000000000000000000000000000000000000081526001600160a01b0380871660048301528516602482015260448101839052606401610c53565b6124fa8584611a1e565b821115612556578461250c8685611a1e565b6040517f5c54305e0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101839052606401610c53565b6001600160a01b0385165f908152600660209081526040808320868452909152812080548492906125889084906136e6565b90915550506040517ff242432a0000000000000000000000000000000000000000000000000000000081526001600160a01b0386169063f242432a906125da903090889088908890889060040161354a565b5f604051808303815f87803b1580156125f1575f80fd5b505af1158015612603573d5f803e3d5ffd5b5050604080516001600160a01b03888116825260208201879052891693507fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd4354292500160405180910390a23868929eee149b4bd21268555050505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166126ab57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5fbfaa4e0000000000000000000000000000000000000000000000000000000014806127ba57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061280657507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b8061095d575061095d826128ce565b638b78c6d8600c52825f526020600c20805483811783612836575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16109d55763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166128c5576390b8ec185f526004601cfd5b5f603452505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd700000000000000000000000000000000000000000000000000000000148061095d575061095d825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061095d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461095d565b5f602082840312156129c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611aa4575f80fd5b6001600160a01b0381168114610998575f80fd5b5f60208284031215612a17575f80fd5b8135611aa4816129f3565b5f60208284031215612a32575f80fd5b5035919050565b5f8083601f840112612a49575f80fd5b50813567ffffffffffffffff811115612a60575f80fd5b602083019150836020828501011115612a77575f80fd5b9250929050565b5f805f805f60808688031215612a92575f80fd5b8535612a9d816129f3565b9450602086013567ffffffffffffffff811115612ab8575f80fd5b612ac488828901612a39565b9699909850959660408101359660609091013595509350505050565b5f8060408385031215612af1575f80fd5b8235612afc816129f3565b946020939093013593505050565b5f8083601f840112612b1a575f80fd5b50813567ffffffffffffffff811115612b31575f80fd5b6020830191508360208260051b8501011115612a77575f80fd5b5f805f8060408587031215612b5e575f80fd5b843567ffffffffffffffff811115612b74575f80fd5b612b8087828801612b0a565b909550935050602085013567ffffffffffffffff811115612b9f575f80fd5b612bab87828801612b0a565b95989497509550505050565b5f8060208385031215612bc8575f80fd5b823567ffffffffffffffff811115612bde575f80fd5b612bea85828601612a39565b90969095509350505050565b5f8060408385031215612c07575f80fd5b50508035926020909101359150565b5f8060208385031215612c27575f80fd5b823567ffffffffffffffff811115612c3d575f80fd5b612bea85828601612b0a565b5f805f805f60808688031215612c5d575f80fd5b8535612c68816129f3565b94506020860135935060408601359250606086013567ffffffffffffffff811115612c91575f80fd5b612c9d88828901612a39565b969995985093965092949392505050565b5f805f805f805f8060a0898b031215612cc5575f80fd5b8835612cd0816129f3565b97506020890135612ce0816129f3565b9650604089013567ffffffffffffffff811115612cfb575f80fd5b612d078b828c01612b0a565b909750955050606089013567ffffffffffffffff811115612d26575f80fd5b612d328b828c01612b0a565b909550935050608089013567ffffffffffffffff811115612d51575f80fd5b612d5d8b828c01612a39565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215612d86575f80fd5b8635612d91816129f3565b95506020870135612da1816129f3565b94506040870135935060608701359250608087013567ffffffffffffffff811115612dca575f80fd5b612dd689828a01612a39565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561095d5761095d612de8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8015158114610998575f80fd5b5f60208284031215612e72575f80fd5b8135611aa481612e55565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b60405290565b604051610100810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b6040516060810167ffffffffffffffff81118282101715612ecd57612ecd612e7d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f6157612f61612e7d565b604052919050565b5f67ffffffffffffffff821115612f8257612f82612e7d565b5060051b60200190565b5f82601f830112612f9b575f80fd5b8135612fae612fa982612f69565b612f1a565b8082825260208201915060208360051b860101925085831115612fcf575f80fd5b602085015b83811015612fec578035835260209283019201612fd4565b5095945050505050565b5f60208284031215613006575f80fd5b813567ffffffffffffffff81111561301c575f80fd5b82016080818503121561302d575f80fd5b613035612eaa565b8135613040816129f3565b8152602082013567ffffffffffffffff81111561305b575f80fd5b8201601f8101861361306b575f80fd5b8035613079612fa982612f69565b8082825260208201915060208360051b85010192508883111561309a575f80fd5b6020840193505b828410156130c55783356130b4816129f3565b8252602093840193909101906130a1565b6020850152505050604082013567ffffffffffffffff8111156130e6575f80fd5b6130f286828501612f8c565b604083015250606091820135918101919091529392505050565b8051613117816129f3565b919050565b5f82601f83011261312b575f80fd5b8151613139612fa982612f69565b8082825260208201915060208360051b86010192508583111561315a575f80fd5b602085015b83811015612fec578051613172816129f3565b83526020928301920161315f565b805167ffffffffffffffff81168114613117575f80fd5b5f602082840312156131a7575f80fd5b815167ffffffffffffffff8111156131bd575f80fd5b820161010081850312156131cf575f80fd5b6131d7612ed3565b6131e08261310c565b81526131ee6020830161310c565b60208201526131ff6040830161310c565b60408201526132106060830161310c565b6060820152608082015167ffffffffffffffff81111561322e575f80fd5b61323a8682850161311c565b60808301525061324c60a08301613180565b60a082015260c0828101519082015261326760e0830161310c565b60e0820152949350505050565b5f60208284031215613284575f80fd5b8151611aa481612e55565b5f6020828403121561329f575f80fd5b5051919050565b5f67ffffffffffffffff8211156132bf576132bf612e7d565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f602082840312156132fb575f80fd5b813567ffffffffffffffff811115613311575f80fd5b820160808185031215613322575f80fd5b61332a612eaa565b813560038110613338575f80fd5b81526020820135613348816129f3565b6020820152604082013561335b816129f3565b6040820152606082013567ffffffffffffffff811115613379575f80fd5b80830192505084601f83011261338d575f80fd5b813561339b612fa9826132a6565b8181528660208386010111156133af575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f602082840312801561340f575f80fd5b506040516020810167ffffffffffffffff8111828210171561343357613433612e7d565b6040529151825250919050565b5f60208284031215613450575f80fd5b815167ffffffffffffffff811115613466575f80fd5b820160608185031215613477575f80fd5b61347f612ef7565b8151815260208083015190820152604082015167ffffffffffffffff8111156134a6575f80fd5b80830192505084601f8301126134ba575f80fd5b81516134c8612fa9826132a6565b8181528660208386010111156134dc575f80fd5b8160208501602083015e5f918101602001919091526040820152949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6001600160a01b03861681526001600160a01b038516602082015283604082015282606082015260a060808201525f61358660a08301846134fe565b979650505050505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135c4575f80fd5b83018035915067ffffffffffffffff8211156135de575f80fd5b602001915036819003821315612a77575f80fd5b85815284602082015260806040820152826080820152828460a08301375f60a084830101525f60a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011683010190506001600160a01b03831660608301529695505050505050565b602081526001600160a01b0382511660208201525f602083015160408084015261368b60608401826134fe565b949350505050565b606081525f6136a560608301866134fe565b60208301949094525060400152919050565b5f80604083850312156136c8575f80fd5b825160208401519092506136db816129f3565b809150509250929050565b8082018082111561095d5761095d612de8565b808202811582820484141761095d5761095d612de8565b5f82613743577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215613758575f80fd5b8151611aa4816129f356fea2646970667358221220dbd4f70bed9b922212a5c6bf33fbf9a035a23d8d6e2d872430cdd227c89ca9b664736f6c634300081a0033",l1={},m1={},_0={_format:s1,contractName:r1,sourceName:p1,abi:o1,bytecode:u1,deployedBytecode:y1,linkReferences:l1,deployedLinkReferences:m1},T1="hh-sol-artifact-1",h1="VestingBudget",w1="contracts/budgets/VestingBudget.sol",v1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidAllocation",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Reentrancy",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TransferFailed",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Distributed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"allocate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"available",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"},{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"}],name:"clawbackFromTarget",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"cliff",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"disburse",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes[]",name:"data_",type:"bytes[]"}],name:"disburseBatch",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"distributed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"duration",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[],name:"end",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"reconcile",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"start",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"asset_",type:"address"}],name:"total",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{stateMutability:"payable",type:"receive"}],g1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6121dd806100855f395ff3fe608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",M1="0x608060405260043610610237575f3560e01c8063578bcf3511610137578063d2514e84116100af578063f04e283e1161007e578063fa4ca9b111610063578063fa4ca9b1146106c0578063fe9fbb80146106df578063fee81cf4146106fe5761023e565b8063f04e283e1461069a578063f2fde38b146106ad5761023e565b8063d2514e8414610634578063dcc2136114610653578063ec87621c14610672578063efbe1c1c146106865761023e565b806375b238fc11610106578063b3005793116100eb578063b3005793146105ad578063be4994f8146105f6578063be9a6555146106155761023e565b806375b238fc146105615780638da5cb5b146105755761023e565b8063578bcf35146104e65780635aef467a1461052757806361400c991461053a578063715018a6146105595761023e565b806328d6183b116101ca578063451cc191116101995780634a4ee7b11161017e5780634a4ee7b114610496578063514e62fc146104a957806354d1f13d146104de5761023e565b8063451cc19114610456578063474f5a44146104775761023e565b806328d6183b146103ad5780632de94807146103e75780634359d28a14610418578063439fab91146104375761023e565b8063183a4f6e11610206578063183a4f6e146103485780631c10893f1461035d5780631cd64df41461037057806325692962146103a55761023e565b806301ffc9a7146102705780630fb5a6b4146102a457806310098ad5146102e857806313d033c0146103155761023e565b3661023e57005b6040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561027b575f80fd5b5061028f61028a36600461191a565b61072f565b60405190151581526020015b60405180910390f35b3480156102af575f80fd5b505f546102cf9068010000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b3480156102f3575f80fd5b5061030761030236600461197a565b61078a565b60405190815260200161029b565b348015610320575f80fd5b505f546102cf90700100000000000000000000000000000000900467ffffffffffffffff1681565b61035b610356366004611995565b6107c3565b005b61035b61036b3660046119ac565b6107d0565b34801561037b575f80fd5b5061028f61038a3660046119ac565b638b78c6d8600c9081525f9290925260209091205481161490565b61035b6107e6565b3480156103b8575f80fd5b506040517f64683da100000000000000000000000000000000000000000000000000000000815260200161029b565b3480156103f2575f80fd5b5061030761040136600461197a565b638b78c6d8600c9081525f91909152602090205490565b348015610423575f80fd5b5061035b610432366004611a1e565b610833565b348015610442575f80fd5b5061035b610451366004611ac8565b61092d565b348015610461575f80fd5b50610307610470366004611ac8565b5f92915050565b348015610482575f80fd5b50610307610491366004611ac8565b610aa9565b61035b6104a43660046119ac565b610b5c565b3480156104b4575f80fd5b5061028f6104c33660046119ac565b638b78c6d8600c9081525f9290925260209091205416151590565b61035b610b6e565b3480156104f1575f80fd5b5061030761050036600461197a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526001602052604090205490565b61028f610535366004611ac8565b610ba7565b348015610545575f80fd5b5061028f610554366004611b07565b610d52565b61035b610d99565b34801561056c575f80fd5b50610307600281565b348015610580575f80fd5b50638b78c6d8195460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b3480156105b8575f80fd5b506105cc6105c7366004611b3a565b610dac565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161029b565b348015610601575f80fd5b5061035b610610366004611a1e565b610efb565b348015610620575f80fd5b505f546102cf9067ffffffffffffffff1681565b34801561063f575f80fd5b5061030761064e36600461197a565b610f99565b34801561065e575f80fd5b5061035b61066d366004611a1e565b611018565b34801561067d575f80fd5b50610307600181565b348015610691575f80fd5b506103076110b6565b61035b6106a836600461197a565b6110ea565b61035b6106bb36600461197a565b611124565b3480156106cb575f80fd5b5061028f6106da366004611ac8565b61114a565b3480156106ea575f80fd5b5061028f6106f936600461197a565b611201565b348015610709575f80fd5b5061030761071836600461197a565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f64683da1000000000000000000000000000000000000000000000000000000001480610784575061078482611260565b92915050565b73ffffffffffffffffffffffffffffffffffffffff81165f908152600160205260408120546107b983426112b5565b6107849190611bc9565b6107cd3382611336565b50565b6107d8611341565b6107e2828261135b565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261083e81611367565b838214610877576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925575f84848381811061089457610894611bdc565b90506020020160208101906108a99190611c09565b90508015156001036108eb576108e68787848181106108ca576108ca611bdc565b90506020020160208101906108df919061197a565b600161135b565b61091c565b61091c87878481811061090057610900611bdc565b9050602002016020810190610915919061197a565b6001611336565b50600101610879565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561097e5760018160011c14303b106109755763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61098c83850185611d0c565b60408101515f80546060840151608085015167ffffffffffffffff908116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff92821668010000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909416919095161791909117169190911790558051909150610a2e90611398565b5f5b816020015151811015610a6d57610a6582602001518281518110610a5657610a56611bdc565b602002602001015160016113e0565b600101610a30565b50508015610aa4576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f610ab2611341565b5f610abf83850185611e39565b90505f8082516002811115610ad657610ad6611f5c565b1480610af45750600182516002811115610af257610af2611f5c565b145b15610b4b575f8260600151806020019051810190610b129190611f89565b805190915015610b23578051610b30565b610b30836020015161078a565b9150610b458360200151846040015184611421565b50610b54565b91506107849050565b949350505050565b610b64611341565b6107e28282611336565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f80610bb583850185611e39565b90505f81516002811115610bcb57610bcb611f5c565b03610c56575f8160600151806020019051810190610be99190611f89565b80519091503414610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044015b60405180910390fd5b50610d48565b600181516002811115610c6b57610c6b611f5c565b03610d3f575f8160600151806020019051810190610c899190611f89565b604083015181516020850151929350610cbb9273ffffffffffffffffffffffffffffffffffffffff1691903090611618565b80516020830151610ce29073ffffffffffffffffffffffffffffffffffffffff1630611670565b1015610c5057602082015181516040517fcece04c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401610c47565b5f915050610784565b5060019392505050565b5f805b82811015610d4857610d84848483818110610d7257610d72611bdc565b90506020028101906106da9190611fcb565b610d91575f915050610784565b600101610d55565b610da1611341565b610daa5f6116a3565b565b5f80610db733611201565b610ded576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff16815260200188888080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505091525060405190915073ffffffffffffffffffffffffffffffffffffffff89169063dd98558c90610e7e908490602001612078565b60405160208183030381529060405287876040518463ffffffff1660e01b8152600401610ead939291906120b2565b60408051808303815f875af1158015610ec8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eec91906120d6565b92509250509550959350505050565b6002610f0681611367565b838214610f3f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561092557610f91868683818110610f5e57610f5e611bdc565b9050602002016020810190610f73919061197a565b858584818110610f8557610f85611bdc565b9050602002013561135b565b600101610f41565b5f8073ffffffffffffffffffffffffffffffffffffffff831615610fdc57610fd773ffffffffffffffffffffffffffffffffffffffff841630611670565b610fde565b475b73ffffffffffffffffffffffffffffffffffffffff84165f90815260016020526040902054909150611011908290612105565b9392505050565b600261102381611367565b83821461105c576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610925576110ae86868381811061107b5761107b611bdc565b9050602002016020810190611090919061197a565b8585848181106110a2576110a2611bdc565b90506020020135611336565b60010161105e565b5f80546110db9067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff16905090565b6110f2611341565b63389a75e1600c52805f526020600c20805442111561111857636f5e88185f526004601cfd5b5f90556107cd816116a3565b61112c611341565b8060601b61114157637448fbae5f526004601cfd5b6107cd816116a3565b5f61115433611201565b61118a576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61119783850185611e39565b90506001815160028111156111ae576111ae611f5c565b14806111cb57505f815160028111156111c9576111c9611f5c565b145b15610d3f575f81606001518060200190518101906111e99190611f89565b9050610c5082602001518360400151835f0151611421565b5f8173ffffffffffffffffffffffffffffffffffffffff16611226638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107845750638b78c6d8600c9081525f83905260209020546003161515610784565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fe49cedd70000000000000000000000000000000000000000000000000000000014806107845750610784826116ed565b5f8073ffffffffffffffffffffffffffffffffffffffff8416156112f8576112f373ffffffffffffffffffffffffffffffffffffffff851630611670565b6112fa565b475b73ffffffffffffffffffffffffffffffffffffffff85165f90815260016020526040902054909150610b54906113309083612105565b84611783565b6107e282825f611861565b638b78c6d819543314610daa576382b429005f526004601cfd5b6107e282826001611861565b638b78c6d8195433146107cd57638b78c6d8600c52335f52806020600c2054166107cd576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b3068929eee149b4bd21268540361143f5763ab143c065f526004601cfd5b3068929eee149b4bd212685573ffffffffffffffffffffffffffffffffffffffff82166114bf576040517fbf182be800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260448101829052606401610c47565b6114c88361078a565b81111561153057826114d98461078a565b6040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260448101829052606401610c47565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604081208054839290611564908490612105565b909155505073ffffffffffffffffffffffffffffffffffffffff83166115935761158e82826118b8565b6115b4565b6115b473ffffffffffffffffffffffffffffffffffffffff841683836118d1565b6040805173ffffffffffffffffffffffffffffffffffffffff8481168252602082018490528516917fad4a9acf26d8bba7a8cf1a41160d59be042ee554578e256c98d2ab74cdd43542910160405180910390a23868929eee149b4bd2126855505050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661166357637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061078457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610784565b5f80546117b09067ffffffffffffffff700100000000000000000000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610156117d257505f610784565b5f546117f69067ffffffffffffffff68010000000000000000820481169116612118565b67ffffffffffffffff168267ffffffffffffffff1610611817575081610784565b5f5467ffffffffffffffff68010000000000000000820481169161183c911684612138565b6118509067ffffffffffffffff1685612158565b61185a919061216f565b9050610784565b638b78c6d8600c52825f526020600c20805483811783611882575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f385f3884865af16107e25763b12d13eb5f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611911576390b8ec185f526004601cfd5b5f603452505050565b5f6020828403121561192a575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611011575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146107cd575f80fd5b5f6020828403121561198a575f80fd5b813561101181611959565b5f602082840312156119a5575f80fd5b5035919050565b5f80604083850312156119bd575f80fd5b82356119c881611959565b946020939093013593505050565b5f8083601f8401126119e6575f80fd5b50813567ffffffffffffffff8111156119fd575f80fd5b6020830191508360208260051b8501011115611a17575f80fd5b9250929050565b5f805f8060408587031215611a31575f80fd5b843567ffffffffffffffff811115611a47575f80fd5b611a53878288016119d6565b909550935050602085013567ffffffffffffffff811115611a72575f80fd5b611a7e878288016119d6565b95989497509550505050565b5f8083601f840112611a9a575f80fd5b50813567ffffffffffffffff811115611ab1575f80fd5b602083019150836020828501011115611a17575f80fd5b5f8060208385031215611ad9575f80fd5b823567ffffffffffffffff811115611aef575f80fd5b611afb85828601611a8a565b90969095509350505050565b5f8060208385031215611b18575f80fd5b823567ffffffffffffffff811115611b2e575f80fd5b611afb858286016119d6565b5f805f805f60808688031215611b4e575f80fd5b8535611b5981611959565b9450602086013567ffffffffffffffff811115611b74575f80fd5b611b8088828901611a8a565b9699909850959660408101359660609091013595509350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561078457610784611b9c565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611c19575f80fd5b81358015158114611011575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c7857611c78611c28565b60405290565b6040516080810167ffffffffffffffff81118282101715611c7857611c78611c28565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611ce857611ce8611c28565b604052919050565b803567ffffffffffffffff81168114611d07575f80fd5b919050565b5f60208284031215611d1c575f80fd5b813567ffffffffffffffff811115611d32575f80fd5b820160a08185031215611d43575f80fd5b611d4b611c55565b8135611d5681611959565b8152602082013567ffffffffffffffff811115611d71575f80fd5b8201601f81018613611d81575f80fd5b803567ffffffffffffffff811115611d9b57611d9b611c28565b8060051b611dab60208201611ca1565b91825260208184018101929081019089841115611dc6575f80fd5b6020850194505b83851015611df45784359250611de283611959565b82825260209485019490910190611dcd565b602086015250611e0a9250505060408301611cf0565b6040820152611e1b60608301611cf0565b6060820152611e2c60808301611cf0565b6080820152949350505050565b5f60208284031215611e49575f80fd5b813567ffffffffffffffff811115611e5f575f80fd5b820160808185031215611e70575f80fd5b611e78611c7e565b813560038110611e86575f80fd5b81526020820135611e9681611959565b60208201526040820135611ea981611959565b6040820152606082013567ffffffffffffffff811115611ec7575f80fd5b80830192505084601f830112611edb575f80fd5b813567ffffffffffffffff811115611ef557611ef5611c28565b611f2660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ca1565b818152866020838601011115611f3a575f80fd5b816020850160208301375f918101602001919091526060820152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f6020828403128015611f9a575f80fd5b506040516020810167ffffffffffffffff81118282101715611fbe57611fbe611c28565b6040529151825250919050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611ffe575f80fd5b83018035915067ffffffffffffffff821115612018575f80fd5b602001915036819003821315611a17575f80fd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152610b54606084018261202c565b606081525f6120c4606083018661202c565b60208301949094525060400152919050565b5f80604083850312156120e7575f80fd5b825160208401519092506120fa81611959565b809150509250929050565b8082018082111561078457610784611b9c565b67ffffffffffffffff818116838216019081111561078457610784611b9c565b67ffffffffffffffff828116828216039081111561078457610784611b9c565b808202811582820484141761078457610784611b9c565b5f826121a2577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea264697066735822122016330cf4e5bc0eda6c6034a2eb4105027076ec6727948c9ccc60c2dd738627a964736f6c634300081a0033",x1={},I1={},B0={_format:T1,contractName:h1,sourceName:w1,abi:v1,bytecode:g1,deployedBytecode:M1,linkReferences:x1,deployedLinkReferences:I1},A1="hh-sol-artifact-1",E1="AllowListIncentive",R1="contracts/incentives/AllowListIncentive.sol",O1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{inputs:[],name:"allowList",outputs:[{internalType:"contract SimpleAllowList",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],C1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b610f75806100855f395ff3fe608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",_1="0x608060405260043610610162575f3560e01c8063715018a6116100c6578063c884ef831161007c578063f04e283e11610057578063f04e283e146103fd578063f2fde38b14610410578063fee81cf414610423575f80fd5b8063c884ef831461039b578063db09da12146103c9578063dcc59b6f146103e8575f80fd5b80638da5cb5b116100ac5780638da5cb5b14610334578063a4d66daf14610367578063bb1757cf1461037c575f80fd5b8063715018a61461030057806387b9d25c14610308575f80fd5b806338d52e0f1161011b578063474f5a4411610101578063474f5a44146102755780634e7165a2146102be57806354d1f13d146102f8575f80fd5b806338d52e0f1461020f578063439fab9114610256575f80fd5b8063228cb7331161014b578063228cb733146101b757806325692962146101cb57806328d6183b146101d5575f80fd5b806301ffc9a71461016657806307621eca1461019a575b5f80fd5b348015610171575f80fd5b50610185610180366004610bd8565b610454565b60405190151581526020015b60405180910390f35b3480156101a5575f80fd5b505f545b604051908152602001610191565b3480156101c2575f80fd5b506101a95f5481565b6101d36104af565b005b3480156101e0575f80fd5b506040517fc2c281ec000000000000000000000000000000000000000000000000000000008152602001610191565b34801561021a575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b348015610261575f80fd5b506101d3610270366004610c63565b6104fc565b348015610280575f80fd5b5061029461028f366004610c63565b6105ed565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610191565b3480156102c9575f80fd5b506102eb6102d8366004610c63565b5050604080515f81526020810190915290565b6040516101919190610ca2565b6101d3610621565b6101d361065a565b348015610313575f80fd5b506001546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561033f575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754610231565b348015610372575f80fd5b506101a960025481565b348015610387575f80fd5b50610185610396366004610d16565b61066d565b3480156103a6575f80fd5b506101856103b5366004610d67565b60036020525f908152604090205460ff1681565b3480156103d4575f80fd5b506101856103e3366004610d16565b6107e0565b3480156103f3575f80fd5b506101a960045481565b6101d361040b366004610d67565b6108ca565b6101d361041e366004610d67565b610907565b34801561042e575f80fd5b506101a961043d366004610d67565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc2c281ec0000000000000000000000000000000000000000000000000000000014806104a957506104a98261092d565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561054d5760018160011c14303b106105445763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f61055b83850185610d82565b905061056633610982565b8051600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020015160025580156105e8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6106626109e5565b61066b5f610a1a565b565b5f6106766109e5565b60025460048054905f61068883610dff565b919050551015806106bd575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff165b156106f4576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84165f90815260036020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558061074b86610a7f565b6001546040517f3abb060400000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff1690633abb0604906107a79085908590600401610e5b565b5f604051808303815f87803b1580156107be575f80fd5b505af11580156107d0573d5f803e3d5ffd5b5060019998505050505050505050565b5f600254600454108015610819575073ffffffffffffffffffffffffffffffffffffffff84165f9081526003602052604090205460ff16155b80156108c25750600154604080517fe3f756de00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201929092525f604482015291169063e3f756de90606401602060405180830381865afa15801561089c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c09190610ef3565b155b949350505050565b6108d26109e5565b63389a75e1600c52805f526020600c2080544211156108f857636f5e88185f526004601cfd5b5f905561090481610a1a565b50565b61090f6109e5565b8060601b61092457637448fbae5f526004601cfd5b61090481610a1a565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806104a957506104a982610b42565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461066b576382b429005f526004601cfd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b60408051600180825281830190925260609182915f916020808301908036833750506040805160018082528183019092529293505f9291506020808301908036833701905050905084825f81518110610ada57610ada610f12565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506001815f81518110610b2857610b28610f12565b911515602092830291909101909101529094909350915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806104a957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104a9565b5f60208284031215610be8575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610c17575f80fd5b9392505050565b5f8083601f840112610c2e575f80fd5b50813567ffffffffffffffff811115610c45575f80fd5b602083019150836020828501011115610c5c575f80fd5b9250929050565b5f8060208385031215610c74575f80fd5b823567ffffffffffffffff811115610c8a575f80fd5b610c9685828601610c1e565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610904575f80fd5b5f805f60408486031215610d28575f80fd5b8335610d3381610cf5565b9250602084013567ffffffffffffffff811115610d4e575f80fd5b610d5a86828701610c1e565b9497909650939450505050565b5f60208284031215610d77575f80fd5b8135610c1781610cf5565b5f6040828403128015610d93575f80fd5b506040805190810167ffffffffffffffff81118282101715610ddc577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040528235610dea81610cf5565b81526020928301359281019290925250919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610e54577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b604080825283519082018190525f9060208501906060840190835b81811015610eaa57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101610e76565b5050838103602080860191909152855180835291810192508501905f5b81811015610ee75782511515845260209384019390920191600101610ec7565b50919695505050505050565b5f60208284031215610f03575f80fd5b81518015158114610c17575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea26469706673582212206a53b42071a063a12c6de7f3c53595b9f2c06373aae4a0ebd9d9bb586862922664736f6c634300081a0033",B1={},P1={},P0={_format:A1,contractName:E1,sourceName:R1,abi:O1,bytecode:C1,deployedBytecode:_1,linkReferences:B1,deployedLinkReferences:P1},z1="hh-sol-artifact-1",N1="CGDAIncentive",$1="contracts/incentives/CGDAIncentive.sol",H1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"initialReward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardDecay",type:"uint256"},{indexed:!1,internalType:"uint256",name:"rewardBoost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"totalBudget",type:"uint256"}],name:"CGDAIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"cgdaParams",outputs:[{internalType:"uint256",name:"rewardDecay",type:"uint256"},{internalType:"uint256",name:"rewardBoost",type:"uint256"},{internalType:"uint256",name:"lastClaimTime",type:"uint256"},{internalType:"uint256",name:"currentReward",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalBudget",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],L1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611b65806100855f395ff3fe6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",F1="0x6080604052600436106101f5575f3560e01c806354d1f13d11610117578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105f8578063fe9fbb801461060b578063fee81cf41461062a575f80fd5b8063ec87621c146105d1578063f04e283e146105e5575f80fd5b8063c884ef8314610550578063db09da121461057e578063dcc213611461059d578063dcc59b6f146105bc575f80fd5b80638da5cb5b116100e75780638da5cb5b146104e5578063bb1757cf146104fd578063be4994f81461051c578063c78da39a1461053b575f80fd5b806354d1f13d1461047f578063715018a61461048757806375b238fc1461048f57806375ef18d0146104a3575f80fd5b80632de948071161018d578063474f5a441161015d578063474f5a44146103c25780634a4ee7b11461040b5780634e7165a21461041e578063514e62fc1461044a575f80fd5b80632de948071461030257806338d52e0f146103335780634359d28a14610384578063439fab91146103a3575f80fd5b80631cd64df4116101c85780631cd64df414610277578063228cb733146102ac57806325692962146102c057806328d6183b146102c8575f80fd5b806301ffc9a7146101f957806307621eca1461022d578063183a4f6e1461024f5780631c10893f14610264575b5f80fd5b348015610204575f80fd5b506102186102133660046114f8565b61065b565b60405190151581526020015b60405180910390f35b348015610238575f80fd5b506102416106b6565b604051908152602001610224565b61026261025d366004611537565b610736565b005b610262610272366004611576565b610743565b348015610282575f80fd5b50610218610291366004611576565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102b7575f80fd5b506102415f5481565b610262610759565b3480156102d3575f80fd5b506040517f53cf8555000000000000000000000000000000000000000000000000000000008152602001610224565b34801561030d575f80fd5b5061024161031c36600461159e565b638b78c6d8600c9081525f91909152602090205490565b34801561033e575f80fd5b5060075461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610224565b34801561038f575f80fd5b5061026261039e3660046115ff565b6107a6565b3480156103ae575f80fd5b506102626103bd3660046116a9565b6108a0565b3480156103cd575f80fd5b506103e16103dc3660046116a9565b610b63565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610224565b610262610419366004611576565b610c90565b348015610429575f80fd5b5061043d6104383660046116a9565b610ca2565b6040516102249190611716565b348015610455575f80fd5b50610218610464366004611576565b638b78c6d8600c9081525f9290925260209091205416151590565b610262610d60565b610262610d99565b34801561049a575f80fd5b50610241600281565b3480156104ae575f80fd5b506002546003546004546005546104c59392919084565b604080519485526020850193909352918301526060820152608001610224565b3480156104f0575f80fd5b50638b78c6d8195461035f565b348015610508575f80fd5b50610218610517366004611728565b610dac565b348015610527575f80fd5b506102626105363660046115ff565b610f82565b348015610546575f80fd5b5061024160065481565b34801561055b575f80fd5b5061021861056a36600461159e565b60016020525f908152604090205460ff1681565b348015610589575f80fd5b50610218610598366004611728565b611020565b3480156105a8575f80fd5b506102626105b73660046115ff565b611032565b3480156105c7575f80fd5b5061024160085481565b3480156105dc575f80fd5b50610241600181565b6102626105f336600461159e565b6110d0565b61026261060636600461159e565b61110a565b348015610616575f80fd5b5061021861062536600461159e565b611130565b348015610635575f80fd5b5061024161064436600461159e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f53cf85550000000000000000000000000000000000000000000000000000000014806106b057506106b08261118f565b92915050565b6004545f9081906106c790426117a4565b6007549091505f906106ef9073ffffffffffffffffffffffffffffffffffffffff16306111e4565b90505f610e106002600101548461070691906117b7565b61071091906117ce565b60055461071d9190611806565b905081811161072c578061072e565b815b935050505090565b6107403382611217565b50565b61074b611222565b610755828261123c565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b60026107b181611248565b8382146107ea576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898575f84848381811061080757610807611819565b905060200201602081019061081c9190611846565b905080151560010361085e5761085987878481811061083d5761083d611819565b9050602002016020810190610852919061159e565b600161123c565b61088f565b61088f87878481811061087357610873611819565b9050602002016020810190610888919061159e565b6001611217565b506001016107ec565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108f15760018160011c14303b106108e85763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6108ff838501856118ec565b80519091505f906109269073ffffffffffffffffffffffffffffffffffffffff16306111e4565b9050816080015181101561099757815160808301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b602082015115806109aa57506040820151155b806109b757506060820151155b806109c9575081602001518260800151105b15610a00576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905560408051608080820183528285015180835260608087015160208086018290524296860187905288015191909401819052600291909155600392909255600492909255600555820151600655610a9b33611279565b610aaa8260a0015160016112c1565b815f015173ffffffffffffffffffffffffffffffffffffffff167f2364e5ed5f8639e9bae046dc67aabf43f410e931f25143a10f5e1a8744ad717e8360200151846040015185606001518660800151604051610b1f949392919093845260208401929092526040830152606082015260800190565b60405180910390a250508015610b5e576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b7081611248565b5f610b7d8587018761196f565b90505f8160200151806020019051810190610b989190611a46565b8251600754919250610bc19173ffffffffffffffffffffffffffffffffffffffff169083611302565b81516007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610c6191611716565b60405180910390a260075490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c98611222565b6107558282611217565b60605f610cb1838501856118ec565b60408051608081019091529091508060018152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160405180602001604052808460800151815250604051602001610d289151815260200190565b60408051601f19818403018152918152915251610d489190602001611a5d565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610da1611222565b610daa5f61134b565b565b5f610db5611222565b610dbe84611395565b610e1b57604080517f4139d81d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101919091525f604482015260640161098e565b73ffffffffffffffffffffffffffffffffffffffff84165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790556008805491610e7883611af8565b91905055505f610e866106b6565b426004556002549091508111610e9e57600254610eab565b600254610eab90826117a4565b600555600754610ed29073ffffffffffffffffffffffffffffffffffffffff168683611302565b6007546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529187901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8616907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f1981840301815290829052610f6f91611716565b60405180910390a2506001949350505050565b6002610f8d81611248565b838214610fc6576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8481101561089857611018868683818110610fe557610fe5611819565b9050602002016020810190610ffa919061159e565b85858481811061100c5761100c611819565b9050602002013561123c565b600101610fc8565b5f61102a84611395565b949350505050565b600261103d81611248565b838214611076576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610898576110c886868381811061109557611095611819565b90506020020160208101906110aa919061159e565b8585848181106110bc576110bc611819565b90506020020135611217565b600101611078565b6110d8611222565b63389a75e1600c52805f526020600c2080544211156110fe57636f5e88185f526004601cfd5b5f90556107408161134b565b611112611222565b8060601b61112757637448fbae5f526004601cfd5b6107408161134b565b5f8173ffffffffffffffffffffffffffffffffffffffff16611155638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b05750638b78c6d8600c9081525f839052602090205460031615156106b0565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b057506106b08261140b565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b61075582825f6114a1565b638b78c6d819543314610daa576382b429005f526004601cfd5b610755828260016114a1565b638b78c6d81954331461074057638b78c6d8600c52335f52806020600c205416610740576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611342576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061139f6106b6565b90505f811180156113d3575060075481906113d09073ffffffffffffffffffffffffffffffffffffffff16306111e4565b10155b8015611404575073ffffffffffffffffffffffffffffffffffffffff83165f9081526001602052604090205460ff16155b9392505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b0565b638b78c6d8600c52825f526020600c208054838117836114c2575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611508575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611404575f80fd5b5f60208284031215611547575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611571575f80fd5b919050565b5f8060408385031215611587575f80fd5b6115908361154e565b946020939093013593505050565b5f602082840312156115ae575f80fd5b6114048261154e565b5f8083601f8401126115c7575f80fd5b50813567ffffffffffffffff8111156115de575f80fd5b6020830191508360208260051b85010111156115f8575f80fd5b9250929050565b5f805f8060408587031215611612575f80fd5b843567ffffffffffffffff811115611628575f80fd5b611634878288016115b7565b909550935050602085013567ffffffffffffffff811115611653575f80fd5b61165f878288016115b7565b95989497509550505050565b5f8083601f84011261167b575f80fd5b50813567ffffffffffffffff811115611692575f80fd5b6020830191508360208285010111156115f8575f80fd5b5f80602083850312156116ba575f80fd5b823567ffffffffffffffff8111156116d0575f80fd5b6116dc8582860161166b565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61140460208301846116e8565b5f805f6040848603121561173a575f80fd5b6117438461154e565b9250602084013567ffffffffffffffff81111561175e575f80fd5b61176a8682870161166b565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156106b0576106b0611777565b80820281158282048414176106b0576106b0611777565b5f82611801577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156106b0576106b0611777565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611856575f80fd5b81358015158114611404575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118b5576118b5611865565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156118e4576118e4611865565b604052919050565b5f60c08284031280156118fd575f80fd5b5060405160c0810167ffffffffffffffff8111828210171561192157611921611865565b60405261192d8361154e565b81526020838101359082015260408084013590820152606080840135908201526080808401359082015261196360a0840161154e565b60a08201529392505050565b5f6020828403121561197f575f80fd5b813567ffffffffffffffff811115611995575f80fd5b8201604081850312156119a6575f80fd5b6119ae611892565b6119b78261154e565b8152602082013567ffffffffffffffff8111156119d2575f80fd5b80830192505084601f8301126119e6575f80fd5b813567ffffffffffffffff811115611a0057611a00611865565b611a136020601f19601f840116016118bb565b818152866020838601011115611a27575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611a56575f80fd5b5051919050565b602081525f825160038110611a99577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261102a60a08401826116e8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611b2857611b28611777565b506001019056fea2646970667358221220e6b93f6915e88cb71a52f2fc66651bb20e78e4fc576be1786f6530ebff60d6b264736f6c634300081a0033",k1={},S1={},z0={_format:z1,contractName:N1,sourceName:$1,abi:H1,bytecode:L1,deployedBytecode:F1,linkReferences:k1,deployedLinkReferences:S1},G1="hh-sol-artifact-1",D1="ERC20Incentive",U1="contracts/incentives/ERC20Incentive.sol",V1=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC20Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"address",name:"manager",type:"address"}],name:"ERC20IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"entry",type:"address"}],name:"Entry",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"drawRaffle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uint256"}],name:"entries",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC20Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],q1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612135806100855f395ff3fe608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",j1="0x608060405260043610610243575f3560e01c806354d1f13d11610131578063c884ef83116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610677578063fe9fbb801461068a578063fee81cf4146106a9575f80fd5b8063ec87621c14610650578063f04e283e14610664575f80fd5b8063c884ef83146105cf578063db09da12146105fd578063dcc213611461061c578063dcc59b6f1461063b575f80fd5b8063a4d66daf11610101578063b30906d4116100e7578063b30906d414610572578063bb1757cf14610591578063be4994f8146105b0575f80fd5b8063a4d66daf14610537578063a8c62e761461054c575f80fd5b806354d1f13d146104fb578063715018a61461050357806375b238fc1461050b5780638da5cb5b1461051f575f80fd5b80632de94807116101c1578063439fab91116101915780634a4ee7b1116101775780634a4ee7b1146104875780634e7165a21461049a578063514e62fc146104c6575f80fd5b8063439fab911461041f578063474f5a441461043e575f80fd5b80632de948071461035f57806330db555f1461039057806338d52e0f146103af5780634359d28a14610400575f80fd5b80631cd64df411610216578063228cb733116101fc578063228cb73314610309578063256929621461031d57806328d6183b14610325575f80fd5b80631cd64df4146102c05780632275aea9146102f5575f80fd5b806301ffc9a71461024757806307621eca1461027b578063183a4f6e146102985780631c10893f146102ad575b5f80fd5b348015610252575f80fd5b506102666102613660046119da565b6106da565b60405190151581526020015b60405180910390f35b348015610286575f80fd5b505f545b604051908152602001610272565b6102ab6102a6366004611a19565b610735565b005b6102ab6102bb366004611a58565b610742565b3480156102cb575f80fd5b506102666102da366004611a58565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610300575f80fd5b506102ab610758565b348015610314575f80fd5b5061028a5f5481565b6102ab6108d7565b348015610330575f80fd5b506040517f7cc1d5bb000000000000000000000000000000000000000000000000000000008152602001610272565b34801561036a575f80fd5b5061028a610379366004611a80565b638b78c6d8600c9081525f91909152602090205490565b34801561039b575f80fd5b506102ab6103aa366004611a19565b610924565b3480156103ba575f80fd5b506004546103db9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610272565b34801561040b575f80fd5b506102ab61041a366004611ae1565b610a83565b34801561042a575f80fd5b506102ab610439366004611b8b565b610b7d565b348015610449575f80fd5b5061045d610458366004611b8b565b610e4a565b6040805192835273ffffffffffffffffffffffffffffffffffffffff909116602083015201610272565b6102ab610495366004611a58565b61104d565b3480156104a5575f80fd5b506104b96104b4366004611b8b565b61105f565b6040516102729190611bf8565b3480156104d1575f80fd5b506102666104e0366004611a58565b638b78c6d8600c9081525f9290925260209091205416151590565b6102ab61112f565b6102ab611168565b348015610516575f80fd5b5061028a600281565b34801561052a575f80fd5b50638b78c6d819546103db565b348015610542575f80fd5b5061028a60065481565b348015610557575f80fd5b506002546105659060ff1681565b6040516102729190611c4b565b34801561057d575f80fd5b506103db61058c366004611a19565b61117b565b34801561059c575f80fd5b506102666105ab366004611c59565b6111b0565b3480156105bb575f80fd5b506102ab6105ca366004611ae1565b611421565b3480156105da575f80fd5b506102666105e9366004611a80565b60016020525f908152604090205460ff1681565b348015610608575f80fd5b50610266610617366004611c59565b6114bf565b348015610627575f80fd5b506102ab610636366004611ae1565b6114d1565b348015610646575f80fd5b5061028a60055481565b34801561065b575f80fd5b5061028a600181565b6102ab610672366004611a80565b61156f565b6102ab610685366004611a80565b6115a9565b348015610695575f80fd5b506102666106a4366004611a80565b6115cf565b3480156106b4575f80fd5b5061028a6106c3366004611a80565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7cc1d5bb00000000000000000000000000000000000000000000000000000000148061072f575061072f8261162e565b92915050565b61073f3382611683565b50565b61074a61168e565b61075482826116a8565b5050565b6001610763816116b4565b600160025460ff16600181111561077c5761077c611c0a565b146107b3576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f604051806020016040528042446107cb9190611cd5565b905260038054602083208084529293505f926107e79190611d15565b815481106107f7576107f7611d28565b5f918252602082200154905460045473ffffffffffffffffffffffffffffffffffffffff928316935061082d92169083906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529284901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8216907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f19818403018152908290526108ca91611bf8565b60405180910390a2505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161092f81611721565b815f03610968576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045461098d9073ffffffffffffffffffffffffffffffffffffffff16333085611752565b600160025460ff1660018111156109a6576109a6611c0a565b036109dd576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f546109e99083611d15565b15610a20576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054610a2d9084611d55565b90508060065f828254610a409190611cd5565b909155505060408051338152602081018590527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a1505050565b6002610a8e81611721565b838214610ac7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75575f848483818110610ae457610ae4611d28565b9050602002016020810190610af99190611d68565b9050801515600103610b3b57610b36878784818110610b1a57610b1a611d28565b9050602002016020810190610b2f9190611a80565b60016116a8565b610b6c565b610b6c878784818110610b5057610b50611d28565b9050602002016020810190610b659190611a80565b6001611683565b50600101610ac9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bce5760018160011c14303b10610bc55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610bdc83850185611e0e565b905080604001515f1480610bf257506060810151155b15610c29576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182602001516001811115610c4257610c42611c0a565b03610c51578160400151610c65565b81606001518260400151610c659190611e93565b82519091505f90610c8c9073ffffffffffffffffffffffffffffffffffffffff16306117aa565b905081811015610cf65782516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015260248101829052604481018390526064015b60405180910390fd5b8251600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020830151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610d7a57610d7a611c0a565b021790555060408301515f556060830151600655610d97336117dd565b610da683608001516001611825565b825f015173ffffffffffffffffffffffffffffffffffffffff167fe83379cf1b79044fa1d0063e68012349f4f5fb730e6a875bdc9d463747ecd0858460200151856040015186606001518760800151604051610e059493929190611eaa565b60405180910390a25050508015610e45576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610e5781611721565b5f610e6485870187611ee9565b90505f8160200151806020019051810190610e7f9190611fc0565b9050600160025460ff166001811115610e9a57610e9a611c0a565b03610f11575f5481141580610eb057505f600554115b15610f08573382604051602001610ec79190611fd7565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610ced9291600401612011565b5f600655610f56565b5f54610f1d9082611d15565b15610f34573382604051602001610ec79190611fd7565b5f54610f409082611d55565b60065f828254610f50919061203f565b90915550505b8151600454610f7e9173ffffffffffffffffffffffffffffffffffffffff90911690836116d8565b81516004546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261101e91611bf8565b60405180910390a260045490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b61105561168e565b6107548282611683565b60605f61106e83850185611e0e565b90505f60018260200151600181111561108957611089611c0a565b036110985781604001516110ac565b816060015182604001516110ac9190611e93565b6040805160808101825260018152845173ffffffffffffffffffffffffffffffffffffffff16602080830191909152308284015282518082018452849052825180820185905283518082038301815290840184526060830152915192935061111692909101612052565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b61117061168e565b6111795f611866565b565b6003818154811061118a575f80fd5b5f9182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b5f6111b961168e565b6111c2846118b0565b6111f8576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60025460ff16600181111561121057611210611c0a565b036113375760058054905f611224836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff8085165f908152600160208190526040822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690911790555460045461128a92169086906116d8565b6004545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529287901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8516907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39060680160408051601f198184030181529082905261132791611bf8565b60405180910390a250600161141a565b60058054905f611346836120c8565b909155505073ffffffffffffffffffffffffffffffffffffffff84165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560038054928301815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055517ff0abe0f5c6f02112a9a4332e7b091bf49040ffddeedb73785a9b9a0a3ca7f1539190a25060015b9392505050565b600261142c81611721565b838214611465576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b75576114b786868381811061148457611484611d28565b90506020020160208101906114999190611a80565b8585848181106114ab576114ab611d28565b905060200201356116a8565b600101611467565b5f6114c9846118b0565b949350505050565b60026114dc81611721565b838214611515576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610b755761156786868381811061153457611534611d28565b90506020020160208101906115499190611a80565b85858481811061155b5761155b611d28565b90506020020135611683565b600101611517565b61157761168e565b63389a75e1600c52805f526020600c20805442111561159d57636f5e88185f526004601cfd5b5f905561073f81611866565b6115b161168e565b8060601b6115c657637448fbae5f526004601cfd5b61073f81611866565b5f8173ffffffffffffffffffffffffffffffffffffffff166115f4638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061072f5750638b78c6d8600c9081525f8390526020902054600316151561072f565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061072f575061072f826118ed565b61075482825f611983565b638b78c6d819543314611179576382b429005f526004601cfd5b61075482826001611983565b638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611718576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d81954331461073f57638b78c6d8600c52335f52806020600c20541661073f576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661179d57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561072f57506006546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061072f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461072f565b638b78c6d8600c52825f526020600c208054838117836119a4575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f602082840312156119ea575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461141a575f80fd5b5f60208284031215611a29575f80fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611a53575f80fd5b919050565b5f8060408385031215611a69575f80fd5b611a7283611a30565b946020939093013593505050565b5f60208284031215611a90575f80fd5b61141a82611a30565b5f8083601f840112611aa9575f80fd5b50813567ffffffffffffffff811115611ac0575f80fd5b6020830191508360208260051b8501011115611ada575f80fd5b9250929050565b5f805f8060408587031215611af4575f80fd5b843567ffffffffffffffff811115611b0a575f80fd5b611b1687828801611a99565b909550935050602085013567ffffffffffffffff811115611b35575f80fd5b611b4187828801611a99565b95989497509550505050565b5f8083601f840112611b5d575f80fd5b50813567ffffffffffffffff811115611b74575f80fd5b602083019150836020828501011115611ada575f80fd5b5f8060208385031215611b9c575f80fd5b823567ffffffffffffffff811115611bb2575f80fd5b611bbe85828601611b4d565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61141a6020830184611bca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611c4757611c47611c0a565b9052565b6020810161072f8284611c37565b5f805f60408486031215611c6b575f80fd5b611c7484611a30565b9250602084013567ffffffffffffffff811115611c8f575f80fd5b611c9b86828701611b4d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8082018082111561072f5761072f611ca8565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f82611d2357611d23611ce8565b500690565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82611d6357611d63611ce8565b500490565b5f60208284031215611d78575f80fd5b8135801515811461141a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611dd757611dd7611d87565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611d87565b604052919050565b5f60a0828403128015611e1f575f80fd5b5060405160a0810167ffffffffffffffff81118282101715611e4357611e43611d87565b604052611e4f83611a30565b8152602083013560028110611e62575f80fd5b60208201526040838101359082015260608084013590820152611e8760808401611a30565b60808201529392505050565b808202811582820484141761072f5761072f611ca8565b60808101611eb88287611c37565b84602083015283604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b5f60208284031215611ef9575f80fd5b813567ffffffffffffffff811115611f0f575f80fd5b820160408185031215611f20575f80fd5b611f28611db4565b611f3182611a30565b8152602082013567ffffffffffffffff811115611f4c575f80fd5b80830192505084601f830112611f60575f80fd5b813567ffffffffffffffff811115611f7a57611f7a611d87565b611f8d6020601f19601f84011601611ddd565b818152866020838601011115611fa1575f80fd5b816020850160208301375f602092820183015290820152949350505050565b5f60208284031215611fd0575f80fd5b5051919050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f60208301516040808401526114c96060840182611bca565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f6114c96040830184611bca565b8181038181111561072f5761072f611ca8565b602081525f82516003811061206957612069611c0a565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526114c960a0840182611bca565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120f8576120f8611ca8565b506001019056fea264697066735822122088443730ea9175c8d52add442a13f07026ebe487eeb655e4277c54c4a70cdd2064736f6c634300081a0033",W1={},Z1={},N0={_format:G1,contractName:D1,sourceName:U1,abi:V1,bytecode:q1,deployedBytecode:j1,linkReferences:W1,deployedLinkReferences:Z1},K1="hh-sol-artifact-1",Y1="ERC20VariableCriteriaIncentive",J1="contracts/incentives/ERC20VariableCriteriaIncentive.sol",Q1=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"},{indexed:!1,internalType:"uint256",name:"maxReward",type:"uint256"},{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],indexed:!1,internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"criteria",type:"tuple"}],name:"ERC20VariableCriteriaIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"getIncentiveCriteria",outputs:[{components:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],internalType:"struct AERC20VariableCriteriaIncentive.IncentiveCriteria",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getMaxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"incentiveCriteria",outputs:[{internalType:"enum SignatureType",name:"criteriaType",type:"uint8"},{internalType:"bytes32",name:"signature",type:"bytes32"},{internalType:"uint8",name:"fieldIndex",type:"uint8"},{internalType:"address",name:"targetContract",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"maxReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],X1="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612096806100855f395ff3fe608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",f5="0x608060405260043610610277575f3560e01c8063715018a61161014b578063c884ef83116100c6578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b14610703578063fe9fbb8014610716578063fee81cf414610735575f80fd5b8063ec87621c146106dc578063f04e283e146106f0575f80fd5b8063db09da12116100ac578063db09da1214610689578063dcc21361146106a8578063dcc59b6f146106c7575f80fd5b8063c884ef8314610646578063d54ad2a114610674575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105f4578063be4994f814610613578063c213f3f914610632575f80fd5b8063a4d66daf146105be578063a871ced2146105d3575f80fd5b8063715018a61461053857806375b238fc1461054057806377548687146105545780638da5cb5b146105a6575f80fd5b806330db555f116101f55780634a4ee7b1116101ab578063514e62fc11610191578063514e62fc146104e657806354d1f13d1461051b57806366a78e6c14610523575f80fd5b80634a4ee7b1146104a75780634e7165a2146104ba575f80fd5b80634359d28a116101db5780634359d28a14610420578063439fab911461043f578063474f5a441461045e575f80fd5b806330db555f146103b057806338d52e0f146103cf575f80fd5b80631cd64df41161024a5780632569296211610230578063256929621461033d57806328d6183b146103455780632de948071461037f575f80fd5b80631cd64df4146102f4578063228cb73314610329575f80fd5b806301ffc9a71461027b57806307621eca146102af578063183a4f6e146102cc5780631c10893f146102e1575b5f80fd5b348015610286575f80fd5b5061029a6102953660046117f6565b610766565b60405190151581526020015b60405180910390f35b3480156102ba575f80fd5b505f545b6040519081526020016102a6565b6102df6102da36600461183c565b6107c1565b005b6102df6102ef366004611874565b6107ce565b3480156102ff575f80fd5b5061029a61030e366004611874565b638b78c6d8600c9081525f9290925260209091205481161490565b348015610334575f80fd5b506102be5f5481565b6102df6107e4565b348015610350575f80fd5b506040517f52b8e45c0000000000000000000000000000000000000000000000000000000081526020016102a6565b34801561038a575f80fd5b506102be61039936600461189e565b638b78c6d8600c9081525f91909152602090205490565b3480156103bb575f80fd5b506102df6103ca36600461183c565b610831565b3480156103da575f80fd5b506003546103fb9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102a6565b34801561042b575f80fd5b506102df61043a366004611901565b6108ed565b34801561044a575f80fd5b506102df6104593660046119ab565b6109e7565b348015610469575f80fd5b5061047d6104783660046119ab565b610cd1565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016102a6565b6102df6104b5366004611874565b610e33565b3480156104c5575f80fd5b506104d96104d43660046119ab565b610e45565b6040516102a69190611a36565b3480156104f1575f80fd5b5061029a610500366004611874565b638b78c6d8600c9081525f9290925260209091205416151590565b6102df610f2e565b34801561052e575f80fd5b506102be60065481565b6102df610f67565b34801561054b575f80fd5b506102be600281565b34801561055f575f80fd5b506007546008546009546105969260ff908116929190811690610100900473ffffffffffffffffffffffffffffffffffffffff1684565b6040516102a69493929190611a89565b3480156105b1575f80fd5b50638b78c6d819546103fb565b3480156105c9575f80fd5b506102be60025481565b3480156105de575f80fd5b506105e7610f7a565b6040516102a69190611b11565b3480156105ff575f80fd5b5061029a61060e366004611b1f565b611014565b34801561061e575f80fd5b506102df61062d366004611901565b611245565b34801561063d575f80fd5b506006546102be565b348015610651575f80fd5b5061029a61066036600461189e565b60016020525f908152604090205460ff1681565b34801561067f575f80fd5b506102be60055481565b348015610694575f80fd5b5061029a6106a3366004611b1f565b6112e3565b3480156106b3575f80fd5b506102df6106c2366004611901565b6112f9565b3480156106d2575f80fd5b506102be60045481565b3480156106e7575f80fd5b506102be600181565b6102df6106fe36600461189e565b611397565b6102df61071136600461189e565b6113d1565b348015610721575f80fd5b5061029a61073036600461189e565b6113f7565b348015610740575f80fd5b506102be61074f36600461189e565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f52b8e45c0000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611456565b92915050565b6107cb33826114ab565b50565b6107d66114b6565b6107e082826114d0565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161083c816114dc565b815f03610875576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461089a9073ffffffffffffffffffffffffffffffffffffffff1633308561150d565b8160025f8282546108ab9190611b9d565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026108f8816114dc565b838214610931576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df575f84848381811061094e5761094e611bb0565b90506020020160208101906109639190611bdd565b90508015156001036109a5576109a087878481811061098457610984611bb0565b9050602002016020810190610999919061189e565b60016114d0565b6109d6565b6109d68787848181106109ba576109ba611bb0565b90506020020160208101906109cf919061189e565b60016114ab565b50600101610933565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610a385760018160011c14303b10610a2f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610a4683850185611c98565b805160208201516040830151606084015160808501519495509293919290915f839003610a9f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ac073ffffffffffffffffffffffffffffffffffffffff871630611565565b905083811015610b295786516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810185905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff88161790555f8581556002859055600684905560055581516007805484929082907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610bba57610bba611a48565b02179055506020820151600182015560408201516002909101805460609093015173ffffffffffffffffffffffffffffffffffffffff16610100027fffffffffffffffffffffff00000000000000000000000000000000000000000090931660ff90921691909117919091179055610c3133611598565b610c3c3360016115e0565b8573ffffffffffffffffffffffffffffffffffffffff167f4dfcc2b9ad954a56fe7153ce6568e2d30033d056714ca4acaa4620b12e1a1a2486868686604051610c889493929190611d6f565b60405180910390a2505050505050508015610ccc576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cde816114dc565b5f610ceb85870187611e43565b90505f8160200151806020019051810190610d069190611ec2565b90508060025f828254610d199190611ed9565b90915550508151600354610d469173ffffffffffffffffffffffffffffffffffffffff9091169083611621565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610e0491611a36565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610e3b6114b6565b6107e082826114ab565b60605f80610e5584860186611eec565b9250509150604051806080016040528060016002811115610e7857610e78611a48565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610ed79151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610f159190602001611f1e565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610f6f6114b6565b610f785f61166a565b565b604080516080810182525f808252602082018190529181018290526060810191909152604080516080810190915260078054829060ff166001811115610fc257610fc2611a48565b6001811115610fd357610fd3611a48565b81526001820154602082015260029091015460ff81166040830152610100900473ffffffffffffffffffffffffffffffffffffffff16606090910152919050565b5f61101d6114b6565b5f61102a83850185611f94565b90505f81602001518060200190518101906110459190611ec2565b90505f6110556002546005541090565b61108b576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f0361109a5750806110bd565b670de0b6b3a7640000825f546110b09190612011565b6110ba9190612028565b90505b600654158015906110cf575060065481115b156110d957506006545b600254816005546110ea9190611b9d565b1115611122576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f8282546111339190611b9d565b92505081905550600160045f82825461114c9190611b9d565b90915550506003546111759073ffffffffffffffffffffffffffffffffffffffff168883611621565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261123091611a36565b60405180910390a25060019695505050505050565b6002611250816114dc565b838214611289576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df576112db8686838181106112a8576112a8611bb0565b90506020020160208101906112bd919061189e565b8585848181106112cf576112cf611bb0565b905060200201356114d0565b60010161128b565b5f6112f16002546005541090565b949350505050565b6002611304816114dc565b83821461133d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109df5761138f86868381811061135c5761135c611bb0565b9050602002016020810190611371919061189e565b85858481811061138357611383611bb0565b905060200201356114ab565b60010161133f565b61139f6114b6565b63389a75e1600c52805f526020600c2080544211156113c557636f5e88185f526004601cfd5b5f90556107cb8161166a565b6113d96114b6565b8060601b6113ee57637448fbae5f526004601cfd5b6107cb8161166a565b5f8173ffffffffffffffffffffffffffffffffffffffff1661141c638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806107bb5750638b78c6d8600c9081525f839052602090205460031615156107bb565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806107bb57506107bb826116b4565b6107e082825f611709565b638b78c6d819543314610f78576382b429005f526004601cfd5b6107e082826001611709565b638b78c6d8195433146107cb57638b78c6d8600c52335f52806020600c2054166107cb576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f5114171661155857637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f51141716611661576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806107bb57506107bb82611760565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806107bb57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107bb565b5f60208284031215611806575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611835575f80fd5b9392505050565b5f6020828403121561184c575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146107cb575f80fd5b5f8060408385031215611885575f80fd5b823561189081611853565b946020939093013593505050565b5f602082840312156118ae575f80fd5b813561183581611853565b5f8083601f8401126118c9575f80fd5b50813567ffffffffffffffff8111156118e0575f80fd5b6020830191508360208260051b85010111156118fa575f80fd5b9250929050565b5f805f8060408587031215611914575f80fd5b843567ffffffffffffffff81111561192a575f80fd5b611936878288016118b9565b909550935050602085013567ffffffffffffffff811115611955575f80fd5b611961878288016118b9565b95989497509550505050565b5f8083601f84011261197d575f80fd5b50813567ffffffffffffffff811115611994575f80fd5b6020830191508360208285010111156118fa575f80fd5b5f80602083850312156119bc575f80fd5b823567ffffffffffffffff8111156119d2575f80fd5b6119de8582860161196d565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61183560208301846119ea565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60028110611a8557611a85611a48565b9052565b60808101611a978287611a75565b84602083015260ff8416604083015273ffffffffffffffffffffffffffffffffffffffff8316606083015295945050505050565b611ad6828251611a75565b6020810151602083015260ff604082015116604083015273ffffffffffffffffffffffffffffffffffffffff60608201511660608301525050565b608081016107bb8284611acb565b5f805f60408486031215611b31575f80fd5b8335611b3c81611853565b9250602084013567ffffffffffffffff811115611b57575f80fd5b611b638682870161196d565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156107bb576107bb611b70565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bed575f80fd5b81358015158114611835575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b60405290565b6040516080810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b6040805190810167ffffffffffffffff81118282101715611c4c57611c4c611bfc565b5f81830361010081128015611cab575f80fd5b50611cb4611c29565b8335611cbf81611853565b815260208481013590820152604080850135908201526060808501359082015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083011215611d0e575f80fd5b611d16611c52565b9150608084013560028110611d29575f80fd5b825260a0840135602083015260c084013560ff81168114611d48575f80fd5b604083015260e0840135611d5b81611853565b606083015260808101919091529392505050565b848152602081018490526040810183905260e08101611d916060830184611acb565b95945050505050565b5f82601f830112611da9575f80fd5b813567ffffffffffffffff811115611dc357611dc3611bfc565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715611e1057611e10611bfc565b604052818152838201602001851015611e27575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611e53575f80fd5b813567ffffffffffffffff811115611e69575f80fd5b820160408185031215611e7a575f80fd5b611e82611c75565b8135611e8d81611853565b8152602082013567ffffffffffffffff811115611ea8575f80fd5b611eb486828501611d9a565b602083015250949350505050565b5f60208284031215611ed2575f80fd5b5051919050565b818103818111156107bb576107bb611b70565b5f805f60608486031215611efe575f80fd5b8335611f0981611853565b95602085013595506040909401359392505050565b602081525f825160038110611f3557611f35611a48565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff604084015116606083015260608301516080808401526112f160a08401826119ea565b5f60208284031215611fa4575f80fd5b813567ffffffffffffffff811115611fba575f80fd5b820160408185031215611fcb575f80fd5b611fd3611c75565b813567ffffffffffffffff811115611fe9575f80fd5b611ff586828501611d9a565b825250602082013567ffffffffffffffff811115611ea8575f80fd5b80820281158282048414176107bb576107bb611b70565b5f8261205b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220a054d83b4648d8288f47fd626c174e69093fb97c77e64305e6a84b53711a253064736f6c634300081a0033",e5={},b5={},$0={_format:K1,contractName:Y1,sourceName:J1,abi:Q1,bytecode:X1,deployedBytecode:f5,linkReferences:e5,deployedLinkReferences:b5},a5="hh-sol-artifact-1",t5="ERC20VariableIncentive",n5="contracts/incentives/ERC20VariableIncentive.sol",d5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC20VariableIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ToppedUp",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"topup",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"totalClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],c5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b611c6d806100855f395ff3fe60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",i5="0x60806040526004361061020f575f3560e01c806354d1f13d11610117578063d54ad2a1116100ac578063ec87621c1161007c578063f2fde38b11610062578063f2fde38b146105ff578063fe9fbb8014610612578063fee81cf414610631575f80fd5b8063ec87621c146105d8578063f04e283e146105ec575f80fd5b8063d54ad2a114610570578063db09da1214610585578063dcc21361146105a4578063dcc59b6f146105c3575f80fd5b8063a4d66daf116100e7578063a4d66daf146104ef578063bb1757cf14610504578063be4994f814610523578063c884ef8314610542575f80fd5b806354d1f13d146104b3578063715018a6146104bb57806375b238fc146104c35780638da5cb5b146104d7575f80fd5b80632de94807116101a7578063439fab91116101775780634a4ee7b11161015d5780634a4ee7b11461043f5780634e7165a214610452578063514e62fc1461047e575f80fd5b8063439fab91146103d7578063474f5a44146103f6575f80fd5b80632de948071461031757806330db555f1461034857806338d52e0f146103675780634359d28a146103b8575f80fd5b80631cd64df4116101e25780631cd64df41461028c578063228cb733146102c157806325692962146102d557806328d6183b146102dd575f80fd5b806301ffc9a71461021357806307621eca14610247578063183a4f6e146102645780631c10893f14610279575b5f80fd5b34801561021e575f80fd5b5061023261022d366004611527565b610662565b60405190151581526020015b60405180910390f35b348015610252575f80fd5b505f545b60405190815260200161023e565b61027761027236600461156d565b6106bd565b005b6102776102873660046115a5565b6106ca565b348015610297575f80fd5b506102326102a63660046115a5565b638b78c6d8600c9081525f9290925260209091205481161490565b3480156102cc575f80fd5b506102565f5481565b6102776106e0565b3480156102e8575f80fd5b506040517f9031811100000000000000000000000000000000000000000000000000000000815260200161023e565b348015610322575f80fd5b506102566103313660046115cf565b638b78c6d8600c9081525f91909152602090205490565b348015610353575f80fd5b5061027761036236600461156d565b61072d565b348015610372575f80fd5b506003546103939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161023e565b3480156103c3575f80fd5b506102776103d2366004611632565b6107e9565b3480156103e2575f80fd5b506102776103f13660046116dc565b6108e3565b348015610401575f80fd5b506104156104103660046116dc565b610b0d565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161023e565b61027761044d3660046115a5565b610c6f565b34801561045d575f80fd5b5061047161046c3660046116dc565b610c81565b60405161023e9190611767565b348015610489575f80fd5b506102326104983660046115a5565b638b78c6d8600c9081525f9290925260209091205416151590565b610277610d6a565b610277610da3565b3480156104ce575f80fd5b50610256600281565b3480156104e2575f80fd5b50638b78c6d81954610393565b3480156104fa575f80fd5b5061025660025481565b34801561050f575f80fd5b5061023261051e366004611779565b610db6565b34801561052e575f80fd5b5061027761053d366004611632565b610fcb565b34801561054d575f80fd5b5061023261055c3660046115cf565b60016020525f908152604090205460ff1681565b34801561057b575f80fd5b5061025660055481565b348015610590575f80fd5b5061023261059f366004611779565b611069565b3480156105af575f80fd5b506102776105be366004611632565b61107f565b3480156105ce575f80fd5b5061025660045481565b3480156105e3575f80fd5b50610256600181565b6102776105fa3660046115cf565b61111d565b61027761060d3660046115cf565b611157565b34801561061d575f80fd5b5061023261062c3660046115cf565b61117d565b34801561063c575f80fd5b5061025661064b3660046115cf565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f903181110000000000000000000000000000000000000000000000000000000014806106b757506106b7826111dc565b92915050565b6106c73382611231565b50565b6106d261123c565b6106dc8282611256565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600161073881611262565b815f03610771576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546107969073ffffffffffffffffffffffffffffffffffffffff16333085611293565b8160025f8282546107a791906117f7565b909155505060408051338152602081018490527fa64c2da41decbd538f8629e54c8fa0b7362c9102b691386a0fb6a1797454e9c6910160405180910390a15050565b60026107f481611262565b83821461082d576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db575f84848381811061084a5761084a61180a565b905060200201602081019061085f9190611837565b90508015156001036108a15761089c8787848181106108805761088061180a565b905060200201602081019061089591906115cf565b6001611256565b6108d2565b6108d28787848181106108b6576108b661180a565b90506020020160208101906108cb91906115cf565b6001611231565b5060010161082f565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109345760018160011c14303b1061092b5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f610942838501856118ac565b80516020820151604083015192935090915f81900361098d576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6109ae73ffffffffffffffffffffffffffffffffffffffff8516306112eb565b905081811015610a175784516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602481018290526044810183905260640160405180910390fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555f8381556002839055600555610a6c3361131e565b6060850151610a7c816001611366565b604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff8716917fac711f624f923566afa4d63e74d67927870a724791c9569f0143ddea22657a0d910160405180910390a25050505050508015610b08576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610b1a81611262565b5f610b27858701876119c8565b90505f8160200151806020019051810190610b429190611a47565b90508060025f828254610b559190611a5e565b90915550508151600354610b829173ffffffffffffffffffffffffffffffffffffffff90911690836113a7565b81516003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529183901b90911660348201526048810183905273ffffffffffffffffffffffffffffffffffffffff909116907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610c4091611767565b60405180910390a260035490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610c7761123c565b6106dc8282611231565b60605f80610c9184860186611a71565b9250509150604051806080016040528060016002811115610cb457610cb4611aa3565b81526020018373ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806020016040528084815250604051602001610d139151815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152915251610d519190602001611ad0565b6040516020818303038152906040529250505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610dab61123c565b610db45f6113f0565b565b5f610dbf61123c565b5f610dcc83850185611b6b565b90505f8160200151806020019051810190610de79190611a47565b90505f610df76002546005541090565b610e2d576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f545f03610e3c575080610e5f565b670de0b6b3a7640000825f54610e529190611be8565b610e5c9190611bff565b90505b60025481600554610e7091906117f7565b1115610ea8576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060055f828254610eb991906117f7565b92505081905550600160045f828254610ed291906117f7565b9091555050600354610efb9073ffffffffffffffffffffffffffffffffffffffff1688836113a7565b6003546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606092831b811660208301529189901b90911660348201526048810182905273ffffffffffffffffffffffffffffffffffffffff8816907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fb691611767565b60405180910390a25060019695505050505050565b6002610fd681611262565b83821461100f576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db5761106186868381811061102e5761102e61180a565b905060200201602081019061104391906115cf565b8585848181106110555761105561180a565b90506020020135611256565b600101611011565b5f6110776002546005541090565b949350505050565b600261108a81611262565b8382146110c3576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156108db576111158686838181106110e2576110e261180a565b90506020020160208101906110f791906115cf565b8585848181106111095761110961180a565b90506020020135611231565b6001016110c5565b61112561123c565b63389a75e1600c52805f526020600c20805442111561114b57636f5e88185f526004601cfd5b5f90556106c7816113f0565b61115f61123c565b8060601b61117457637448fbae5f526004601cfd5b6106c7816113f0565b5f8173ffffffffffffffffffffffffffffffffffffffff166111a2638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff1614806106b75750638b78c6d8600c9081525f839052602090205460031615156106b7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa92167050000000000000000000000000000000000000000000000000000000014806106b757506106b78261143a565b6106dc82825f6114d0565b638b78c6d819543314610db4576382b429005f526004601cfd5b6106dc828260016114d0565b638b78c6d8195433146106c757638b78c6d8600c52335f52806020600c2054166106c7576382b429005f526004601cfd5b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af13d1560015f511417166112de57637939f4245f526004601cfd5b5f60605260405250505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af13d1560015f511417166113e7576390b8ec185f526004601cfd5b5f603452505050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d0000000000000000000000000000000000000000000000000000000014806106b757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146106b7565b638b78c6d8600c52825f526020600c208054838117836114f1575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611537575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611566575f80fd5b9392505050565b5f6020828403121561157d575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146106c7575f80fd5b5f80604083850312156115b6575f80fd5b82356115c181611584565b946020939093013593505050565b5f602082840312156115df575f80fd5b813561156681611584565b5f8083601f8401126115fa575f80fd5b50813567ffffffffffffffff811115611611575f80fd5b6020830191508360208260051b850101111561162b575f80fd5b9250929050565b5f805f8060408587031215611645575f80fd5b843567ffffffffffffffff81111561165b575f80fd5b611667878288016115ea565b909550935050602085013567ffffffffffffffff811115611686575f80fd5b611692878288016115ea565b95989497509550505050565b5f8083601f8401126116ae575f80fd5b50813567ffffffffffffffff8111156116c5575f80fd5b60208301915083602082850101111561162b575f80fd5b5f80602083850312156116ed575f80fd5b823567ffffffffffffffff811115611703575f80fd5b61170f8582860161169e565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611566602083018461171b565b5f805f6040848603121561178b575f80fd5b833561179681611584565b9250602084013567ffffffffffffffff8111156117b1575f80fd5b6117bd8682870161169e565b9497909650939450505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156106b7576106b76117ca565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611847575f80fd5b81358015158114611566575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156118a6576118a6611856565b60405290565b5f60808284031280156118bd575f80fd5b506040516080810167ffffffffffffffff811182821017156118e1576118e1611856565b60405282356118ef81611584565b81526020838101359082015260408084013590820152606083013561191381611584565b60608201529392505050565b5f82601f83011261192e575f80fd5b813567ffffffffffffffff81111561194857611948611856565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561199557611995611856565b6040528181528382016020018510156119ac575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156119d8575f80fd5b813567ffffffffffffffff8111156119ee575f80fd5b8201604081850312156119ff575f80fd5b611a07611883565b8135611a1281611584565b8152602082013567ffffffffffffffff811115611a2d575f80fd5b611a398682850161191f565b602083015250949350505050565b5f60208284031215611a57575f80fd5b5051919050565b818103818111156106b7576106b76117ca565b5f805f60608486031215611a83575f80fd5b8335611a8e81611584565b95602085013595506040909401359392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b602081525f825160038110611b0c577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261107760a084018261171b565b5f60208284031215611b7b575f80fd5b813567ffffffffffffffff811115611b91575f80fd5b820160408185031215611ba2575f80fd5b611baa611883565b813567ffffffffffffffff811115611bc0575f80fd5b611bcc8682850161191f565b825250602082013567ffffffffffffffff811115611a2d575f80fd5b80820281158282048414176106b7576106b76117ca565b5f82611c32577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fea2646970667358221220359b85089605758f3c64773e6f7fe7639dfc5ac1adb7a4578b2b6a3ca7f4a83864736f6c634300081a0033",s5={},r5={},H0={_format:a5,contractName:t5,sourceName:n5,abi:d5,bytecode:c5,deployedBytecode:i5,linkReferences:s5,deployedLinkReferences:r5},p5="hh-sol-artifact-1",o5="ERC1155Incentive",u5="contracts/incentives/ERC1155Incentive.sol",y5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[{internalType:"address",name:"caller",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"available",type:"uint256"},{internalType:"uint256",name:"required",type:"uint256"}],name:"InsufficientFunds",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"asset",type:"address"},{indexed:!1,internalType:"enum AERC1155Incentive.Strategy",name:"strategy",type:"uint8"},{indexed:!1,internalType:"uint256",name:"tokenId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"ERC1155IncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"ADMIN_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MANAGER_ROLE",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"extraData",outputs:[{internalType:"bytes",name:"",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"grantManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account_",type:"address"}],name:"isAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"bytes",name:"data_",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"uint256[]",name:"",type:"uint256[]"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155BatchReceived",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"},{internalType:"address",name:"",type:"address"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"uint256",name:"",type:"uint256"},{internalType:"bytes",name:"",type:"bytes"}],name:"onERC1155Received",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"uint256[]",name:"roles_",type:"uint256[]"}],name:"revokeManyRoles",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address[]",name:"accounts_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"strategy",outputs:[{internalType:"enum AERC1155Incentive.Strategy",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"}],l5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b612419806100855f395ff3fe60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",m5="0x60806040526004361061025d575f3560e01c8063609d33341161014b578063cc3c0f06116100c6578063f04e283e1161007c578063f2fde38b11610062578063f2fde38b14610719578063fe9fbb801461072c578063fee81cf41461074b575f80fd5b8063f04e283e146106c1578063f23a6e61146106d4575f80fd5b8063dcc21361116100ac578063dcc2136114610679578063dcc59b6f14610698578063ec87621c146106ad575f80fd5b8063cc3c0f061461062c578063db09da121461065a575f80fd5b8063a4d66daf1161011b578063bb1757cf11610101578063bb1757cf146105a7578063bc197c81146105c6578063be4994f81461060d575f80fd5b8063a4d66daf1461056c578063a8c62e7614610581575f80fd5b8063609d333414610524578063715018a61461053857806375b238fc146105405780638da5cb5b14610554575f80fd5b80632de94807116101db578063474f5a44116101ab5780634e7165a2116101915780634e7165a2146104bb578063514e62fc146104e757806354d1f13d1461051c575f80fd5b8063474f5a441461045f5780634a4ee7b1146104a8575f80fd5b80632de948071461039f57806338d52e0f146103d05780634359d28a14610421578063439fab9114610440575f80fd5b80631c10893f11610230578063228cb73311610216578063228cb73314610324578063256929621461033857806328d6183b14610340575f80fd5b80631c10893f146102dc5780631cd64df4146102ef575f80fd5b806301ffc9a71461026157806307621eca1461029557806317d70f7c146102b2578063183a4f6e146102c7575b5f80fd5b34801561026c575f80fd5b5061028061027b366004611760565b61077c565b60405190151581526020015b60405180910390f35b3480156102a0575f80fd5b505f545b60405190815260200161028c565b3480156102bd575f80fd5b506102a460045481565b6102da6102d536600461179f565b610823565b005b6102da6102ea3660046117e7565b610830565b3480156102fa575f80fd5b506102806103093660046117e7565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561032f575f80fd5b506102a45f5481565b6102da610846565b34801561034b575f80fd5b507f9e4fa10b000000000000000000000000000000000000000000000000000000005b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161028c565b3480156103aa575f80fd5b506102a46103b9366004611811565b638b78c6d8600c9081525f91909152602090205490565b3480156103db575f80fd5b506006546103fc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161028c565b34801561042c575f80fd5b506102da61043b366004611874565b610893565b34801561044b575f80fd5b506102da61045a36600461191e565b61098d565b34801561046a575f80fd5b5061047e61047936600461191e565b610ced565b6040805192835273ffffffffffffffffffffffffffffffffffffffff90911660208301520161028c565b6102da6104b63660046117e7565b610ede565b3480156104c6575f80fd5b506104da6104d536600461191e565b610ef0565b60405161028c919061198b565b3480156104f2575f80fd5b506102806105013660046117e7565b638b78c6d8600c9081525f9290925260209091205416151590565b6102da610fbf565b34801561052f575f80fd5b506104da610ff8565b6102da611084565b34801561054b575f80fd5b506102a4600281565b34801561055f575f80fd5b50638b78c6d819546103fc565b348015610577575f80fd5b506102a460035481565b34801561058c575f80fd5b5060025461059a9060ff1681565b60405161028c91906119de565b3480156105b2575f80fd5b506102806105c13660046119ec565b611097565b3480156105d1575f80fd5b5061036e6105e0366004611a3d565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610618575f80fd5b506102da610627366004611874565b611275565b348015610637575f80fd5b5061028061064636600461179f565b60016020525f908152604090205460ff1681565b348015610665575f80fd5b506102806106743660046119ec565b611313565b348015610684575f80fd5b506102da610693366004611874565b611333565b3480156106a3575f80fd5b506102a460075481565b3480156106b8575f80fd5b506102a4600181565b6102da6106cf366004611811565b6113d1565b3480156106df575f80fd5b5061036e6106ee366004611b00565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6102da610727366004611811565b61140b565b348015610737575f80fd5b50610280610746366004611811565b611431565b348015610756575f80fd5b506102a4610765366004611811565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f9e4fa10b00000000000000000000000000000000000000000000000000000000148061080e57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b8061081d575061081d82611490565b92915050565b61082d33826114e5565b50565b6108386114f0565b610842828261150a565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b600261089e81611516565b8382146108d7576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985575f8484838181106108f4576108f4611b77565b90506020020160208101906109099190611ba4565b905080151560010361094b5761094687878481811061092a5761092a611b77565b905060200201602081019061093f9190611811565b600161150a565b61097c565b61097c87878481811061096057610960611b77565b90506020020160208101906109759190611811565b60016114e5565b506001016108d9565b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156109de5760018160011c14303b106109d55763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6109ec83850185611cc7565b60015f81905590915081602001516001811115610a0b57610a0b61199d565b03610a42576040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001515f03610a7f576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805160408083015190517efdd58e00000000000000000000000000000000000000000000000000000000815230600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015610af5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190611d81565b90508160600151811015610b8a57815160608301516040517f5c54305e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820183905260448201526064015b60405180910390fd5b8151600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020820151600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018381811115610c0e57610c0e61199d565b0217905550604082015160045560608201516003556080820151600590610c359082611e34565b50610c3f33611547565b610c4e8260a00151600161158f565b60065460025460045460035460405173ffffffffffffffffffffffffffffffffffffffff909416937fab00ab125656c990b2b193b6b0915d55011716161bbb600d22a37eeaf5c2dd5c93610ca99360ff909116929091611f2d565b60405180910390a250508015610ce8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806001610cfa81611516565b5f610d0785870187611f4c565b90505f8160200151806020019051810190610d229190611d81565b9050600754600354610d349190611ff8565b811115610d8e573382604051602001610d4d919061200b565b60408051601f19818403018152908290527f4139d81d000000000000000000000000000000000000000000000000000000008252610b81929160040161204d565b8060035f828254610d9f9190611ff8565b909155505060065482516004805460208601516040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9095169463f242432a94610e0a943094919391928992910161207b565b5f604051808303815f87803b158015610e21575f80fd5b505af1158015610e33573d5f803e3d5ffd5b5050835160065460045460208088015160405173ffffffffffffffffffffffffffffffffffffffff80871698507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d39750610e95969516949392899291016120dc565b60408051601f1981840301815290829052610eaf9161198b565b60405180910390a260065490945073ffffffffffffffffffffffffffffffffffffffff16925050509250929050565b610ee66114f0565b61084282826114e5565b60605f610eff83850185611cc7565b60408051608081019091529091508060028152602001825f015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001604051806060016040528084604001518152602001846060015181526020018460800151815250604051602001610f87919061215b565b60408051601f19818403018152918152915251610fa79190602001612189565b60405160208183030381529060405291505092915050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6005805461100590611d98565b80601f016020809104026020016040519081016040528092919081815260200182805461103190611d98565b801561107c5780601f106110535761010080835404028352916020019161107c565b820191905f5260205f20905b81548152906001019060200180831161105f57829003601f168201915b505050505081565b61108c6114f0565b6110955f6115d0565b565b5f6110a06114f0565b5f6110ab848461161a565b90505f60025460ff1660018111156110c5576110c561199d565b03611269576110d38161164d565b611109576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60078054905f611118836121ff565b90915550505f8181526001602081905260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016821790556006546004805493517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169363f242432a936111b59330938c9392918c918c9101612236565b5f604051808303815f87803b1580156111cc575f80fd5b505af11580156111de573d5f803e3d5ffd5b505060065460045460405173ffffffffffffffffffffffffffffffffffffffff808b1695507f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d3945061123d9316918a916001908b908b906020016122ac565b60408051601f19818403018152908290526112579161198b565b60405180910390a2600191505061126e565b5f9150505b9392505050565b600261128081611516565b8382146112b9576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b848110156109855761130b8686838181106112d8576112d8611b77565b90506020020160208101906112ed9190611811565b8585848181106112ff576112ff611b77565b9050602002013561150a565b6001016112bb565b5f8061131f848461161a565b905061132a8161164d565b95945050505050565b600261133e81611516565b838214611377576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b84811015610985576113c986868381811061139657611396611b77565b90506020020160208101906113ab9190611811565b8585848181106113bd576113bd611b77565b905060200201356114e5565b600101611379565b6113d96114f0565b63389a75e1600c52805f526020600c2080544211156113ff57636f5e88185f526004601cfd5b5f905561082d816115d0565b6114136114f0565b8060601b61142857637448fbae5f526004601cfd5b61082d816115d0565b5f8173ffffffffffffffffffffffffffffffffffffffff16611456638b78c6d8195490565b73ffffffffffffffffffffffffffffffffffffffff16148061081d5750638b78c6d8600c9081525f8390526020902054600316151561081d565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa921670500000000000000000000000000000000000000000000000000000000148061081d575061081d82611673565b61084282825f611709565b638b78c6d819543314611095576382b429005f526004601cfd5b61084282826001611709565b638b78c6d81954331461082d57638b78c6d8600c52335f52806020600c20541661082d576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16638b78c6d819819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b638b78c6d8600c52815f52806020600c205580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a35050565b638b78c6d819805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f8061162883850185612324565b90505f816020015180602001905181019061164391906123a1565b5195945050505050565b5f8181526001602052604081205460ff1615801561081d57506003546007541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061081d57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461081d565b638b78c6d8600c52825f526020600c2080548381178361172a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b5f60208284031215611770575f80fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461126e575f80fd5b5f602082840312156117af575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461082d575f80fd5b80356117e2816117b6565b919050565b5f80604083850312156117f8575f80fd5b8235611803816117b6565b946020939093013593505050565b5f60208284031215611821575f80fd5b813561126e816117b6565b5f8083601f84011261183c575f80fd5b50813567ffffffffffffffff811115611853575f80fd5b6020830191508360208260051b850101111561186d575f80fd5b9250929050565b5f805f8060408587031215611887575f80fd5b843567ffffffffffffffff81111561189d575f80fd5b6118a98782880161182c565b909550935050602085013567ffffffffffffffff8111156118c8575f80fd5b6118d48782880161182c565b95989497509550505050565b5f8083601f8401126118f0575f80fd5b50813567ffffffffffffffff811115611907575f80fd5b60208301915083602082850101111561186d575f80fd5b5f806020838503121561192f575f80fd5b823567ffffffffffffffff811115611945575f80fd5b611951858286016118e0565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61126e602083018461195d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106119da576119da61199d565b9052565b6020810161081d82846119ca565b5f805f604084860312156119fe575f80fd5b8335611a09816117b6565b9250602084013567ffffffffffffffff811115611a24575f80fd5b611a30868287016118e0565b9497909650939450505050565b5f805f805f805f8060a0898b031215611a54575f80fd5b8835611a5f816117b6565b97506020890135611a6f816117b6565b9650604089013567ffffffffffffffff811115611a8a575f80fd5b611a968b828c0161182c565b909750955050606089013567ffffffffffffffff811115611ab5575f80fd5b611ac18b828c0161182c565b909550935050608089013567ffffffffffffffff811115611ae0575f80fd5b611aec8b828c016118e0565b999c989b5096995094979396929594505050565b5f805f805f8060a08789031215611b15575f80fd5b8635611b20816117b6565b95506020870135611b30816117b6565b94506040870135935060608701359250608087013567ffffffffffffffff811115611b59575f80fd5b611b6589828a016118e0565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611bb4575f80fd5b8135801515811461126e575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611c1357611c13611bc3565b60405290565b6040805190810167ffffffffffffffff81118282101715611c1357611c13611bc3565b5f82601f830112611c4b575f80fd5b813567ffffffffffffffff811115611c6557611c65611bc3565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611c9457611c94611bc3565b604052818152838201602001851015611cab575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611cd7575f80fd5b813567ffffffffffffffff811115611ced575f80fd5b820160c08185031215611cfe575f80fd5b611d06611bf0565b8135611d11816117b6565b8152602082013560028110611d24575f80fd5b60208201526040828101359082015260608083013590820152608082013567ffffffffffffffff811115611d56575f80fd5b611d6286828501611c3c565b608083015250611d7460a083016117d7565b60a0820152949350505050565b5f60208284031215611d91575f80fd5b5051919050565b600181811c90821680611dac57607f821691505b602082108103611de3577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610ce857805f5260205f20601f840160051c81016020851015611e0e5750805b601f840160051c820191505b81811015611e2d575f8155600101611e1a565b5050505050565b815167ffffffffffffffff811115611e4e57611e4e611bc3565b611e6281611e5c8454611d98565b84611de9565b6020601f821160018114611eb3575f8315611e7d5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455611e2d565b5f84815260208120601f198516915b82811015611ee25787850151825560209485019460019092019101611ec2565b5084821015611f1e57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60608101611f3b82866119ca565b602082019390935260400152919050565b5f60208284031215611f5c575f80fd5b813567ffffffffffffffff811115611f72575f80fd5b820160408185031215611f83575f80fd5b611f8b611c19565b8135611f96816117b6565b8152602082013567ffffffffffffffff811115611fb1575f80fd5b611fbd86828501611c3c565b602083015250949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8181038181111561081d5761081d611fcb565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201525f6020830151604080840152612045606084018261195d565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f612045604083018461195d565b73ffffffffffffffffffffffffffffffffffffffff8616815273ffffffffffffffffffffffffffffffffffffffff8516602082015283604082015282606082015260a060808201525f6120d160a083018461195d565b979650505050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008560601b1660148201528360288201528260488201525f82518060208501606885015e5f92016068019182525095945050505050565b6020815281516020820152602082015160408201525f6040830151606080840152612045608084018261195d565b602081525f8251600381106121a0576121a061199d565b8060208401525073ffffffffffffffffffffffffffffffffffffffff602084015116604083015273ffffffffffffffffffffffffffffffffffffffff6040840151166060830152606083015160808084015261204560a084018261195d565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222f5761222f611fcb565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8616602082015284604082015283606082015260a060808201528160a0820152818360c08301375f81830160c090810191909152601f909201601f1916010195945050505050565b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008760601b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008660601b166014820152846028820152836048820152818360688301375f910160680190815295945050505050565b5f60208284031215612334575f80fd5b813567ffffffffffffffff81111561234a575f80fd5b82016040818503121561235b575f80fd5b612363611c19565b813567ffffffffffffffff811115612379575f80fd5b61238586828501611c3c565b825250602082013567ffffffffffffffff811115611fb1575f80fd5b5f60208284031280156123b2575f80fd5b506040516020810167ffffffffffffffff811182821017156123d6576123d6611bc3565b604052915182525091905056fea2646970667358221220a979a52950ce832d567a08c8391cfd3c73e1343604124b34b12aee95c4cb6f6f64736f6c634300081a0033",T5={},h5={},L0={_format:p5,contractName:o5,sourceName:u5,abi:y5,bytecode:l5,deployedBytecode:m5,linkReferences:T5,deployedLinkReferences:h5},w5="hh-sol-artifact-1",v5="PointsIncentive",g5="contracts/incentives/PointsIncentive.sol",M5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"ClaimFailed",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotClaimable",type:"error"},{inputs:[],name:"NotImplemented",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes",name:"data",type:"bytes"}],name:"Claimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"venue",type:"address"},{indexed:!1,internalType:"bytes4",name:"selector",type:"bytes4"},{indexed:!1,internalType:"uint256",name:"reward",type:"uint256"},{indexed:!1,internalType:"uint256",name:"limit",type:"uint256"}],name:"PointsIncentiveInitialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"uint256",name:"roles",type:"uint256"}],name:"RolesUpdated",type:"event"},{inputs:[],name:"asset",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"claim",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"claimed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"claims",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"clawback",outputs:[{internalType:"uint256",name:"",type:"uint256"},{internalType:"address",name:"",type:"address"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"currentReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"grantRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAllRoles",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"hasAnyRole",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"claimTarget",type:"address"},{internalType:"bytes",name:"",type:"bytes"}],name:"isClaimable",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"limit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"",type:"bytes"}],name:"preflight",outputs:[{internalType:"bytes",name:"budgetData",type:"bytes"}],stateMutability:"pure",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"roles",type:"uint256"}],name:"renounceRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"roles",type:"uint256"}],name:"revokeRoles",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"reward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"rolesOf",outputs:[{internalType:"uint256",name:"roles",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"selector",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"venue",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"}],x5="0x6080604052348015600e575f80fd5b5060156019565b6078565b63409feecd198054600181161560365763f92ee8a95f526004601cfd5b8160c01c808260011c146073578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6113ca806100855f395ff3fe6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",I5="0x6080604052600436106101af575f3560e01c8063514e62fc116100e7578063c884ef8311610087578063ea3d508a11610062578063ea3d508a14610543578063f04e283e1461055c578063f2fde38b1461056f578063fee81cf414610582575f80fd5b8063c884ef83146104e1578063db09da121461050f578063dcc59b6f1461052e575f80fd5b80638da5cb5b116100c25780638da5cb5b1461044e578063a270a73714610481578063a4d66daf146104ad578063bb1757cf146104c2575f80fd5b8063514e62fc1461040957806354d1f13d1461043e578063715018a614610446575f80fd5b806328d6183b11610152578063439fab911161012d578063439fab9114610354578063474f5a44146103735780634a4ee7b1146103bc5780634e7165a2146103cf575f80fd5b806328d6183b1461027d5780632de94807146102dc57806338d52e0f1461030d575f80fd5b80631c10893f1161018d5780631c10893f146102195780631cd64df41461022c578063228cb733146102615780632569296214610275575f80fd5b806301ffc9a7146101b357806307621eca146101e7578063183a4f6e14610204575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461108b565b6105b3565b60405190151581526020015b60405180910390f35b3480156101f2575f80fd5b505f545b6040519081526020016101de565b6102176102123660046110ab565b61060e565b005b6102176102273660046110e3565b61061b565b348015610237575f80fd5b506101d26102463660046110e3565b638b78c6d8600c9081525f9290925260209091205481161490565b34801561026c575f80fd5b506101f65f5481565b610217610631565b348015610288575f80fd5b507f0d36a40d000000000000000000000000000000000000000000000000000000005b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016101de565b3480156102e7575f80fd5b506101f66102f636600461110d565b638b78c6d8600c9081525f91909152602090205490565b348015610318575f80fd5b5073deaddeaddeaddeaddeaddeaddeaddeaddeaddead5b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b34801561035f575f80fd5b5061021761036e36600461116d565b61067e565b34801561037e575f80fd5b5061039261038d36600461116d565b610890565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016101de565b6102176103ca3660046110e3565b6108c4565b3480156103da575f80fd5b506103fc6103e936600461116d565b5050604080515f81526020810190915290565b6040516101de91906111ac565b348015610414575f80fd5b506101d26104233660046110e3565b638b78c6d8600c9081525f9290925260209091205416151590565b6102176108d6565b61021761090f565b348015610459575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275461032f565b34801561048c575f80fd5b5060025461032f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104b8575f80fd5b506101f660035481565b3480156104cd575f80fd5b506101d26104dc3660046111ff565b610922565b3480156104ec575f80fd5b506101d26104fb36600461110d565b60016020525f908152604090205460ff1681565b34801561051a575f80fd5b506101d26105293660046111ff565b610d52565b348015610539575f80fd5b506101f660055481565b34801561054e575f80fd5b506004546102ab9060e01b81565b61021761056a36600461110d565b610d64565b61021761057d36600461110d565b610d9e565b34801561058d575f80fd5b506101f661059c36600461110d565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f0d36a40d000000000000000000000000000000000000000000000000000000001480610608575061060882610dc4565b92915050565b6106183382610e19565b50565b610623610e24565b61062d8282610e59565b5050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106cf5760018160011c14303b106106c65763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f6106dd83850185611250565b905080604001515f14806106f357506060810151155b1561072a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556020810151600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660e09290921c91909117905560408101515f5560608101516003556107bf33610e65565b805f015173ffffffffffffffffffffffffffffffffffffffff167fef49c8fd80435c15980f0f55660ffaac9417e5843768f7f21566cfad2d19bfe782602001518360400151846060015160405161084d939291907fffffffff000000000000000000000000000000000000000000000000000000009390931683526020830191909152604082015260600190565b60405180910390a250801561088b576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f806040517fd623472500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108cc610e24565b61062d8282610e19565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b610917610e24565b6109205f610ec8565b565b5f61092b610e24565b600254604080517f8da5cb5b000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169130918391638da5cb5b916004808201926020929091908290030181865afa15801561099d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c191906112e8565b73ffffffffffffffffffffffffffffffffffffffff1614158015610a7a57506040517f514e62fc0000000000000000000000000000000000000000000000000000000081523060048201526002602482015273ffffffffffffffffffffffffffffffffffffffff82169063514e62fc90604401602060405180830381865afa158015610a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a739190611303565b1515600114155b15610ab1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aba85610f2d565b610af0576040517f6247a84e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60058054905f610aff83611322565b909155505073ffffffffffffffffffffffffffffffffffffffff8581165f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915560025460045483549251602481019590955260448501929092529193919091169160e09190911b90606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610c0a919061137e565b5f604051808303815f865af19150503d805f8114610c43576040519150601f19603f3d011682016040523d82523d5f602084013e610c48565b606091505b5050905080610c83576040517f360e42e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002545f546040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811660208301529289901b9092166034830152604882015273ffffffffffffffffffffffffffffffffffffffff8716907f9ad2e7a4af16dceda9cce4274b2f59c328d8c012eb0e15eb5e1e73b7d8f264d390606801604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3e916111ac565b60405180910390a250600195945050505050565b5f610d5c84610f2d565b949350505050565b610d6c610e24565b63389a75e1600c52805f526020600c208054421115610d9257636f5e88185f526004601cfd5b5f905561061881610ec8565b610da6610e24565b8060601b610dbb57637448fbae5f526004601cfd5b61061881610ec8565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fa9216705000000000000000000000000000000000000000000000000000000001480610608575061060882610f6a565b61062d82825f611000565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610920576382b429005f526004601cfd5b61062d82826001611000565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b73ffffffffffffffffffffffffffffffffffffffff81165f9081526001602052604081205460ff1615801561060857506003546005541092915050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061060857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610608565b638b78c6d8600c52825f526020600c20805483811783611021575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f80a3505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114611086575f80fd5b919050565b5f6020828403121561109b575f80fd5b6110a482611057565b9392505050565b5f602082840312156110bb575f80fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610618575f80fd5b5f80604083850312156110f4575f80fd5b82356110ff816110c2565b946020939093013593505050565b5f6020828403121561111d575f80fd5b81356110a4816110c2565b5f8083601f840112611138575f80fd5b50813567ffffffffffffffff81111561114f575f80fd5b602083019150836020828501011115611166575f80fd5b9250929050565b5f806020838503121561117e575f80fd5b823567ffffffffffffffff811115611194575f80fd5b6111a085828601611128565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f805f60408486031215611211575f80fd5b833561121c816110c2565b9250602084013567ffffffffffffffff811115611237575f80fd5b61124386828701611128565b9497909650939450505050565b5f6080828403128015611261575f80fd5b506040516080810167ffffffffffffffff811182821017156112aa577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405282356112b8816110c2565b81526112c660208401611057565b6020820152604083810135908201526060928301359281019290925250919050565b5f602082840312156112f8575f80fd5b81516110a4816110c2565b5f60208284031215611313575f80fd5b815180151581146110a4575f80fd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611377577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b5f82518060208501845e5f92019182525091905056fea264697066735822122079bb08e80a9bd9117e174b7d6f5a63383597f9fcb4a121e18bc1685a513d4f3f64736f6c634300081a0033",A5={},E5={},F0={_format:w5,contractName:v5,sourceName:g5,abi:M5,bytecode:x5,deployedBytecode:I5,linkReferences:A5,deployedLinkReferences:E5},R5="hh-sol-artifact-1",O5="LimitedSignerValidator",C5="contracts/validators/LimitedSignerValidator.sol",_5=[{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[{internalType:"address",name:"claimant",type:"address"}],name:"MaximumClaimed",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"}],name:"hashClaimantData",outputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"maxClaimCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"quantityClaimed",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],B5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161194d6100c45f395f50505f50505f50505f50505f505061194d5ff3fe60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",P5="0x60806040526004361061013d575f3560e01c8063715018a6116100bb578063ce5c134f11610071578063f04e283e11610057578063f04e283e1461036d578063f2fde38b14610380578063fee81cf414610393575f80fd5b8063ce5c134f14610339578063d3de6e751461034e575f80fd5b806384b0196e116100a157806384b0196e146102a05780638da5cb5b146102c7578063a1d2756f1461031a575f80fd5b8063715018a61461026a578063736c0d5b14610272575f80fd5b80632f9e058b11610110578063439fab91116100f6578063439fab911461023057806354d1f13d1461024f578063703b690014610257575f80fd5b80632f9e058b146101e65780634359d28a14610211575f80fd5b806301ffc9a7146101415780630668e9d41461017557806325692962146101a257806328d6183b146101ac575b5f80fd5b34801561014c575f80fd5b5061016061015b36600461110d565b6103c4565b60405190151581526020015b60405180910390f35b348015610180575f80fd5b5061019461018f36600461116d565b61041f565b60405190815260200161016c565b6101aa610480565b005b3480156101b7575f80fd5b506040517fc8ebc75800000000000000000000000000000000000000000000000000000000815260200161016c565b3480156101f1575f80fd5b506101946102003660046111a3565b60016020525f908152604090205481565b34801561021c575f80fd5b506101aa61022b366004611202565b6104cd565b34801561023b575f80fd5b506101aa61024a3660046112ac565b6105c9565b6101aa61075e565b6101606102653660046112eb565b610797565b6101aa61080d565b34801561027d575f80fd5b5061016061028c366004611350565b5f6020819052908152604090205460ff1681565b3480156102ab575f80fd5b506102b4610820565b60405161016c97969594939291906113b7565b3480156102d2575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016c565b348015610325575f80fd5b506101aa610334366004611350565b6108c8565b348015610344575f80fd5b5061019460025481565b348015610359575f80fd5b506101946103683660046115c0565b610917565b6101aa61037b366004611350565b6109aa565b6101aa61038e366004611350565b6109e7565b34801561039e575f80fd5b506101946103ad366004611350565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610a0d565b92915050565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016908201525f906074016040516020818303038152906040528051906020012090505b9392505050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6104d5610a62565b82811461050e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156105c25782828281811061052a5761052a611628565b905060200201602081019061053f9190611655565b5f8087878581811061055357610553611628565b90506020020160208101906105689190611350565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610510565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561061a5760018160011c14303b106106115763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f808061062a85870187611684565b925092509250610652835f8151811061064557610645611628565b6020026020010151610a97565b60028190555f5b83518110156106dc5760015f8086848151811061067857610678611628565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610659565b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055508015610759576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b5f6107a3868686610afa565b6107f6576040517f059b704500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024015b60405180910390fd5b6108038686868686610b54565b9695505050505050565b610815610a62565b61081e5f610cdc565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108b6604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b6108d0610a62565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109a19060c00160405160208183030381529060405280519060200120610d41565b95945050505050565b6109b2610a62565b63389a75e1600c52805f526020600c2080544211156109d857636f5e88185f526004601cfd5b5f90556109e481610cdc565b50565b6109ef610a62565b8060601b610a0457637448fbae5f526004601cfd5b6109e481610cdc565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fc8ebc758000000000000000000000000000000000000000000000000000000001480610419575061041982610d6d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff7487392754331461081e576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b5f80610b0785858561041f565b5f8181526001602081905260408220549293509091610b2591611754565b9050600254811115610b3b575f92505050610479565b5f91825260016020819052604090922055949350505050565b6004545f9073ffffffffffffffffffffffffffffffffffffffff163314610ba7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610bb48385018561178c565b90505f815f0151806020019051810190610bce919061184c565b90505f610be5898360400151898660200151610917565b905087826040015160ff1611610c395760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff9091166004820152602481018990526044016107ed565b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff16610c98576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ca46003828a610dc2565b60208201518251610ccf9173ffffffffffffffffffffffffffffffffffffffff909116908390610e50565b9998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d4a610f5a565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b22000000000000000000000000000000000000000000000000000000001480610419575061041982611027565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610e1957815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610e4657835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f831561047957604051835f5260208301516040526040835103610ec9576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610ec757505f606052604052506001610479565b505b6041835103610f0c5760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610f0a57505f606052604052506001610479565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150509392505050565b5f805f80610fcc604080518082018252601681527f4c696d697465645369676e657256616c696461746f72000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c0000000000000000000000000000000000000000000000000000000014806104195750610419825f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061041957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610419565b5f6020828403121561111d575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610479575f80fd5b73ffffffffffffffffffffffffffffffffffffffff811681146109e4575f80fd5b5f805f6060848603121561117f575f80fd5b833592506020840135915060408401356111988161114c565b809150509250925092565b5f602082840312156111b3575f80fd5b5035919050565b5f8083601f8401126111ca575f80fd5b50813567ffffffffffffffff8111156111e1575f80fd5b6020830191508360208260051b85010111156111fb575f80fd5b9250929050565b5f805f8060408587031215611215575f80fd5b843567ffffffffffffffff81111561122b575f80fd5b611237878288016111ba565b909550935050602085013567ffffffffffffffff811115611256575f80fd5b611262878288016111ba565b95989497509550505050565b5f8083601f84011261127e575f80fd5b50813567ffffffffffffffff811115611295575f80fd5b6020830191508360208285010111156111fb575f80fd5b5f80602083850312156112bd575f80fd5b823567ffffffffffffffff8111156112d3575f80fd5b6112df8582860161126e565b90969095509350505050565b5f805f805f608086880312156112ff575f80fd5b853594506020860135935060408601356113188161114c565b9250606086013567ffffffffffffffff811115611333575f80fd5b61133f8882890161126e565b969995985093965092949392505050565b5f60208284031215611360575f80fd5b81356104798161114c565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f6113f160e083018961136b565b8281036040840152611403818961136b565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611465578351835260209384019390920191600101611447565b50909b9a5050505050505050505050565b60ff811681146109e4575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff811182821017156114d4576114d4611484565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561152157611521611484565b604052919050565b5f67ffffffffffffffff82111561154257611542611484565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261157d575f80fd5b813561159061158b82611529565b6114da565b8181528460208386010111156115a4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80608085870312156115d3575f80fd5b8435935060208501356115e581611476565b925060408501356115f58161114c565b9150606085013567ffffffffffffffff811115611610575f80fd5b61161c8782880161156e565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215611665575f80fd5b81358015158114610479575f80fd5b803561167f8161114c565b919050565b5f805f60608486031215611696575f80fd5b833567ffffffffffffffff8111156116ac575f80fd5b8401601f810186136116bc575f80fd5b803567ffffffffffffffff8111156116d6576116d6611484565b8060051b6116e6602082016114da565b91825260208184018101929081019089841115611701575f80fd5b6020850194505b8385101561172f578435925061171d8361114c565b82825260209485019490910190611708565b809750505050505061174360208501611674565b929592945050506040919091013590565b80820180821115610419577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6020828403121561179c575f80fd5b813567ffffffffffffffff8111156117b2575f80fd5b8201604081850312156117c3575f80fd5b6040805190810167ffffffffffffffff811182821017156117e6576117e6611484565b604052813567ffffffffffffffff8111156117ff575f80fd5b61180b8682850161156e565b825250602082013567ffffffffffffffff811115611827575f80fd5b6118338682850161156e565b602083015250949350505050565b805161167f81611476565b5f6020828403121561185c575f80fd5b815167ffffffffffffffff811115611872575f80fd5b820160608185031215611883575f80fd5b61188b6114b1565b81516118968161114c565b8152602082015167ffffffffffffffff8111156118b1575f80fd5b8201601f810186136118c1575f80fd5b80516118cf61158b82611529565b8181528760208385010111156118e3575f80fd5b8160208401602083015e5f6020838301015280602085015250505061190a60408301611841565b604082015294935050505056fea264697066735822122063c3658c9a3036ea162ceac551ee8d1dfba428fee8f20bcb409727cb88030d5a64736f6c634300081a0033",z5={},N5={},k0={_format:R5,contractName:O5,sourceName:C5,abi:_5,bytecode:B5,deployedBytecode:P5,linkReferences:z5,deployedLinkReferences:N5},$5="hh-sol-artifact-1",H5="SignerValidator",L5="contracts/validators/SignerValidator.sol",F5=[{inputs:[],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"AlreadyInitialized",type:"error"},{inputs:[],name:"CloneAlreadyInitialized",type:"error"},{inputs:[],name:"InitializerNotImplemented",type:"error"},{inputs:[{internalType:"uint8",name:"available",type:"uint8"},{internalType:"uint256",name:"id",type:"uint256"}],name:"InvalidIncentive",type:"error"},{inputs:[],name:"InvalidInitialization",type:"error"},{inputs:[],name:"InvalidInitializationData",type:"error"},{inputs:[],name:"LengthMismatch",type:"error"},{inputs:[],name:"NewOwnerIsZeroAddress",type:"error"},{inputs:[],name:"NoHandoverRequest",type:"error"},{inputs:[],name:"NotInitializing",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{inputs:[],name:"Unauthorized",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint64",name:"version",type:"uint64"}],name:"Initialized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"pendingOwner",type:"address"}],name:"OwnershipHandoverRequested",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"validatorCaller",type:"address"}],name:"SignerValidatorInitialized",type:"event"},{inputs:[],name:"cancelOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"completeOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"eip712Domain",outputs:[{internalType:"bytes1",name:"fields",type:"bytes1"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"version",type:"string"},{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"address",name:"verifyingContract",type:"address"},{internalType:"bytes32",name:"salt",type:"bytes32"},{internalType:"uint256[]",name:"extensions",type:"uint256[]"}],stateMutability:"view",type:"function"},{inputs:[],name:"getComponentInterface",outputs:[{internalType:"bytes4",name:"",type:"bytes4"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint8",name:"incentiveQuantity",type:"uint8"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"incentiveData",type:"bytes"}],name:"hashSignerData",outputs:[{internalType:"bytes32",name:"hashedSignerData",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"data_",type:"bytes"}],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"result",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"pendingOwner",type:"address"}],name:"ownershipHandoverExpiresAt",outputs:[{internalType:"uint256",name:"result",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"requestOwnershipHandover",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address[]",name:"signers_",type:"address[]"},{internalType:"bool[]",name:"authorized_",type:"bool[]"}],name:"setAuthorized",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newCaller",type:"address"}],name:"setValidatorCaller",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"signers",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes4",name:"interfaceId",type:"bytes4"}],name:"supportsInterface",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"boostId",type:"uint256"},{internalType:"uint256",name:"incentiveId",type:"uint256"},{internalType:"address",name:"claimant",type:"address"},{internalType:"bytes",name:"claimData",type:"bytes"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"payable",type:"function"}],k5="0x610120604052348015610010575f80fd5b50306080524660a0525f60c081905260e081905261010052610030610035565b610096565b63409feecd19805460018116156100535763f92ee8a95f526004601cfd5b8160c01c808260011c14610091578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b60805160a05160c05160e0516101005161167d6100c45f395f50505f50505f50505f50505f505061167d5ff3fe6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",S5="0x6080604052600436106100ef575f3560e01c8063736c0d5b11610087578063d3de6e7511610057578063d3de6e7514610293578063f04e283e146102c0578063f2fde38b146102d3578063fee81cf4146102e6575f80fd5b8063736c0d5b146101cc57806384b0196e146101fa5780638da5cb5b14610221578063a1d2756f14610274575f80fd5b8063439fab91116100c2578063439fab911461018a57806354d1f13d146101a9578063703b6900146101b1578063715018a6146101c4575f80fd5b806301ffc9a7146100f3578063256929621461012757806328d6183b146101315780634359d28a1461016b575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ecb565b610317565b60405190151581526020015b60405180910390f35b61012f610372565b005b34801561013c575f80fd5b506040517fb8ce7b2200000000000000000000000000000000000000000000000000000000815260200161011e565b348015610176575f80fd5b5061012f610185366004610f52565b6103bf565b348015610195575f80fd5b5061012f6101a4366004610ffc565b6104bb565b61012f61068c565b6101126101bf36600461105c565b6106c5565b61012f610851565b3480156101d7575f80fd5b506101126101e63660046110c1565b5f6020819052908152604090205460ff1681565b348015610205575f80fd5b5061020e610864565b60405161011e9796959493929190611128565b34801561022c575f80fd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff748739275460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161011e565b34801561027f575f80fd5b5061012f61028e3660046110c1565b61090c565b34801561029e575f80fd5b506102b26102ad366004611331565b61095b565b60405190815260200161011e565b61012f6102ce3660046110c1565b6109ee565b61012f6102e13660046110c1565b610a2b565b3480156102f1575f80fd5b506102b26103003660046110c1565b63389a75e1600c9081525f91909152602090205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fb8ce7b2200000000000000000000000000000000000000000000000000000000148061036c575061036c82610a51565b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f80a250565b6103c7610aa6565b828114610400576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156104b45782828281811061041c5761041c611399565b905060200201602081019061043191906113c6565b5f8087878581811061044557610445611399565b905060200201602081019061045a91906110c1565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610402565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf601132805460038255801561050c5760018160011c14303b106105035763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f8061051b848601866113f5565b91509150610541825f8151811061053457610534611399565b6020026020010151610adb565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555f5b82518110156106065760015f808584815181106105a2576105a2611399565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610583565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527f8098ebafc4f95fe5a577ff9be7c88d4445b6ef0acf915dad2b538c81b0384d7c9060200160405180910390a150508015610687576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f80a2565b6002545f9073ffffffffffffffffffffffffffffffffffffffff163314610718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610725838501856114bc565b90505f815f015180602001905181019061073f919061157c565b90505f61075689836040015189866020015161095b565b905087826040015160ff16116107ae5760408083015190517f17c66bc700000000000000000000000000000000000000000000000000000000815260ff90911660048201526024810189905260440160405180910390fd5b815173ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205460ff1661080d576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108196001828a610b3e565b602082015182516108449173ffffffffffffffffffffffffffffffffffffffff909116908390610bcc565b9998505050505050505050565b610859610aa6565b6108625f610cd7565b565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f8080836108fa604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b610914610aa6565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b8051602080830191909120604080517ffea51d5bd45bcd3c2ecc3679b43a3b80b0bd0923f8c16f822455b8cdecd9852f93810193909352820186905260ff8516606083015273ffffffffffffffffffffffffffffffffffffffff8416608083015260a08201525f906109e59060c00160405160208183030381529060405280519060200120610d3c565b95945050505050565b6109f6610aa6565b63389a75e1600c52805f526020600c208054421115610a1c57636f5e88185f526004601cfd5b5f9055610a2881610cd7565b50565b610a33610aa6565b8060601b610a4857637448fbae5f526004601cfd5b610a2881610cd7565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f5912b89c00000000000000000000000000000000000000000000000000000000148061036c575061036c82610d68565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610862576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b7f3f57fc5c000000000000000000000000000000000000000000000000000000007f4de1225a000000000000000000000000000000000000000000000000000000006007831115610b9557815f528260045260245ffd5b84602052835f5260405f206001841b81541880851c6001166001188015610bc257835f528560045260245ffd5b5090555050505050565b73ffffffffffffffffffffffffffffffffffffffff909216915f8315610cd057604051835f5260208301516040526040835103610c45576040830151601b8160ff1c016020528060011b60011c606052506020600160805f60015afa805186183d1517610c4357505f606052604052506001610cd0565b505b6041835103610c885760608301515f1a60205260408301516060526020600160805f60015afa805186183d1517610c8657505f606052604052506001610cd0565b505b5f60605280604052631626ba7e60e01b808252846004830152602482016040815284516020018060448501828860045afa505060208160443d01858a5afa9051909114169150505b9392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f610d45610dfe565b6719010000000000005f908152601a91909152603a928352604260182092525090565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f6ab67a0d00000000000000000000000000000000000000000000000000000000148061036c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461036c565b5f805f80610e70604080518082018252600f81527f5369676e657256616c696461746f7200000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b8151602092830120815191830191909120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a09020949350505050565b5f60208284031215610edb575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd0575f80fd5b5f8083601f840112610f1a575f80fd5b50813567ffffffffffffffff811115610f31575f80fd5b6020830191508360208260051b8501011115610f4b575f80fd5b9250929050565b5f805f8060408587031215610f65575f80fd5b843567ffffffffffffffff811115610f7b575f80fd5b610f8787828801610f0a565b909550935050602085013567ffffffffffffffff811115610fa6575f80fd5b610fb287828801610f0a565b95989497509550505050565b5f8083601f840112610fce575f80fd5b50813567ffffffffffffffff811115610fe5575f80fd5b602083019150836020828501011115610f4b575f80fd5b5f806020838503121561100d575f80fd5b823567ffffffffffffffff811115611023575f80fd5b61102f85828601610fbe565b90969095509350505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a28575f80fd5b5f805f805f60808688031215611070575f80fd5b853594506020860135935060408601356110898161103b565b9250606086013567ffffffffffffffff8111156110a4575f80fd5b6110b088828901610fbe565b969995985093965092949392505050565b5f602082840312156110d1575f80fd5b8135610cd08161103b565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61116260e08301896110dc565b828103604084015261117481896110dc565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156111d65783518352602093840193909201916001016111b8565b50909b9a5050505050505050505050565b60ff81168114610a28575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715611245576112456111f5565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611292576112926111f5565b604052919050565b5f67ffffffffffffffff8211156112b3576112b36111f5565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126112ee575f80fd5b81356113016112fc8261129a565b61124b565b818152846020838601011115611315575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611344575f80fd5b843593506020850135611356816111e7565b925060408501356113668161103b565b9150606085013567ffffffffffffffff811115611381575f80fd5b61138d878288016112df565b91505092959194509250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156113d6575f80fd5b81358015158114610cd0575f80fd5b80356113f08161103b565b919050565b5f8060408385031215611406575f80fd5b823567ffffffffffffffff81111561141c575f80fd5b8301601f8101851361142c575f80fd5b803567ffffffffffffffff811115611446576114466111f5565b8060051b6114566020820161124b565b91825260208184018101929081019088841115611471575f80fd5b6020850194505b8385101561149f578435925061148d8361103b565b82825260209485019490910190611478565b80965050505050506114b3602084016113e5565b90509250929050565b5f602082840312156114cc575f80fd5b813567ffffffffffffffff8111156114e2575f80fd5b8201604081850312156114f3575f80fd5b6040805190810167ffffffffffffffff81118282101715611516576115166111f5565b604052813567ffffffffffffffff81111561152f575f80fd5b61153b868285016112df565b825250602082013567ffffffffffffffff811115611557575f80fd5b611563868285016112df565b602083015250949350505050565b80516113f0816111e7565b5f6020828403121561158c575f80fd5b815167ffffffffffffffff8111156115a2575f80fd5b8201606081850312156115b3575f80fd5b6115bb611222565b81516115c68161103b565b8152602082015167ffffffffffffffff8111156115e1575f80fd5b8201601f810186136115f1575f80fd5b80516115ff6112fc8261129a565b818152876020838501011115611613575f80fd5b8160208401602083015e5f6020838301015280602085015250505061163a60408301611571565b604082015294935050505056fea264697066735822122032bca89fce2f3bb99b837cc5cdf14197bc0e5dc59150ba871f24c9de6291396864736f6c634300081a0033",G5={},D5={},S0={_format:$5,contractName:H5,sourceName:L5,abi:F5,bytecode:k5,deployedBytecode:S5,linkReferences:G5,deployedLinkReferences:D5};class U5 extends n.BaseError{constructor({docsPath:e}){super(["A constructor was not found on the ABI.","Make sure you are using the correct ABI and that the constructor exists on it."].join(`
2
+ `),{docsPath:e,name:"AbiConstructorNotFoundError"})}}class G0 extends n.BaseError{constructor({docsPath:e}){super(["Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.","Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists."].join(`
3
+ `),{docsPath:e,name:"AbiConstructorParamsNotFoundError"})}}class V5 extends n.BaseError{constructor({expectedLength:e,givenLength:b,type:a}){super([`ABI encoding array length mismatch for type ${a}.`,`Expected length: ${e}`,`Given length: ${b}`].join(`
4
+ `),{name:"AbiEncodingArrayLengthMismatchError"})}}class q5 extends n.BaseError{constructor({expectedSize:e,value:b}){super(`Size of bytes "${b}" (bytes${n.size(b)}) does not match expected size (bytes${e}).`,{name:"AbiEncodingBytesSizeMismatchError"})}}class j5 extends n.BaseError{constructor({expectedLength:e,givenLength:b}){super(["ABI encoding params/values length mismatch.",`Expected length (params): ${e}`,`Given length (values): ${b}`].join(`
5
+ `),{name:"AbiEncodingLengthMismatchError"})}}class W5 extends n.BaseError{constructor(e,{docsPath:b}){super([`Type "${e}" is not a valid encoding type.`,"Please provide a valid ABI type."].join(`
6
+ `),{docsPath:b,name:"InvalidAbiEncodingType"})}}class Z5 extends n.BaseError{constructor(e){super([`Value "${e}" is not a valid array.`].join(`
7
+ `),{name:"InvalidArrayError"})}}function Q(f){return typeof f[0]=="string"?l0(f):K5(f)}function K5(f){let e=0;for(const t of f)e+=t.length;const b=new Uint8Array(e);let a=0;for(const t of f)b.set(t,a),a+=t.length;return b}function l0(f){return`0x${f.reduce((e,b)=>e+b.replace("0x",""),"")}`}function Y5(f,e,b,{strict:a}={}){return n.isHex(f,{strict:!1})?Q5(f,e,b,{strict:a}):J5(f,e,b,{strict:a})}function Z0(f,e){if(typeof e=="number"&&e>0&&e>n.size(f)-1)throw new n.SliceOffsetOutOfBoundsError({offset:e,position:"start",size:n.size(f)})}function K0(f,e,b){if(typeof e=="number"&&typeof b=="number"&&n.size(f)!==b-e)throw new n.SliceOffsetOutOfBoundsError({offset:b,position:"end",size:n.size(f)})}function J5(f,e,b,{strict:a}={}){Z0(f,e);const t=f.slice(e,b);return a&&K0(t,e,b),t}function Q5(f,e,b,{strict:a}={}){Z0(f,e);const t=`0x${f.replace("0x","").slice((e??0)*2,(b??f.length)*2)}`;return a&&K0(t,e,b),t}const X5=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function f6(f,e){if(f.length!==e.length)throw new j5({expectedLength:f.length,givenLength:e.length});const b=e6({params:f,values:e}),a=T0(b);return a.length===0?"0x":a}function e6({params:f,values:e}){const b=[];for(let a=0;a<f.length;a++)b.push(m0({param:f[a],value:e[a]}));return b}function m0({param:f,value:e}){const b=s6(f.type);if(b){const[a,t]=b;return a6(e,{length:a,param:{...f,type:t}})}if(f.type==="tuple")return i6(e,{param:f});if(f.type==="address")return b6(e);if(f.type==="bool")return n6(e);if(f.type.startsWith("uint")||f.type.startsWith("int")){const a=f.type.startsWith("int"),[,,t="256"]=X5.exec(f.type)??[];return d6(e,{signed:a,size:Number(t)})}if(f.type.startsWith("bytes"))return t6(e,{param:f});if(f.type==="string")return c6(e);throw new W5(f.type,{docsPath:"/docs/contract/encodeAbiParameters"})}function T0(f){let e=0;for(let d=0;d<f.length;d++){const{dynamic:c,encoded:r}=f[d];c?e+=32:e+=n.size(r)}const b=[],a=[];let t=0;for(let d=0;d<f.length;d++){const{dynamic:c,encoded:r}=f[d];c?(b.push(n.numberToHex(e+t,{size:32})),a.push(r),t+=n.size(r)):b.push(r)}return Q([...b,...a])}function b6(f){if(!n.isAddress(f))throw new n.InvalidAddressError({address:f});return{dynamic:!1,encoded:n.padHex(f.toLowerCase())}}function a6(f,{length:e,param:b}){const a=e===null;if(!Array.isArray(f))throw new Z5(f);if(!a&&f.length!==e)throw new V5({expectedLength:e,givenLength:f.length,type:`${b.type}[${e}]`});let t=!1;const d=[];for(let c=0;c<f.length;c++){const r=m0({param:b,value:f[c]});r.dynamic&&(t=!0),d.push(r)}if(a||t){const c=T0(d);if(a){const r=n.numberToHex(d.length,{size:32});return{dynamic:!0,encoded:d.length>0?Q([r,c]):r}}if(t)return{dynamic:!0,encoded:c}}return{dynamic:!1,encoded:Q(d.map(({encoded:c})=>c))}}function t6(f,{param:e}){const[,b]=e.type.split("bytes"),a=n.size(f);if(!b){let t=f;return a%32!==0&&(t=n.padHex(t,{dir:"right",size:Math.ceil((f.length-2)/2/32)*32})),{dynamic:!0,encoded:Q([n.padHex(n.numberToHex(a,{size:32})),t])}}if(a!==Number.parseInt(b))throw new q5({expectedSize:Number.parseInt(b),value:f});return{dynamic:!1,encoded:n.padHex(f,{dir:"right"})}}function n6(f){if(typeof f!="boolean")throw new n.BaseError(`Invalid boolean value: "${f}" (type: ${typeof f}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:n.padHex(n.boolToHex(f))}}function d6(f,{signed:e,size:b=256}){if(typeof b=="number"){const a=2n**(BigInt(b)-(e?1n:0n))-1n,t=e?-a-1n:0n;if(f>a||f<t)throw new n.IntegerOutOfRangeError({max:a.toString(),min:t.toString(),signed:e,size:b/8,value:f.toString()})}return{dynamic:!1,encoded:n.numberToHex(f,{size:32,signed:e})}}function c6(f){const e=n.stringToHex(f),b=Math.ceil(n.size(e)/32),a=[];for(let t=0;t<b;t++)a.push(n.padHex(Y5(e,t*32,(t+1)*32),{dir:"right"}));return{dynamic:!0,encoded:Q([n.padHex(n.numberToHex(n.size(e),{size:32})),...a])}}function i6(f,{param:e}){let b=!1;const a=[];for(let t=0;t<e.components.length;t++){const d=e.components[t],c=Array.isArray(f)?t:d.name,r=m0({param:d,value:f[c]});a.push(r),r.dynamic&&(b=!0)}return{dynamic:b,encoded:b?T0(a):Q(a.map(({encoded:t})=>t))}}function s6(f){const e=f.match(/^(.*)\[(\d+)?\]$/);return e?[e[2]?Number(e[2]):null,e[1]]:void 0}const t0="/docs/contract/encodeDeployData";function r6(f){const{abi:e,args:b,bytecode:a}=f;if(!b||b.length===0)return a;const t=e.find(c=>"type"in c&&c.type==="constructor");if(!t)throw new U5({docsPath:t0});if(!("inputs"in t))throw new G0({docsPath:t0});if(!t.inputs||t.inputs.length===0)throw new G0({docsPath:t0});const d=f6(t.inputs,b);return l0([a,d])}class p6 extends n.BaseError{constructor({docsPath:e}={}){super(["Could not find an Account to execute with this Action.","Please provide an Account with the `account` argument on the Action, or by supplying an `account` to the Client."].join(`
8
+ `),{docsPath:e,docsSlug:"account",name:"AccountNotFoundError"})}}class n0 extends n.BaseError{constructor({docsPath:e,metaMessages:b,type:a}){super(`Account type "${a}" is not supported.`,{docsPath:e,metaMessages:b,name:"AccountTypeNotSupportedError"})}}function o6(f){const e=n.keccak256(`0x${f.substring(4)}`).substring(26);return n.checksumAddress(`0x${e}`)}async function u6({hash:f,signature:e}){const b=n.isHex(f)?f:n.toHex(f),{secp256k1:a}=await Promise.resolve().then(()=>require("../utils-dz3mUqTs.cjs")).then(c=>c.secp256k1);return`0x${(()=>{if(typeof e=="object"&&"r"in e&&"s"in e){const{r:s,s:p,v:u,yParity:o}=e,T=Number(o??u),l=D0(T);return new a.Signature(n.hexToBigInt(s),n.hexToBigInt(p)).addRecoveryBit(l)}const c=n.isHex(e)?e:n.toHex(e),r=n.hexToNumber(`0x${c.slice(130)}`),i=D0(r);return a.Signature.fromCompact(c.substring(2,130)).addRecoveryBit(i)})().recoverPublicKey(b.substring(2)).toHex(!1)}`}function D0(f){if(f===0||f===1)return f;if(f===27)return 0;if(f===28)return 1;throw new Error("Invalid yParityOrV value")}async function y6({hash:f,signature:e}){return o6(await u6({hash:f,signature:e}))}class U0 extends n.BaseError{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`,{name:"NegativeOffsetError"})}}class l6 extends n.BaseError{constructor({length:e,position:b}){super(`Position \`${b}\` is out of bounds (\`0 < position < ${e}\`).`,{name:"PositionOutOfBoundsError"})}}class m6 extends n.BaseError{constructor({count:e,limit:b}){super(`Recursive read limit of \`${b}\` exceeded (recursive read count: \`${e}\`).`,{name:"RecursiveReadLimitExceededError"})}}const T6={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:Number.POSITIVE_INFINITY,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new m6({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(f){if(f<0||f>this.bytes.length-1)throw new l6({length:this.bytes.length,position:f})},decrementPosition(f){if(f<0)throw new U0({offset:f});const e=this.position-f;this.assertPosition(e),this.position=e},getReadCount(f){return this.positionReadCount.get(f||this.position)||0},incrementPosition(f){if(f<0)throw new U0({offset:f});const e=this.position+f;this.assertPosition(e),this.position=e},inspectByte(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectBytes(f,e){const b=e??this.position;return this.assertPosition(b+f-1),this.bytes.subarray(b,b+f)},inspectUint8(f){const e=f??this.position;return this.assertPosition(e),this.bytes[e]},inspectUint16(f){const e=f??this.position;return this.assertPosition(e+1),this.dataView.getUint16(e)},inspectUint24(f){const e=f??this.position;return this.assertPosition(e+2),(this.dataView.getUint16(e)<<8)+this.dataView.getUint8(e+2)},inspectUint32(f){const e=f??this.position;return this.assertPosition(e+3),this.dataView.getUint32(e)},pushByte(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushBytes(f){this.assertPosition(this.position+f.length-1),this.bytes.set(f,this.position),this.position+=f.length},pushUint8(f){this.assertPosition(this.position),this.bytes[this.position]=f,this.position++},pushUint16(f){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,f),this.position+=2},pushUint24(f){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,f>>8),this.dataView.setUint8(this.position+2,f&255),this.position+=3},pushUint32(f){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,f),this.position+=4},readByte(){this.assertReadLimit(),this._touch();const f=this.inspectByte();return this.position++,f},readBytes(f,e){this.assertReadLimit(),this._touch();const b=this.inspectBytes(f);return this.position+=e??f,b},readUint8(){this.assertReadLimit(),this._touch();const f=this.inspectUint8();return this.position+=1,f},readUint16(){this.assertReadLimit(),this._touch();const f=this.inspectUint16();return this.position+=2,f},readUint24(){this.assertReadLimit(),this._touch();const f=this.inspectUint24();return this.position+=3,f},readUint32(){this.assertReadLimit(),this._touch();const f=this.inspectUint32();return this.position+=4,f},get remaining(){return this.bytes.length-this.position},setPosition(f){const e=this.position;return this.assertPosition(f),this.position=f,()=>this.position=e},_touch(){if(this.recursiveReadLimit===Number.POSITIVE_INFINITY)return;const f=this.getReadCount();this.positionReadCount.set(this.position,f+1),f>0&&this.recursiveReadCount++}};function Y0(f,{recursiveReadLimit:e=8192}={}){const b=Object.create(T6);return b.bytes=f,b.dataView=new DataView(f.buffer,f.byteOffset,f.byteLength),b.positionReadCount=new Map,b.recursiveReadLimit=e,b}function h6(f,e="hex"){const b=J0(f),a=Y0(new Uint8Array(b.length));return b.encode(a),e==="hex"?n.bytesToHex(a.bytes):a.bytes}function J0(f){return Array.isArray(f)?w6(f.map(e=>J0(e))):v6(f)}function w6(f){const e=f.reduce((t,d)=>t+d.length,0),b=Q0(e);return{length:e<=55?1+e:1+b+e,encode(t){e<=55?t.pushByte(192+e):(t.pushByte(247+b),b===1?t.pushUint8(e):b===2?t.pushUint16(e):b===3?t.pushUint24(e):t.pushUint32(e));for(const{encode:d}of f)d(t)}}}function v6(f){const e=typeof f=="string"?n.hexToBytes(f):f,b=Q0(e.length);return{length:e.length===1&&e[0]<128?1:e.length<=55?1+e.length:1+b+e.length,encode(t){e.length===1&&e[0]<128?t.pushBytes(e):e.length<=55?(t.pushByte(128+e.length),t.pushBytes(e)):(t.pushByte(183+b),b===1?t.pushUint8(e.length):b===2?t.pushUint16(e.length):b===3?t.pushUint24(e.length):t.pushUint32(e.length),t.pushBytes(e))}}}function Q0(f){if(f<2**8)return 1;if(f<2**16)return 2;if(f<2**24)return 3;if(f<2**32)return 4;throw new n.BaseError("Length is too large.")}function g6(f){const{chainId:e,contractAddress:b,nonce:a,to:t}=f,d=n.keccak256(l0(["0x05",h6([e?n.numberToHex(e):"0x",b,a?n.numberToHex(a):"0x"])]));return t==="bytes"?n.hexToBytes(d):d}async function X0(f){const{authorization:e,signature:b}=f;return y6({hash:g6(e),signature:b??e})}class M6 extends n.BaseError{constructor({chain:e,currentChainId:b}){super(`The current chain of the wallet (id: ${b}) does not match the target chain for the transaction (id: ${e.id} – ${e.name}).`,{metaMessages:[`Current Chain ID: ${b}`,`Expected Chain ID: ${e.id} – ${e.name}`],name:"ChainMismatchError"})}}class x6 extends n.BaseError{constructor(){super(["No chain was provided to the request.","Please provide a chain with the `chain` argument on the Action, or by supplying a `chain` to WalletClient."].join(`
9
+ `),{name:"ChainNotFoundError"})}}function I6({chain:f,currentChainId:e}){if(!f)throw new x6;if(e!==f.id)throw new M6({chain:f,currentChainId:e})}const A6={gwei:9,wei:18},E6={ether:-9,wei:9};function ff(f,e){let b=f.toString();const a=b.startsWith("-");a&&(b=b.slice(1)),b=b.padStart(e,"0");let[t,d]=[b.slice(0,b.length-e),b.slice(b.length-e)];return d=d.replace(/(0+)$/,""),`${a?"-":""}${t||"0"}${d?`.${d}`:""}`}function O(f,e="wei"){return ff(f,E6[e])}class J extends n.BaseError{constructor({cause:e,message:b}={}){var t;const a=(t=b==null?void 0:b.replace("execution reverted: ",""))==null?void 0:t.replace("execution reverted","");super(`Execution reverted ${a?`with reason: ${a}`:"for an unknown reason"}.`,{cause:e,name:"ExecutionRevertedError"})}}Object.defineProperty(J,"code",{enumerable:!0,configurable:!0,writable:!0,value:3});Object.defineProperty(J,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});class e0 extends n.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${O(b)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e,name:"FeeCapTooHighError"})}}Object.defineProperty(e0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});class c0 extends n.BaseError{constructor({cause:e,maxFeePerGas:b}={}){super(`The fee cap (\`maxFeePerGas\`${b?` = ${O(b)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e,name:"FeeCapTooLowError"})}}Object.defineProperty(c0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});class i0 extends n.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}is higher than the next one expected.`,{cause:e,name:"NonceTooHighError"})}}Object.defineProperty(i0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});class s0 extends n.BaseError{constructor({cause:e,nonce:b}={}){super([`Nonce provided for the transaction ${b?`(${b}) `:""}is lower than the current nonce of the account.`,"Try increasing the nonce or find the latest nonce with `getTransactionCount`."].join(`
10
+ `),{cause:e,name:"NonceTooLowError"})}}Object.defineProperty(s0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});class r0 extends n.BaseError{constructor({cause:e,nonce:b}={}){super(`Nonce provided for the transaction ${b?`(${b}) `:""}exceeds the maximum allowed nonce.`,{cause:e,name:"NonceMaxValueError"})}}Object.defineProperty(r0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});class p0 extends n.BaseError{constructor({cause:e}={}){super(["The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account."].join(`
11
+ `),{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."],name:"InsufficientFundsError"})}}Object.defineProperty(p0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds|exceeds transaction sender account balance/});class o0 extends n.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e,name:"IntrinsicGasTooHighError"})}}Object.defineProperty(o0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});class u0 extends n.BaseError{constructor({cause:e,gas:b}={}){super(`The amount of gas ${b?`(${b}) `:""}provided for the transaction is too low.`,{cause:e,name:"IntrinsicGasTooLowError"})}}Object.defineProperty(u0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});class y0 extends n.BaseError{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e,name:"TransactionTypeNotSupportedError"})}}Object.defineProperty(y0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});class b0 extends n.BaseError{constructor({cause:e,maxPriorityFeePerGas:b,maxFeePerGas:a}={}){super([`The provided tip (\`maxPriorityFeePerGas\`${b?` = ${O(b)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${a?` = ${O(a)} gwei`:""}).`].join(`
12
+ `),{cause:e,name:"TipAboveFeeCapError"})}}Object.defineProperty(b0,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});class h0 extends n.BaseError{constructor({cause:e}){super(`An error occurred while executing: ${e==null?void 0:e.shortMessage}`,{cause:e,name:"UnknownNodeError"})}}function ef(f,e="wei"){return ff(f,A6[e])}function w0(f){const e=Object.entries(f).map(([a,t])=>t===void 0||t===!1?null:[a,t]).filter(Boolean),b=e.reduce((a,[t])=>Math.max(a,t.length),0);return e.map(([a,t])=>` ${`${a}:`.padEnd(b+1)} ${t}`).join(`
13
+ `)}class R6 extends n.BaseError{constructor(){super(["Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.","Use `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."].join(`
14
+ `),{name:"FeeConflictError"})}}class O6 extends n.BaseError{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",w0(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- an EIP-7702 Transaction with `authorizationList`, or","- a Legacy Transaction with `gasPrice`"],name:"InvalidSerializableTransactionError"})}}class C6 extends n.BaseError{constructor(e,{account:b,docsPath:a,chain:t,data:d,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const T=w0({chain:t&&`${t==null?void 0:t.name} (id: ${t==null?void 0:t.id})`,from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ef(o)} ${((l=t==null?void 0:t.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:d,gas:c,gasPrice:typeof r<"u"&&`${O(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${O(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${O(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Request Arguments:",T].filter(Boolean),name:"TransactionExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function bf(f,e){const b=(f.details||"").toLowerCase(),a=f instanceof n.BaseError?f.walk(t=>(t==null?void 0:t.code)===J.code):f;return a instanceof n.BaseError?new J({cause:f,message:a.details}):J.nodeMessage.test(b)?new J({cause:f,message:f.details}):e0.nodeMessage.test(b)?new e0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):c0.nodeMessage.test(b)?new c0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas}):i0.nodeMessage.test(b)?new i0({cause:f,nonce:e==null?void 0:e.nonce}):s0.nodeMessage.test(b)?new s0({cause:f,nonce:e==null?void 0:e.nonce}):r0.nodeMessage.test(b)?new r0({cause:f,nonce:e==null?void 0:e.nonce}):p0.nodeMessage.test(b)?new p0({cause:f}):o0.nodeMessage.test(b)?new o0({cause:f,gas:e==null?void 0:e.gas}):u0.nodeMessage.test(b)?new u0({cause:f,gas:e==null?void 0:e.gas}):y0.nodeMessage.test(b)?new y0({cause:f}):b0.nodeMessage.test(b)?new b0({cause:f,maxFeePerGas:e==null?void 0:e.maxFeePerGas,maxPriorityFeePerGas:e==null?void 0:e.maxPriorityFeePerGas}):new h0({cause:f})}function _6(f,{docsPath:e,...b}){const a=(()=>{const t=bf(f,b);return t instanceof h0?f:t})();return new C6(a,{docsPath:e,...b})}function af(f,{format:e}){if(!e)return{};const b={};function a(d){const c=Object.keys(d);for(const r of c)r in f&&(b[r]=f[r]),d[r]&&typeof d[r]=="object"&&!Array.isArray(d[r])&&a(d[r])}const t=e(f||{});return a(t),b}const B6={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3",eip7702:"0x4"};function tf(f){const e={};return typeof f.authorizationList<"u"&&(e.authorizationList=P6(f.authorizationList)),typeof f.accessList<"u"&&(e.accessList=f.accessList),typeof f.blobVersionedHashes<"u"&&(e.blobVersionedHashes=f.blobVersionedHashes),typeof f.blobs<"u"&&(typeof f.blobs[0]!="string"?e.blobs=f.blobs.map(b=>n.bytesToHex(b)):e.blobs=f.blobs),typeof f.data<"u"&&(e.data=f.data),typeof f.from<"u"&&(e.from=f.from),typeof f.gas<"u"&&(e.gas=n.numberToHex(f.gas)),typeof f.gasPrice<"u"&&(e.gasPrice=n.numberToHex(f.gasPrice)),typeof f.maxFeePerBlobGas<"u"&&(e.maxFeePerBlobGas=n.numberToHex(f.maxFeePerBlobGas)),typeof f.maxFeePerGas<"u"&&(e.maxFeePerGas=n.numberToHex(f.maxFeePerGas)),typeof f.maxPriorityFeePerGas<"u"&&(e.maxPriorityFeePerGas=n.numberToHex(f.maxPriorityFeePerGas)),typeof f.nonce<"u"&&(e.nonce=n.numberToHex(f.nonce)),typeof f.to<"u"&&(e.to=f.to),typeof f.type<"u"&&(e.type=B6[f.type]),typeof f.value<"u"&&(e.value=n.numberToHex(f.value)),e}function P6(f){return f.map(e=>({address:e.contractAddress,r:e.r,s:e.s,chainId:n.numberToHex(e.chainId),nonce:n.numberToHex(e.nonce),...typeof e.yParity<"u"?{yParity:n.numberToHex(e.yParity)}:{},...typeof e.v<"u"&&typeof e.yParity>"u"?{v:n.numberToHex(e.v)}:{}}))}function R(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const t=f[b];return typeof t=="function"?t:d=>e(f,d)}const z6=2n**256n-1n;function v0(f){const{account:e,gasPrice:b,maxFeePerGas:a,maxPriorityFeePerGas:t,to:d}=f,c=e?n.parseAccount(e):void 0;if(c&&!n.isAddress(c.address))throw new n.InvalidAddressError({address:c.address});if(d&&!n.isAddress(d))throw new n.InvalidAddressError({address:d});if(typeof b<"u"&&(typeof a<"u"||typeof t<"u"))throw new R6;if(a&&a>z6)throw new e0({maxFeePerGas:a});if(t&&a&&t>a)throw new b0({maxFeePerGas:a,maxPriorityFeePerGas:t})}async function nf(f){const e=await f.request({method:"eth_chainId"},{dedupe:!0});return n.hexToNumber(e)}class N6 extends n.BaseError{constructor(){super("`baseFeeMultiplier` must be greater than 1.",{name:"BaseFeeScalarError"})}}class g0 extends n.BaseError{constructor(){super("Chain does not support EIP-1559 fees.",{name:"Eip1559FeesNotSupportedError"})}}class $6 extends n.BaseError{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${O(e)} gwei).`,{name:"MaxFeePerGasTooLowError"})}}class H6 extends n.BaseError{constructor({blockHash:e,blockNumber:b}){let a="Block";e&&(a=`Block at hash "${e}"`),b&&(a=`Block at number "${b}"`),super(`${a} could not be found.`,{name:"BlockNotFoundError"})}}const L6={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844","0x4":"eip7702"};function F6(f){const e={...f,blockHash:f.blockHash?f.blockHash:null,blockNumber:f.blockNumber?BigInt(f.blockNumber):null,chainId:f.chainId?n.hexToNumber(f.chainId):void 0,gas:f.gas?BigInt(f.gas):void 0,gasPrice:f.gasPrice?BigInt(f.gasPrice):void 0,maxFeePerBlobGas:f.maxFeePerBlobGas?BigInt(f.maxFeePerBlobGas):void 0,maxFeePerGas:f.maxFeePerGas?BigInt(f.maxFeePerGas):void 0,maxPriorityFeePerGas:f.maxPriorityFeePerGas?BigInt(f.maxPriorityFeePerGas):void 0,nonce:f.nonce?n.hexToNumber(f.nonce):void 0,to:f.to?f.to:null,transactionIndex:f.transactionIndex?Number(f.transactionIndex):null,type:f.type?L6[f.type]:void 0,typeHex:f.type?f.type:void 0,value:f.value?BigInt(f.value):void 0,v:f.v?BigInt(f.v):void 0};return f.authorizationList&&(e.authorizationList=k6(f.authorizationList)),e.yParity=(()=>{if(f.yParity)return Number(f.yParity);if(typeof e.v=="bigint"){if(e.v===0n||e.v===27n)return 0;if(e.v===1n||e.v===28n)return 1;if(e.v>=35n)return e.v%2n===0n?1:0}})(),e.type==="legacy"&&(delete e.accessList,delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas,delete e.yParity),e.type==="eip2930"&&(delete e.maxFeePerBlobGas,delete e.maxFeePerGas,delete e.maxPriorityFeePerGas),e.type==="eip1559"&&delete e.maxFeePerBlobGas,e}function k6(f){return f.map(e=>({contractAddress:e.address,chainId:Number(e.chainId),nonce:Number(e.nonce),r:e.r,s:e.s,yParity:Number(e.yParity)}))}function S6(f){const e=(f.transactions??[]).map(b=>typeof b=="string"?b:F6(b));return{...f,baseFeePerGas:f.baseFeePerGas?BigInt(f.baseFeePerGas):null,blobGasUsed:f.blobGasUsed?BigInt(f.blobGasUsed):void 0,difficulty:f.difficulty?BigInt(f.difficulty):void 0,excessBlobGas:f.excessBlobGas?BigInt(f.excessBlobGas):void 0,gasLimit:f.gasLimit?BigInt(f.gasLimit):void 0,gasUsed:f.gasUsed?BigInt(f.gasUsed):void 0,hash:f.hash?f.hash:null,logsBloom:f.logsBloom?f.logsBloom:null,nonce:f.nonce?f.nonce:null,number:f.number?BigInt(f.number):null,size:f.size?BigInt(f.size):void 0,timestamp:f.timestamp?BigInt(f.timestamp):void 0,transactions:e,totalDifficulty:f.totalDifficulty?BigInt(f.totalDifficulty):null}}async function a0(f,{blockHash:e,blockNumber:b,blockTag:a,includeTransactions:t}={}){var p,u,o;const d=a??"latest",c=t??!1,r=b!==void 0?n.numberToHex(b):void 0;let i=null;if(e?i=await f.request({method:"eth_getBlockByHash",params:[e,c]},{dedupe:!0}):i=await f.request({method:"eth_getBlockByNumber",params:[r||d,c]},{dedupe:!!r}),!i)throw new H6({blockHash:e,blockNumber:b});return(((o=(u=(p=f.chain)==null?void 0:p.formatters)==null?void 0:u.block)==null?void 0:o.format)||S6)(i)}async function df(f){const e=await f.request({method:"eth_gasPrice"});return BigInt(e)}async function G6(f,e){var d,c;const{block:b,chain:a=f.chain,request:t}=e||{};try{const r=((d=a==null?void 0:a.fees)==null?void 0:d.maxPriorityFeePerGas)??((c=a==null?void 0:a.fees)==null?void 0:c.defaultPriorityFee);if(typeof r=="function"){const s=b||await R(f,a0,"getBlock")({}),p=await r({block:s,client:f,request:t});if(p===null)throw new Error;return p}if(typeof r<"u")return r;const i=await f.request({method:"eth_maxPriorityFeePerGas"});return n.hexToBigInt(i)}catch{const[r,i]=await Promise.all([b?Promise.resolve(b):R(f,a0,"getBlock")({}),R(f,df,"getGasPrice")({})]);if(typeof r.baseFeePerGas!="bigint")throw new g0;const s=i-r.baseFeePerGas;return s<0n?0n:s}}async function V0(f,e){var o,T;const{block:b,chain:a=f.chain,request:t,type:d="eip1559"}=e||{},c=await(async()=>{var l,v;return typeof((l=a==null?void 0:a.fees)==null?void 0:l.baseFeeMultiplier)=="function"?a.fees.baseFeeMultiplier({block:b,client:f,request:t}):((v=a==null?void 0:a.fees)==null?void 0:v.baseFeeMultiplier)??1.2})();if(c<1)throw new N6;const i=10**(((o=c.toString().split(".")[1])==null?void 0:o.length)??0),s=l=>l*BigInt(Math.ceil(c*i))/BigInt(i),p=b||await R(f,a0,"getBlock")({});if(typeof((T=a==null?void 0:a.fees)==null?void 0:T.estimateFeesPerGas)=="function"){const l=await a.fees.estimateFeesPerGas({block:b,client:f,multiply:s,request:t,type:d});if(l!==null)return l}if(d==="eip1559"){if(typeof p.baseFeePerGas!="bigint")throw new g0;const l=typeof(t==null?void 0:t.maxPriorityFeePerGas)=="bigint"?t.maxPriorityFeePerGas:await G6(f,{block:p,chain:a,request:t}),v=s(p.baseFeePerGas);return{maxFeePerGas:(t==null?void 0:t.maxFeePerGas)??v+l,maxPriorityFeePerGas:l}}return{gasPrice:(t==null?void 0:t.gasPrice)??s(await R(f,df,"getGasPrice")({}))}}class D6 extends n.BaseError{constructor(e,{account:b,docsPath:a,chain:t,data:d,gas:c,gasPrice:r,maxFeePerGas:i,maxPriorityFeePerGas:s,nonce:p,to:u,value:o}){var l;const T=w0({from:b==null?void 0:b.address,to:u,value:typeof o<"u"&&`${ef(o)} ${((l=t==null?void 0:t.nativeCurrency)==null?void 0:l.symbol)||"ETH"}`,data:d,gas:c,gasPrice:typeof r<"u"&&`${O(r)} gwei`,maxFeePerGas:typeof i<"u"&&`${O(i)} gwei`,maxPriorityFeePerGas:typeof s<"u"&&`${O(s)} gwei`,nonce:p});super(e.shortMessage,{cause:e,docsPath:a,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",T].filter(Boolean),name:"EstimateGasExecutionError"}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.cause=e}}function U6(f,{docsPath:e,...b}){const a=(()=>{const t=bf(f,b);return t instanceof h0?f:t})();return new D6(a,{docsPath:e,...b})}class V6 extends n.BaseError{constructor({address:e}){super(`State for account "${e}" is set multiple times.`,{name:"AccountStateConflictError"})}}class q6 extends n.BaseError{constructor(){super("state and stateDiff are set on the same account.",{name:"StateAssignmentConflictError"})}}function q0(f){if(!(!f||f.length===0))return f.reduce((e,{slot:b,value:a})=>{if(b.length!==66)throw new n.InvalidBytesLengthError({size:b.length,targetSize:66,type:"hex"});if(a.length!==66)throw new n.InvalidBytesLengthError({size:a.length,targetSize:66,type:"hex"});return e[b]=a,e},{})}function j6(f){const{balance:e,nonce:b,state:a,stateDiff:t,code:d}=f,c={};if(d!==void 0&&(c.code=d),e!==void 0&&(c.balance=n.numberToHex(e)),b!==void 0&&(c.nonce=n.numberToHex(b)),a!==void 0&&(c.state=q0(a)),t!==void 0){if(c.state)throw new q6;c.stateDiff=q0(t)}return c}function W6(f){if(!f)return;const e={};for(const{address:b,...a}of f){if(!n.isAddress(b,{strict:!1}))throw new n.InvalidAddressError({address:b});if(e[b])throw new V6({address:b});e[b]=j6(a)}return e}async function Z6(f,{address:e,blockNumber:b,blockTag:a="latest"}){const t=b?n.numberToHex(b):void 0,d=await f.request({method:"eth_getBalance",params:[e,t||a]});return BigInt(d)}async function K6(f,e){var t,d,c;const{account:b=f.account}=e,a=b?n.parseAccount(b):void 0;try{let _=function(X){const{block:P,request:M,rpcStateOverride:I}=X;return f.request({method:"eth_estimateGas",params:I?[M,P??"latest",I]:P?[M,P]:[M]})};const{accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,blockNumber:u,blockTag:o,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:h,maxPriorityFeePerGas:g,nonce:x,value:k,stateOverride:C,...A}=await uf(f,{...e,parameters:(a==null?void 0:a.type)==="local"?void 0:["blobVersionedHashes"]}),N=(u?n.numberToHex(u):void 0)||o,H=W6(C),L=await(async()=>{if(A.to)return A.to;if(i&&i.length>0)return await X0({authorization:i[0]}).catch(()=>{throw new n.BaseError("`to` is required. Could not infer from `authorizationList`")})})();v0(e);const F=(c=(d=(t=f.chain)==null?void 0:t.formatters)==null?void 0:d.transactionRequest)==null?void 0:c.format,E=(F||tf)({...af(A,{format:F}),from:a==null?void 0:a.address,accessList:r,authorizationList:i,blobs:s,blobVersionedHashes:p,data:T,gas:l,gasPrice:v,maxFeePerBlobGas:m,maxFeePerGas:h,maxPriorityFeePerGas:g,nonce:x,to:L,value:k});let B=BigInt(await _({block:N,request:E,rpcStateOverride:H}));if(i){const X=await Z6(f,{address:E.from}),P=await Promise.all(i.map(async M=>{const{contractAddress:I}=M,$=await _({block:N,request:{authorizationList:void 0,data:T,from:a==null?void 0:a.address,to:I,value:n.numberToHex(X)},rpcStateOverride:H}).catch(()=>100000n);return 2n*BigInt($)}));B+=P.reduce((M,I)=>M+I,0n)}return B}catch(r){throw U6(r,{...e,account:a,chain:f.chain})}}async function Y6(f,{address:e,blockTag:b="latest",blockNumber:a}){const t=await f.request({method:"eth_getTransactionCount",params:[e,a?n.numberToHex(a):b]},{dedupe:!!a});return n.hexToNumber(t)}function cf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(d=>n.hexToBytes(d)):f.blobs,t=[];for(const d of a)t.push(Uint8Array.from(e.blobToKzgCommitment(d)));return b==="bytes"?t:t.map(d=>n.bytesToHex(d))}function sf(f){const{kzg:e}=f,b=f.to??(typeof f.blobs[0]=="string"?"hex":"bytes"),a=typeof f.blobs[0]=="string"?f.blobs.map(c=>n.hexToBytes(c)):f.blobs,t=typeof f.commitments[0]=="string"?f.commitments.map(c=>n.hexToBytes(c)):f.commitments,d=[];for(let c=0;c<a.length;c++){const r=a[c],i=t[c];d.push(Uint8Array.from(e.computeBlobKzgProof(r,i)))}return b==="bytes"?d:d.map(c=>n.bytesToHex(c))}function J6(f,e){return n.sha256(n.isHex(f,{strict:!1})?n.toBytes(f):f)}function Q6(f){const{commitment:e,version:b=1}=f,a=f.to??(typeof e=="string"?"hex":"bytes"),t=J6(e);return t.set([b],0),a==="bytes"?t:n.bytesToHex(t)}function X6(f){const{commitments:e,version:b}=f,a=f.to??(typeof e[0]=="string"?"hex":"bytes"),t=[];for(const d of e)t.push(Q6({commitment:d,to:a,version:b}));return t}const j0=6,rf=32,M0=4096,pf=rf*M0,W0=pf*j0-1-1*M0*j0;class f8 extends n.BaseError{constructor({maxSize:e,size:b}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${b} bytes`],name:"BlobSizeTooLargeError"})}}class e8 extends n.BaseError{constructor(){super("Blob data must not be empty.",{name:"EmptyBlobError"})}}function b8(f){const e=f.to??(typeof f.data=="string"?"hex":"bytes"),b=typeof f.data=="string"?n.hexToBytes(f.data):f.data,a=n.size(b);if(!a)throw new e8;if(a>W0)throw new f8({maxSize:W0,size:a});const t=[];let d=!0,c=0;for(;d;){const r=Y0(new Uint8Array(pf));let i=0;for(;i<M0;){const s=b.slice(c,c+(rf-1));if(r.pushByte(0),r.pushBytes(s),s.length<31){r.pushByte(128),d=!1;break}i++,c+=31}t.push(r)}return e==="bytes"?t.map(r=>r.bytes):t.map(r=>n.bytesToHex(r.bytes))}function a8(f){const{data:e,kzg:b,to:a}=f,t=f.blobs??b8({data:e,to:a}),d=f.commitments??cf({blobs:t,kzg:b,to:a}),c=f.proofs??sf({blobs:t,commitments:d,kzg:b,to:a}),r=[];for(let i=0;i<t.length;i++)r.push({blob:t[i],commitment:d[i],proof:c[i]});return r}function t8(f){if(f.type)return f.type;if(typeof f.authorizationList<"u")return"eip7702";if(typeof f.blobs<"u"||typeof f.blobVersionedHashes<"u"||typeof f.maxFeePerBlobGas<"u"||typeof f.sidecars<"u")return"eip4844";if(typeof f.maxFeePerGas<"u"||typeof f.maxPriorityFeePerGas<"u")return"eip1559";if(typeof f.gasPrice<"u")return typeof f.accessList<"u"?"eip2930":"legacy";throw new O6({transaction:f})}const of=["blobVersionedHashes","chainId","fees","gas","nonce","type"];async function uf(f,e){const{account:b=f.account,blobs:a,chain:t,gas:d,kzg:c,nonce:r,nonceManager:i,parameters:s=of,type:p}=e,u=b&&n.parseAccount(b),o={...e,...u?{from:u==null?void 0:u.address}:{}};let T;async function l(){return T||(T=await R(f,a0,"getBlock")({blockTag:"latest"}),T)}let v;async function m(){return v||(t?t.id:typeof e.chainId<"u"?e.chainId:(v=await R(f,nf,"getChainId")({}),v))}if((s.includes("blobVersionedHashes")||s.includes("sidecars"))&&a&&c){const h=cf({blobs:a,kzg:c});if(s.includes("blobVersionedHashes")){const g=X6({commitments:h,to:"hex"});o.blobVersionedHashes=g}if(s.includes("sidecars")){const g=sf({blobs:a,commitments:h,kzg:c}),x=a8({blobs:a,commitments:h,proofs:g,to:"hex"});o.sidecars=x}}if(s.includes("chainId")&&(o.chainId=await m()),s.includes("nonce")&&typeof r>"u"&&u)if(i){const h=await m();o.nonce=await i.consume({address:u.address,chainId:h,client:f})}else o.nonce=await R(f,Y6,"getTransactionCount")({address:u.address,blockTag:"pending"});if((s.includes("fees")||s.includes("type"))&&typeof p>"u")try{o.type=t8(o)}catch{const h=await l();o.type=typeof(h==null?void 0:h.baseFeePerGas)=="bigint"?"eip1559":"legacy"}if(s.includes("fees"))if(o.type!=="legacy"&&o.type!=="eip2930"){if(typeof o.maxFeePerGas>"u"||typeof o.maxPriorityFeePerGas>"u"){const h=await l(),{maxFeePerGas:g,maxPriorityFeePerGas:x}=await V0(f,{block:h,chain:t,request:o});if(typeof e.maxPriorityFeePerGas>"u"&&e.maxFeePerGas&&e.maxFeePerGas<x)throw new $6({maxPriorityFeePerGas:x});o.maxPriorityFeePerGas=x,o.maxFeePerGas=g}}else{if(typeof e.maxFeePerGas<"u"||typeof e.maxPriorityFeePerGas<"u")throw new g0;const h=await l(),{gasPrice:g}=await V0(f,{block:h,chain:t,request:o,type:"legacy"});o.gasPrice=g}return s.includes("gas")&&typeof d>"u"&&(o.gas=await R(f,K6,"estimateGas")({...o,account:u&&{address:u.address,type:"json-rpc"}})),v0(o),delete o.parameters,o}async function n8(f,{serializedTransaction:e}){return f.request({method:"eth_sendRawTransaction",params:[e]},{retryCount:0})}const d0=new n.LruMap(128);async function d8(f,e){var h,g,x,k;const{account:b=f.account,chain:a=f.chain,accessList:t,authorizationList:d,blobs:c,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:T,value:l,...v}=e;if(typeof b>"u")throw new p6({docsPath:"/docs/actions/wallet/sendTransaction"});const m=b?n.parseAccount(b):null;try{v0(e);const C=await(async()=>{if(e.to)return e.to;if(d&&d.length>0)return await X0({authorization:d[0]}).catch(()=>{throw new n.BaseError("`to` is required. Could not infer from `authorizationList`.")})})();if((m==null?void 0:m.type)==="json-rpc"||m===null){let A;a!==null&&(A=await R(f,nf,"getChainId")({}),I6({currentChainId:A,chain:a}));const z=(x=(g=(h=f.chain)==null?void 0:h.formatters)==null?void 0:g.transactionRequest)==null?void 0:x.format,H=(z||tf)({...af(v,{format:z}),accessList:t,authorizationList:d,blobs:c,chainId:A,data:r,from:m==null?void 0:m.address,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:T,to:C,value:l}),L=d0.get(f.uid),F=L?"wallet_sendTransaction":"eth_sendTransaction";try{return await f.request({method:F,params:[H]},{retryCount:0})}catch(S){if(L===!1)throw S;const E=S;if(E.name==="InvalidInputRpcError"||E.name==="InvalidParamsRpcError"||E.name==="MethodNotFoundRpcError"||E.name==="MethodNotSupportedRpcError")return await f.request({method:"wallet_sendTransaction",params:[H]},{retryCount:0}).then(_=>(d0.set(f.uid,!0),_)).catch(_=>{const B=_;throw B.name==="MethodNotFoundRpcError"||B.name==="MethodNotSupportedRpcError"?(d0.set(f.uid,!1),E):B});throw E}}if((m==null?void 0:m.type)==="local"){const A=await R(f,uf,"prepareTransactionRequest")({account:m,accessList:t,authorizationList:d,blobs:c,chain:a,data:r,gas:i,gasPrice:s,maxFeePerBlobGas:p,maxFeePerGas:u,maxPriorityFeePerGas:o,nonce:T,nonceManager:m.nonceManager,parameters:[...of,"sidecars"],value:l,...v,to:C}),z=(k=a==null?void 0:a.serializers)==null?void 0:k.transaction,N=await m.signTransaction(A,{serializer:z});return await R(f,n8,"sendRawTransaction")({serializedTransaction:N})}throw(m==null?void 0:m.type)==="smart"?new n0({metaMessages:["Consider using the `sendUserOperation` Action instead."],docsPath:"/docs/actions/bundler/sendUserOperation",type:"smart"}):new n0({docsPath:"/docs/actions/wallet/sendTransaction",type:m==null?void 0:m.type})}catch(C){throw C instanceof n0?C:_6(C,{...e,account:m,chain:e.chain||void 0})}}function c8(f,e){const{abi:b,args:a,bytecode:t,...d}=e,c=r6({abi:b,args:a,bytecode:t});return d8(f,{...d,data:c})}const f0=new n.LruMap(8192);function i8(f,{enabled:e=!0,id:b}){if(!e||!b)return f();if(f0.get(b))return f0.get(b);const a=f().finally(()=>f0.delete(b));return f0.set(b,a),a}function s8(f,e={}){return async(b,a={})=>{const{dedupe:t=!1,retryDelay:d=150,retryCount:c=3,uid:r}={...e,...a},i=t?n.keccak256(n.stringToHex(`${r}.${n.stringify(b)}`)):void 0;return i8(()=>n.withRetry(async()=>{try{return await f(b)}catch(s){const p=s;switch(p.code){case n.ParseRpcError.code:throw new n.ParseRpcError(p);case n.InvalidRequestRpcError.code:throw new n.InvalidRequestRpcError(p);case n.MethodNotFoundRpcError.code:throw new n.MethodNotFoundRpcError(p,{method:b.method});case n.InvalidParamsRpcError.code:throw new n.InvalidParamsRpcError(p);case n.InternalRpcError.code:throw new n.InternalRpcError(p);case n.InvalidInputRpcError.code:throw new n.InvalidInputRpcError(p);case n.ResourceNotFoundRpcError.code:throw new n.ResourceNotFoundRpcError(p);case n.ResourceUnavailableRpcError.code:throw new n.ResourceUnavailableRpcError(p);case n.TransactionRejectedRpcError.code:throw new n.TransactionRejectedRpcError(p);case n.MethodNotSupportedRpcError.code:throw new n.MethodNotSupportedRpcError(p,{method:b.method});case n.LimitExceededRpcError.code:throw new n.LimitExceededRpcError(p);case n.JsonRpcVersionUnsupportedError.code:throw new n.JsonRpcVersionUnsupportedError(p);case n.UserRejectedRequestError.code:throw new n.UserRejectedRequestError(p);case n.UnauthorizedProviderError.code:throw new n.UnauthorizedProviderError(p);case n.UnsupportedProviderMethodError.code:throw new n.UnsupportedProviderMethodError(p);case n.ProviderDisconnectedError.code:throw new n.ProviderDisconnectedError(p);case n.ChainDisconnectedError.code:throw new n.ChainDisconnectedError(p);case n.SwitchChainError.code:throw new n.SwitchChainError(p);case 5e3:throw new n.UserRejectedRequestError(p);default:throw s instanceof n.BaseError?s:new n.UnknownRpcError(p)}}},{delay:({count:s,error:p})=>{var u;if(p&&p instanceof n.HttpRequestError){const o=(u=p==null?void 0:p.headers)==null?void 0:u.get("Retry-After");if(o!=null&&o.match(/\d/))return Number.parseInt(o)*1e3}return~~(1<<s)*d},retryCount:c,shouldRetry:({error:s})=>r8(s)}),{enabled:t,id:i})}}function r8(f){return"code"in f&&typeof f.code=="number"?f.code===-1||f.code===n.LimitExceededRpcError.code||f.code===n.InternalRpcError.code:f instanceof n.HttpRequestError&&f.status?f.status===403||f.status===408||f.status===413||f.status===429||f.status===500||f.status===502||f.status===503||f.status===504:!0}function p8(f,e,b){const a=f[e.name];if(typeof a=="function")return a;const t=f[b];return typeof t=="function"?t:d=>e(f,d)}function o8({key:f,name:e,request:b,retryCount:a=3,retryDelay:t=150,timeout:d,type:c},r){const i=n.uid();return{config:{key:f,name:e,request:b,retryCount:a,retryDelay:t,timeout:d,type:c},request:s8(b,{retryCount:a,retryDelay:t,uid:i}),value:r}}function u8(f,e={}){const{key:b="custom",name:a="Custom Provider",retryDelay:t}=e;return({retryCount:d})=>o8({key:b,name:a,request:f.request.bind(f),retryCount:e.retryCount??d,retryDelay:t,type:"custom"})}async function y8(f,e={}){let b;if(e.connector){const{connector:s}=e;if(f.state.status==="reconnecting"&&!s.getAccounts&&!s.getChainId)throw new n.ConnectorUnavailableReconnectingError({connector:s});const[p,u]=await Promise.all([s.getAccounts(),s.getChainId()]);b={accounts:p,chainId:u,connector:s}}else b=f.state.connections.get(f.state.current);if(!b)throw new n.ConnectorNotConnectedError;const a=e.chainId??b.chainId,t=await b.connector.getChainId();if(t!==b.chainId)throw new n.ConnectorChainMismatchError({connectionChainId:b.chainId,connectorChainId:t});const d=b.connector;if(d.getClient)return d.getClient({chainId:a});const c=n.parseAccount(e.account??b.accounts[0]);if(c.address=n.getAddress(c.address),e.account&&!b.accounts.some(s=>s.toLowerCase()===c.address.toLowerCase()))throw new n.ConnectorAccountNotFoundError({address:c.address,connector:d});const r=f.chains.find(s=>s.id===a),i=await b.connector.getProvider({chainId:a});return n.createClient({account:c,chain:r,name:"Connector Client",transport:s=>u8(i)({...s,retryCount:0})})}async function w(f,e){const{account:b,chainId:a,connector:t,...d}=e;let c;return typeof b=="object"&&b.type==="local"?c=f.getClient({chainId:a}):c=await y8(f,{account:b,chainId:a,connector:t}),await p8(c,c8,"deployContract")({...d,...b?{account:b}:{},chain:a?{id:a}:null})}const l8=async function(e,b){var M,I,$,G,D,U,V,q,j,W,Z,K,Y;const a=b.privateKey,t=b.mnemonic,d=b.chain;if(!a&&!t)throw new Error("Must provide `--privateKey` or `--mnemonic` to deploy contracts");if(!d||!n.Chains[d])throw new Error(`Must provide valid \`--chain\` to specify target deployment chain, valid chains are ${Object.keys(chains)}`);const[c,r]=n.getDeployableOptions({chain:d,privateKey:a,mnemonic:t}),{config:i,account:s}=c,p=r.id,u=await new y.BoostRegistry({address:null,...c}).deploy(),P=class P extends y.BoostRegistry{};P.addresses={[p]:u.assertValidAddress()};let o=P;const T=new o({...c,address:u.assertValidAddress()}),l=await new y.BoostCore({...c,registryAddress:T.assertValidAddress(),protocolFeeReceiver:s.address,owner:s.address}).deploy(),v=await y.getDeployedContractAddress(i,w(i,{abi:I0.abi,bytecode:I0.bytecode,account:s})),m=await y.getDeployedContractAddress(i,w(i,{abi:A0.abi,bytecode:A0.bytecode,account:s})),h=await y.getDeployedContractAddress(i,w(i,{abi:R0.abi,bytecode:R0.bytecode,account:s})),g=await y.getDeployedContractAddress(i,w(i,{abi:O0.abi,bytecode:O0.bytecode,account:s})),x=await y.getDeployedContractAddress(i,w(i,{abi:C0.abi,bytecode:C0.bytecode,account:s})),k=await y.getDeployedContractAddress(i,w(i,{abi:_0.abi,bytecode:_0.bytecode,account:s})),C=await y.getDeployedContractAddress(i,w(i,{abi:B0.abi,bytecode:B0.bytecode,account:s})),A=await y.getDeployedContractAddress(i,w(i,{abi:P0.abi,bytecode:P0.bytecode,account:s})),z=await y.getDeployedContractAddress(i,w(i,{abi:z0.abi,bytecode:z0.bytecode,account:s})),N=await y.getDeployedContractAddress(i,w(i,{abi:N0.abi,bytecode:N0.bytecode,account:s})),H=await y.getDeployedContractAddress(i,w(i,{abi:L0.abi,bytecode:L0.bytecode,account:s})),L=await y.getDeployedContractAddress(i,w(i,{abi:E0.abi,bytecode:E0.bytecode,account:s})),F=await y.getDeployedContractAddress(i,w(i,{abi:F0.abi,bytecode:F0.bytecode,account:s})),S=await y.getDeployedContractAddress(i,w(i,{abi:H0.abi,bytecode:H0.bytecode,account:s})),E=await y.getDeployedContractAddress(i,w(i,{abi:$0.abi,bytecode:$0.bytecode,account:s})),_=await y.getDeployedContractAddress(i,w(i,{abi:S0.abi,bytecode:S0.bytecode,account:s})),B=await y.getDeployedContractAddress(i,w(i,{abi:k0.abi,bytecode:k0.bytecode,account:s})),X={EventAction:(M=class extends y.EventAction{},M.bases={[p]:L},M),SimpleAllowList:(I=class extends y.SimpleAllowList{},I.bases={[p]:h},I),SimpleDenyList:($=class extends y.SimpleDenyList{},$.bases={[p]:g},$),ManagedBudget:(G=class extends y.ManagedBudget{},G.bases={[p]:x},G),ManagedBudgetWithFees:(D=class extends y.ManagedBudgetWithFees{},D.bases={[p]:k},D),AllowListIncentive:(U=class extends y.AllowListIncentive{},U.bases={[p]:A},U),CGDAIncentive:(V=class extends y.CGDAIncentive{},V.bases={[p]:z},V),ERC20Incentive:(q=class extends y.ERC20Incentive{},q.bases={[p]:N},q),ERC20VariableIncentive:(j=class extends y.ERC20VariableIncentive{},j.bases={[p]:S},j),ERC20VariableCriteriaIncentive:(W=class extends y.ERC20VariableCriteriaIncentive{},W.bases={[p]:E},W),PointsIncentive:(Z=class extends y.PointsIncentive{},Z.bases={[p]:F},Z),SignerValidator:(K=class extends y.SignerValidator{},K.bases={[p]:_},K),LimitedSignerValidator:(Y=class extends y.LimitedSignerValidator{},Y.bases={[p]:B},Y)};for(const[yf,x0]of Object.entries(X))await T.register(x0.registryType,yf,x0.bases[p]);return{BOOST_CORE_ADDRESS:l.assertValidAddress(),BOOST_REGISTRY_ADDRESS:T.assertValidAddress(),CONTRACT_ACTION_BASE:v,EVENT_ACTION_BASE:L,ERC721_MINT_ACTION_BASE:m,SIMPLE_ALLOWLIST_BASE:h,SIMPLE_DENYLIST_BASE:g,MANAGED_BUDGET_BASE:x,VESTING_BUDGET_BASE:C,ALLOWLIST_INCENTIVE_BASE:A,CGDA_INCENTIVE_BASE:z,ERC20_INCENTIVE_BASE:N,ERC20_VARIABLE_INCENTIVE_BASE:S,ERC20_VARIABLE_CRITERIA_INCENTIVE_BASE:E,ERC1155_INCENTIVE_BASE:H,POINTS_INCENTIVE_BASE:F,SIGNER_VALIDATOR_BASE:_,LIMITED_SIGNER_VALIDATOR_BASE:B}};exports.deploy=l8;