@vechain/vebetterdao-contracts
Version:
Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.
549 lines (548 loc) • 40.7 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "NavigatorDelegationUtils",
"sourceName": "contracts/navigator/libraries/NavigatorDelegationUtils.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "address",
"name": "currentNavigator",
"type": "address"
}
],
"name": "AlreadyDelegated",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "minimum",
"type": "uint256"
}
],
"name": "BelowMinimumDelegation",
"type": "error"
},
{
"inputs": [],
"name": "CheckpointUnorderedInsertion",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "available",
"type": "uint256"
}
],
"name": "ExceedsNavigatorCapacity",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "available",
"type": "uint256"
}
],
"name": "InsufficientDelegation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "uint256",
"name": "requested",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "available",
"type": "uint256"
}
],
"name": "InsufficientUnlockedBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "navigator",
"type": "address"
}
],
"name": "NavigatorCannotAcceptDelegations",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
}
],
"name": "NotDelegated",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint8",
"name": "bits",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "SafeCastOverflowedUintDowncast",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "SelfDelegationNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ZeroDelegationAmount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "DelegationCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "removedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTotal",
"type": "uint256"
}
],
"name": "DelegationDecreased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "addedAmount",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newTotal",
"type": "uint256"
}
],
"name": "DelegationIncreased",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "DelegationRemoved",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
}
],
"name": "getDelegatedAmount",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getDelegatedAmountAtTimepoint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
}
],
"name": "getNavigator",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getNavigatorAtTimepoint",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
}
],
"name": "getRawNavigator",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getRawNavigatorAtTimepoint",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "navigator",
"type": "address"
}
],
"name": "getTotalDelegated",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "getTotalDelegatedAtTimepoint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint48",
"name": "timepoint",
"type": "uint48"
}
],
"name": "getTotalDelegatedCitizensAtTimepoint",
"outputs": [
{
"internalType": "uint208",
"name": "",
"type": "uint208"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "navigator",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isDeactivatedAtTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
}
],
"name": "isDelegated",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "citizen",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "isDelegatedAtTimepoint",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x611c4e61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100e55760003560e01c80630132f6c0146100ea578063073ea6ae1461010c5780630a5515e31461013257806316a6fa261461015d57806318be49d91461017d5780633e28391d1461019d578063453929e0146101c0578063516bb8a3146101d357806353055e80146101e6578063589444bb146101f95780636fb7f7eb1461020c578063ac5500ce1461021f578063c26f3acf1461023f578063c61c06e71461025f578063c7329cf714610272578063da8be86414610285578063f3a84655146102a5575b600080fd5b8180156100f657600080fd5b5061010a61010536600461194f565b6102b8565b005b61011f61011a366004611979565b6104ea565b6040519081526020015b60405180910390f35b610145610140366004611994565b610548565b6040516001600160d01b039091168152602001610129565b81801561016957600080fd5b5061010a61017836600461194f565b610565565b61019061018b36600461194f565b610683565b60405161012991906119bc565b6101b06101ab366004611979565b61072d565b6040519015158152602001610129565b6101906101ce366004611979565b610783565b6101b06101e136600461194f565b6107d6565b6101b06101f436600461194f565b61084f565b610190610207366004611979565b6108c6565b61011f61021a366004611979565b6108d9565b81801561022b57600080fd5b5061010a61023a3660046119d0565b6108ec565b81801561024b57600080fd5b5061010a61025a366004611a44565b61094b565b61011f61026d36600461194f565b610baa565b61011f61028036600461194f565b610bf2565b81801561029157600080fd5b5061010a6102a0366004611979565b610c67565b6101906102b336600461194f565b610da2565b60006102c2610e06565b905060006102d08285610e2a565b90506001600160a01b0381166103045783604051636a45db5b60e11b81526004016102fb91906119bc565b60405180910390fd5b61030e8282610e77565b1561032e5783604051636a45db5b60e11b81526004016102fb91906119bc565b8260000361034f57604051637cddf3b160e01b815260040160405180910390fd5b600061035b8386610ed6565b9050808411156103825783816040516388c4fe8f60e01b81526004016102fb929190611a80565b600061038e8583611aa4565b905080158015906103a65750670de0b6b3a764000081105b156103d05780670de0b6b3a76400006040516313ba636d60e31b81526004016102fb929190611a80565b6104066103dc43610ef9565b6103e583610f30565b6001600160a01b038916600090815260088801602052604090209190610f64565b505061041c84848761041790611ab7565b610f7f565b806000036104a65761042f848785610ffa565b61043b8460001961102e565b6001600160a01b0383166000908152600b85016020526040812080549161046183611ad3565b9190505550826001600160a01b0316866001600160a01b0316600080516020611bf98339815191528460405161049991815260200190565b60405180910390a36104e2565b826001600160a01b0316866001600160a01b0316600080516020611bd983398151915287846040516104d9929190611a80565b60405180910390a35b505050505050565b6000806104f5610e06565b905060006105038285610e2a565b90506001600160a01b03811661051d575060009392505050565b6105278282610e77565b15610536575060009392505050565b6105408285610ed6565b949350505050565b600061055f82610556610e06565b600a0190611089565b92915050565b600061056f610e06565b90508160000361059257604051637cddf3b160e01b815260040160405180910390fd5b600061059e8285610e2a565b90506001600160a01b0381166105c95783604051636a45db5b60e11b81526004016102fb91906119bc565b6105d38282610e77565b156105f35783604051636a45db5b60e11b81526004016102fb91906119bc565b6105fe82858561113f565b6106098282856111dc565b60006106158386610ed6565b905060006106238583611aea565b90506106316103dc43610ef9565b505061063e848487610f7f565b826001600160a01b0316866001600160a01b03167ff17f3266a20d82c0f0c42d702101166813b9ee3f68ae658f5408d9fbabfe867187846040516104d9929190611a80565b60008061068e610e06565b6001600160a01b0385166000908152600782016020526040812054919250036106bb57600091505061055f565b60006106e96106c985610ef9565b6001600160a01b0387166000908152600785016020526040902090611089565b9050806001600160d01b03166000036107075760009250505061055f565b80610713838287611345565b15610724576000935050505061055f565b95945050505050565b600080610738610e06565b905060006107468285610e2a565b90506001600160a01b038116610760575060009392505050565b61076a8282610e77565b15610779575060009392505050565b5060019392505050565b60008061078e610e06565b9050600061079c8285610e2a565b90506001600160a01b0381166107b6575060009392505050565b6107c08282610e77565b156107cf575060009392505050565b9392505050565b6000806107e1610e06565b6001600160a01b03851660009081526007820160205260408120549192500361080e57600091505061055f565b600061081c6106c985610ef9565b9050806001600160d01b031660000361083a5760009250505061055f565b610845828286611345565b1595945050505050565b60008061085a610e06565b6001600160a01b0385166000908152601d820160205260408120549192500361088757600091505061055f565b6108b361089384610ef9565b6001600160a01b0386166000908152601d84016020526040902090611089565b6001600160d01b03161515949350505050565b600061055f6108d3610e06565b83610e2a565b600061055f6108e6610e06565b8361139b565b60006108f6610e06565b905060005b82811015610945576109338285858481811061091957610919611afd565b905060200201602081019061092e9190611979565b6113e8565b8061093d81611b13565b9150506108fb565b50505050565b6000610955610e06565b90508160000361097857604051637cddf3b160e01b815260040160405180910390fd5b670de0b6b3a76400008210156109ad5781670de0b6b3a76400006040516313ba636d60e31b81526004016102fb929190611a80565b826001600160a01b0316846001600160a01b0316036109e15783604051630c71b3bd60e01b81526004016102fb91906119bc565b60006109ed8286610e2a565b90506001600160a01b03811615610a9557610a088282610e77565b15610a69576000610a198387610ed6565b9050610a29838361041784611ab7565b610a56610a3543610ef9565b6001600160a01b038816600090815260088601602052604081209190610f64565b5050610a63838784610ffa565b50610a95565b604051633e39e40f60e21b81526001600160a01b038087166004830152821660248201526044016102fb565b610aa082868561113f565b610aab8285856111dc565b610adb610ab743610ef9565b6001600160a01b038781166000908152600786016020526040902091908716610f64565b5050610b13610ae943610ef9565b610af285610f30565b6001600160a01b038816600090815260088601602052604090209190610f64565b5050610b20828585610f7f565b610b2b82600161102e565b6001600160a01b0384166000908152600b830160205260408120805491610b5183611b13565b9190505550836001600160a01b0316856001600160a01b03167ff30d5f04d8ccb1d731ec50addde98da813e2697f466b244e045210fc90af129685604051610b9b91815260200190565b60405180910390a35050505050565b6000610be2610bb883610ef9565b610bc0610e06565b6001600160a01b03861660009081526008919091016020526040902090611089565b6001600160d01b03169392505050565b600080610bfd610e06565b6001600160a01b038516600090815260098201602052604081205491925003610c2a57600091505061055f565b610c56610c3684610ef9565b6001600160a01b0386166000908152600984016020526040902090611089565b6001600160d01b0316949350505050565b6000610c71610e06565b90506000610c7f8284610e2a565b90506001600160a01b038116610caa5782604051636a45db5b60e11b81526004016102fb91906119bc565b610cb48282610e77565b15610cd45782604051636a45db5b60e11b81526004016102fb91906119bc565b6000610ce08385610ed6565b9050610cf0838361041784611ab7565b610d1d610cfc43610ef9565b6001600160a01b038616600090815260088601602052604081209190610f64565b5050610d2a838584610ffa565b610d368360001961102e565b6001600160a01b0382166000908152600b840160205260408120805491610d5c83611ad3565b9190505550816001600160a01b0316846001600160a01b0316600080516020611bf983398151915283604051610d9491815260200190565b60405180910390a350505050565b600080610dad610e06565b6001600160a01b038516600090815260078201602052604081205491925003610dda57600091505061055f565b6000610de86106c985610ef9565b9050806001600160d01b03166000036105405760009250505061055f565b7f2556f61b975c74e3f128bbc478158bc306f6253c34d95084531f202ce74e570090565b6001600160a01b0381166000908152600783016020526040812054600003610e545750600061055f565b6001600160a01b038216600090815260078401602052604090206107cf9061153a565b6001600160a01b0381166000908152601d83016020526040812054600003610ea15750600061055f565b6001600160a01b0382166000908152601d840160205260409020610ec49061153a565b6001600160d01b031615159392505050565b6001600160a01b03811660009081526008830160205260408120610be29061153a565b600065ffffffffffff821115610f2c576040516306dfcc6560e41b815260306004820152602481018390526044016102fb565b5090565b60006001600160d01b03821115610f2c576040516306dfcc6560e41b815260d06004820152602481018390526044016102fb565b600080610f72858585611573565b915091505b935093915050565b6000610f8b848461139b565b9050600080831215610faf57610fa083611ab7565b610faa9083611aa4565b610fb9565b610fb98383611aea565b9050610ff1610fc743610ef9565b610fd083610f30565b6001600160a01b038716600090815260098901602052604090209190610f64565b50505050505050565b61102761100643610ef9565b6001600160a01b038416600090815260078601602052604081209190610f64565b5050505050565b6000611039836116ed565b905060008083121561105d5761104e83611ab7565b6110589083611aa4565b611067565b6110678383611aea565b90506104e261107543610ef9565b61107e83610f30565b600a87019190610f64565b8154600090818160058111156110e85760006110a484611724565b6110ae9085611aa4565b60008881526020902090915081015465ffffffffffff90811690871610156110d8578091506110e6565b6110e3816001611aea565b92505b505b60006110f68787858561180c565b905080156111315761111b8761110d600184611aa4565b600091825260209091200190565b54600160301b90046001600160d01b0316611134565b60005b979650505050505050565b6005830154604051632f07d61760e11b81526000916001600160a01b031690635e0fac2e906111729086906004016119bc565b602060405180830381865afa15801561118f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b39190611b2c565b90508082111561094557828282604051633f0c4e2d60e01b81526004016102fb93929190611b45565b6040516330ccebb560e01b815260019073__$b124684ac4fa46e1989835813ce83d3b15$__906330ccebb5906112169086906004016119bc565b602060405180830381865af4158015611233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112579190611b66565b60ff161461127a5781604051631295e76f60e11b81526004016102fb91906119bc565b6001600160a01b038216600090815260208490526040812061129b9061153a565b6001600160d01b0316905083600101548110156112cd5782604051631295e76f60e11b81526004016102fb91906119bc565b60006112d9858561139b565b905060006112e78483611aea565b9050806112f584600a611b89565b10156104e257600061130884600a611b89565b9050600083821161131a576000611324565b6113248483611aa4565b9050868682604051637d29c28d60e11b81526004016102fb93929190611b45565b6001600160a01b0382166000908152601d8401602052604081205460000361136f575060006107cf565b6108b361137b83610ef9565b6001600160a01b0385166000908152601d87016020526040902090611089565b6001600160a01b03811660009081526009830160205260408120546000036113c55750600061055f565b6001600160a01b03821660009081526009840160205260409020610be29061153a565b60006113f48383610e2a565b90506001600160a01b03811661140957505050565b6114138382610e77565b1561141d57505050565b60006114298484610ed6565b60058501546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906114619087906004016119bc565b602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190611b2c565b90508082116114b2575050505050565b60006114be8284611aa4565b90506114f66114cc43610ef9565b6114d584610f30565b6001600160a01b038816600090815260088a01602052604090209190610f64565b505061150786858361041790611ab7565b836001600160a01b0316856001600160a01b0316600080516020611bd983398151915283856040516104d9929190611a80565b8054600090801561156a576115548361110d600184611aa4565b54600160301b90046001600160d01b03166107cf565b60009392505050565b8254600090819080156116925760006115918761110d600185611aa4565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b0316602084015291925090871610156115e557604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff80881691160361163157846116088861110d600186611aa4565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611682565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150610f779050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081610f77565b60006116fa82600a015490565b60000361170957506000919050565b61171582600a0161153a565b6001600160d01b031692915050565b60008160000361173657506000919050565b600060016117438461186e565b901c6001901b9050600181848161175c5761175c611ba0565b048201901c9050600181848161177457611774611ba0565b048201901c9050600181848161178c5761178c611ba0565b048201901c905060018184816117a4576117a4611ba0565b048201901c905060018184816117bc576117bc611ba0565b048201901c905060018184816117d4576117d4611ba0565b048201901c905060018184816117ec576117ec611ba0565b048201901c90506107cf8182858161180657611806611ba0565b04611902565b60005b818310156118665760006118238484611918565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561185257809250611860565b61185d816001611aea565b93505b5061180f565b509392505050565b600080608083901c1561188357608092831c92015b604083901c1561189557604092831c92015b602083901c156118a757602092831c92015b601083901c156118b957601092831c92015b600883901c156118cb57600892831c92015b600483901c156118dd57600492831c92015b600283901c156118ef57600292831c92015b600183901c1561055f5760010192915050565b600081831061191157816107cf565b5090919050565b60006119276002848418611bb6565b6107cf90848416611aea565b80356001600160a01b038116811461194a57600080fd5b919050565b6000806040838503121561196257600080fd5b61196b83611933565b946020939093013593505050565b60006020828403121561198b57600080fd5b6107cf82611933565b6000602082840312156119a657600080fd5b813565ffffffffffff811681146107cf57600080fd5b6001600160a01b0391909116815260200190565b600080602083850312156119e357600080fd5b82356001600160401b03808211156119fa57600080fd5b818501915085601f830112611a0e57600080fd5b813581811115611a1d57600080fd5b8660208260051b8501011115611a3257600080fd5b60209290920196919550909350505050565b600080600060608486031215611a5957600080fd5b611a6284611933565b9250611a7060208501611933565b9150604084013590509250925092565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561055f5761055f611a8e565b6000600160ff1b8201611acc57611acc611a8e565b5060000390565b600081611ae257611ae2611a8e565b506000190190565b8082018082111561055f5761055f611a8e565b634e487b7160e01b600052603260045260246000fd5b600060018201611b2557611b25611a8e565b5060010190565b600060208284031215611b3e57600080fd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b600060208284031215611b7857600080fd5b815160ff811681146107cf57600080fd5b808202811582820484141761055f5761055f611a8e565b634e487b7160e01b600052601260045260246000fd5b600082611bd357634e487b7160e01b600052601260045260246000fd5b50049056fec261b133a4ae727cc833b53c79e1135e9909a1d7b878724ceae6bc7dc5b7e67cbf340c6e47f6acc1fa5fcad9ef75c1e4bd8d91e7313667c3c9859f230fc7f883a264697066735822122023f67934509f1dbe0f40145632439e22c24927a3ffed8ccfff36bc49f2a7230b64736f6c63430008140033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100e55760003560e01c80630132f6c0146100ea578063073ea6ae1461010c5780630a5515e31461013257806316a6fa261461015d57806318be49d91461017d5780633e28391d1461019d578063453929e0146101c0578063516bb8a3146101d357806353055e80146101e6578063589444bb146101f95780636fb7f7eb1461020c578063ac5500ce1461021f578063c26f3acf1461023f578063c61c06e71461025f578063c7329cf714610272578063da8be86414610285578063f3a84655146102a5575b600080fd5b8180156100f657600080fd5b5061010a61010536600461194f565b6102b8565b005b61011f61011a366004611979565b6104ea565b6040519081526020015b60405180910390f35b610145610140366004611994565b610548565b6040516001600160d01b039091168152602001610129565b81801561016957600080fd5b5061010a61017836600461194f565b610565565b61019061018b36600461194f565b610683565b60405161012991906119bc565b6101b06101ab366004611979565b61072d565b6040519015158152602001610129565b6101906101ce366004611979565b610783565b6101b06101e136600461194f565b6107d6565b6101b06101f436600461194f565b61084f565b610190610207366004611979565b6108c6565b61011f61021a366004611979565b6108d9565b81801561022b57600080fd5b5061010a61023a3660046119d0565b6108ec565b81801561024b57600080fd5b5061010a61025a366004611a44565b61094b565b61011f61026d36600461194f565b610baa565b61011f61028036600461194f565b610bf2565b81801561029157600080fd5b5061010a6102a0366004611979565b610c67565b6101906102b336600461194f565b610da2565b60006102c2610e06565b905060006102d08285610e2a565b90506001600160a01b0381166103045783604051636a45db5b60e11b81526004016102fb91906119bc565b60405180910390fd5b61030e8282610e77565b1561032e5783604051636a45db5b60e11b81526004016102fb91906119bc565b8260000361034f57604051637cddf3b160e01b815260040160405180910390fd5b600061035b8386610ed6565b9050808411156103825783816040516388c4fe8f60e01b81526004016102fb929190611a80565b600061038e8583611aa4565b905080158015906103a65750670de0b6b3a764000081105b156103d05780670de0b6b3a76400006040516313ba636d60e31b81526004016102fb929190611a80565b6104066103dc43610ef9565b6103e583610f30565b6001600160a01b038916600090815260088801602052604090209190610f64565b505061041c84848761041790611ab7565b610f7f565b806000036104a65761042f848785610ffa565b61043b8460001961102e565b6001600160a01b0383166000908152600b85016020526040812080549161046183611ad3565b9190505550826001600160a01b0316866001600160a01b0316600080516020611bf98339815191528460405161049991815260200190565b60405180910390a36104e2565b826001600160a01b0316866001600160a01b0316600080516020611bd983398151915287846040516104d9929190611a80565b60405180910390a35b505050505050565b6000806104f5610e06565b905060006105038285610e2a565b90506001600160a01b03811661051d575060009392505050565b6105278282610e77565b15610536575060009392505050565b6105408285610ed6565b949350505050565b600061055f82610556610e06565b600a0190611089565b92915050565b600061056f610e06565b90508160000361059257604051637cddf3b160e01b815260040160405180910390fd5b600061059e8285610e2a565b90506001600160a01b0381166105c95783604051636a45db5b60e11b81526004016102fb91906119bc565b6105d38282610e77565b156105f35783604051636a45db5b60e11b81526004016102fb91906119bc565b6105fe82858561113f565b6106098282856111dc565b60006106158386610ed6565b905060006106238583611aea565b90506106316103dc43610ef9565b505061063e848487610f7f565b826001600160a01b0316866001600160a01b03167ff17f3266a20d82c0f0c42d702101166813b9ee3f68ae658f5408d9fbabfe867187846040516104d9929190611a80565b60008061068e610e06565b6001600160a01b0385166000908152600782016020526040812054919250036106bb57600091505061055f565b60006106e96106c985610ef9565b6001600160a01b0387166000908152600785016020526040902090611089565b9050806001600160d01b03166000036107075760009250505061055f565b80610713838287611345565b15610724576000935050505061055f565b95945050505050565b600080610738610e06565b905060006107468285610e2a565b90506001600160a01b038116610760575060009392505050565b61076a8282610e77565b15610779575060009392505050565b5060019392505050565b60008061078e610e06565b9050600061079c8285610e2a565b90506001600160a01b0381166107b6575060009392505050565b6107c08282610e77565b156107cf575060009392505050565b9392505050565b6000806107e1610e06565b6001600160a01b03851660009081526007820160205260408120549192500361080e57600091505061055f565b600061081c6106c985610ef9565b9050806001600160d01b031660000361083a5760009250505061055f565b610845828286611345565b1595945050505050565b60008061085a610e06565b6001600160a01b0385166000908152601d820160205260408120549192500361088757600091505061055f565b6108b361089384610ef9565b6001600160a01b0386166000908152601d84016020526040902090611089565b6001600160d01b03161515949350505050565b600061055f6108d3610e06565b83610e2a565b600061055f6108e6610e06565b8361139b565b60006108f6610e06565b905060005b82811015610945576109338285858481811061091957610919611afd565b905060200201602081019061092e9190611979565b6113e8565b8061093d81611b13565b9150506108fb565b50505050565b6000610955610e06565b90508160000361097857604051637cddf3b160e01b815260040160405180910390fd5b670de0b6b3a76400008210156109ad5781670de0b6b3a76400006040516313ba636d60e31b81526004016102fb929190611a80565b826001600160a01b0316846001600160a01b0316036109e15783604051630c71b3bd60e01b81526004016102fb91906119bc565b60006109ed8286610e2a565b90506001600160a01b03811615610a9557610a088282610e77565b15610a69576000610a198387610ed6565b9050610a29838361041784611ab7565b610a56610a3543610ef9565b6001600160a01b038816600090815260088601602052604081209190610f64565b5050610a63838784610ffa565b50610a95565b604051633e39e40f60e21b81526001600160a01b038087166004830152821660248201526044016102fb565b610aa082868561113f565b610aab8285856111dc565b610adb610ab743610ef9565b6001600160a01b038781166000908152600786016020526040902091908716610f64565b5050610b13610ae943610ef9565b610af285610f30565b6001600160a01b038816600090815260088601602052604090209190610f64565b5050610b20828585610f7f565b610b2b82600161102e565b6001600160a01b0384166000908152600b830160205260408120805491610b5183611b13565b9190505550836001600160a01b0316856001600160a01b03167ff30d5f04d8ccb1d731ec50addde98da813e2697f466b244e045210fc90af129685604051610b9b91815260200190565b60405180910390a35050505050565b6000610be2610bb883610ef9565b610bc0610e06565b6001600160a01b03861660009081526008919091016020526040902090611089565b6001600160d01b03169392505050565b600080610bfd610e06565b6001600160a01b038516600090815260098201602052604081205491925003610c2a57600091505061055f565b610c56610c3684610ef9565b6001600160a01b0386166000908152600984016020526040902090611089565b6001600160d01b0316949350505050565b6000610c71610e06565b90506000610c7f8284610e2a565b90506001600160a01b038116610caa5782604051636a45db5b60e11b81526004016102fb91906119bc565b610cb48282610e77565b15610cd45782604051636a45db5b60e11b81526004016102fb91906119bc565b6000610ce08385610ed6565b9050610cf0838361041784611ab7565b610d1d610cfc43610ef9565b6001600160a01b038616600090815260088601602052604081209190610f64565b5050610d2a838584610ffa565b610d368360001961102e565b6001600160a01b0382166000908152600b840160205260408120805491610d5c83611ad3565b9190505550816001600160a01b0316846001600160a01b0316600080516020611bf983398151915283604051610d9491815260200190565b60405180910390a350505050565b600080610dad610e06565b6001600160a01b038516600090815260078201602052604081205491925003610dda57600091505061055f565b6000610de86106c985610ef9565b9050806001600160d01b03166000036105405760009250505061055f565b7f2556f61b975c74e3f128bbc478158bc306f6253c34d95084531f202ce74e570090565b6001600160a01b0381166000908152600783016020526040812054600003610e545750600061055f565b6001600160a01b038216600090815260078401602052604090206107cf9061153a565b6001600160a01b0381166000908152601d83016020526040812054600003610ea15750600061055f565b6001600160a01b0382166000908152601d840160205260409020610ec49061153a565b6001600160d01b031615159392505050565b6001600160a01b03811660009081526008830160205260408120610be29061153a565b600065ffffffffffff821115610f2c576040516306dfcc6560e41b815260306004820152602481018390526044016102fb565b5090565b60006001600160d01b03821115610f2c576040516306dfcc6560e41b815260d06004820152602481018390526044016102fb565b600080610f72858585611573565b915091505b935093915050565b6000610f8b848461139b565b9050600080831215610faf57610fa083611ab7565b610faa9083611aa4565b610fb9565b610fb98383611aea565b9050610ff1610fc743610ef9565b610fd083610f30565b6001600160a01b038716600090815260098901602052604090209190610f64565b50505050505050565b61102761100643610ef9565b6001600160a01b038416600090815260078601602052604081209190610f64565b5050505050565b6000611039836116ed565b905060008083121561105d5761104e83611ab7565b6110589083611aa4565b611067565b6110678383611aea565b90506104e261107543610ef9565b61107e83610f30565b600a87019190610f64565b8154600090818160058111156110e85760006110a484611724565b6110ae9085611aa4565b60008881526020902090915081015465ffffffffffff90811690871610156110d8578091506110e6565b6110e3816001611aea565b92505b505b60006110f68787858561180c565b905080156111315761111b8761110d600184611aa4565b600091825260209091200190565b54600160301b90046001600160d01b0316611134565b60005b979650505050505050565b6005830154604051632f07d61760e11b81526000916001600160a01b031690635e0fac2e906111729086906004016119bc565b602060405180830381865afa15801561118f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b39190611b2c565b90508082111561094557828282604051633f0c4e2d60e01b81526004016102fb93929190611b45565b6040516330ccebb560e01b815260019073__$b124684ac4fa46e1989835813ce83d3b15$__906330ccebb5906112169086906004016119bc565b602060405180830381865af4158015611233573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112579190611b66565b60ff161461127a5781604051631295e76f60e11b81526004016102fb91906119bc565b6001600160a01b038216600090815260208490526040812061129b9061153a565b6001600160d01b0316905083600101548110156112cd5782604051631295e76f60e11b81526004016102fb91906119bc565b60006112d9858561139b565b905060006112e78483611aea565b9050806112f584600a611b89565b10156104e257600061130884600a611b89565b9050600083821161131a576000611324565b6113248483611aa4565b9050868682604051637d29c28d60e11b81526004016102fb93929190611b45565b6001600160a01b0382166000908152601d8401602052604081205460000361136f575060006107cf565b6108b361137b83610ef9565b6001600160a01b0385166000908152601d87016020526040902090611089565b6001600160a01b03811660009081526009830160205260408120546000036113c55750600061055f565b6001600160a01b03821660009081526009840160205260409020610be29061153a565b60006113f48383610e2a565b90506001600160a01b03811661140957505050565b6114138382610e77565b1561141d57505050565b60006114298484610ed6565b60058501546040516370a0823160e01b81529192506000916001600160a01b03909116906370a08231906114619087906004016119bc565b602060405180830381865afa15801561147e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a29190611b2c565b90508082116114b2575050505050565b60006114be8284611aa4565b90506114f66114cc43610ef9565b6114d584610f30565b6001600160a01b038816600090815260088a01602052604090209190610f64565b505061150786858361041790611ab7565b836001600160a01b0316856001600160a01b0316600080516020611bd983398151915283856040516104d9929190611a80565b8054600090801561156a576115548361110d600184611aa4565b54600160301b90046001600160d01b03166107cf565b60009392505050565b8254600090819080156116925760006115918761110d600185611aa4565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b0316602084015291925090871610156115e557604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff80881691160361163157846116088861110d600186611aa4565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611682565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b602001519250839150610f779050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b029190931617920191909155905081610f77565b60006116fa82600a015490565b60000361170957506000919050565b61171582600a0161153a565b6001600160d01b031692915050565b60008160000361173657506000919050565b600060016117438461186e565b901c6001901b9050600181848161175c5761175c611ba0565b048201901c9050600181848161177457611774611ba0565b048201901c9050600181848161178c5761178c611ba0565b048201901c905060018184816117a4576117a4611ba0565b048201901c905060018184816117bc576117bc611ba0565b048201901c905060018184816117d4576117d4611ba0565b048201901c905060018184816117ec576117ec611ba0565b048201901c90506107cf8182858161180657611806611ba0565b04611902565b60005b818310156118665760006118238484611918565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561185257809250611860565b61185d816001611aea565b93505b5061180f565b509392505050565b600080608083901c1561188357608092831c92015b604083901c1561189557604092831c92015b602083901c156118a757602092831c92015b601083901c156118b957601092831c92015b600883901c156118cb57600892831c92015b600483901c156118dd57600492831c92015b600283901c156118ef57600292831c92015b600183901c1561055f5760010192915050565b600081831061191157816107cf565b5090919050565b60006119276002848418611bb6565b6107cf90848416611aea565b80356001600160a01b038116811461194a57600080fd5b919050565b6000806040838503121561196257600080fd5b61196b83611933565b946020939093013593505050565b60006020828403121561198b57600080fd5b6107cf82611933565b6000602082840312156119a657600080fd5b813565ffffffffffff811681146107cf57600080fd5b6001600160a01b0391909116815260200190565b600080602083850312156119e357600080fd5b82356001600160401b03808211156119fa57600080fd5b818501915085601f830112611a0e57600080fd5b813581811115611a1d57600080fd5b8660208260051b8501011115611a3257600080fd5b60209290920196919550909350505050565b600080600060608486031215611a5957600080fd5b611a6284611933565b9250611a7060208501611933565b9150604084013590509250925092565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561055f5761055f611a8e565b6000600160ff1b8201611acc57611acc611a8e565b5060000390565b600081611ae257611ae2611a8e565b506000190190565b8082018082111561055f5761055f611a8e565b634e487b7160e01b600052603260045260246000fd5b600060018201611b2557611b25611a8e565b5060010190565b600060208284031215611b3e57600080fd5b5051919050565b6001600160a01b039390931683526020830191909152604082015260600190565b600060208284031215611b7857600080fd5b815160ff811681146107cf57600080fd5b808202811582820484141761055f5761055f611a8e565b634e487b7160e01b600052601260045260246000fd5b600082611bd357634e487b7160e01b600052601260045260246000fd5b50049056fec261b133a4ae727cc833b53c79e1135e9909a1d7b878724ceae6bc7dc5b7e67cbf340c6e47f6acc1fa5fcad9ef75c1e4bd8d91e7313667c3c9859f230fc7f883a264697066735822122023f67934509f1dbe0f40145632439e22c24927a3ffed8ccfff36bc49f2a7230b64736f6c63430008140033",
"linkReferences": {
"contracts/navigator/libraries/NavigatorLifecycleUtils.sol": {
"NavigatorLifecycleUtils": [
{
"length": 20,
"start": 4648
}
]
}
},
"deployedLinkReferences": {
"contracts/navigator/libraries/NavigatorLifecycleUtils.sol": {
"NavigatorLifecycleUtils": [
{
"length": 20,
"start": 4590
}
]
}
}
}