diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 2b3942685..9fbc69364 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -104,7 +104,7 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615edb380380615edb83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615d8e8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c806380dd672f11610135578063b771b3bc116100b4578063d5f20ff611610079578063d5f20ff614610516578063df93d8de14610536578063e4a63c4014610540578063fb8b11dd14610554578063fd7ac5e714610567575f80fd5b8063b771b3bc146104ae578063ba3a4b97146104d4578063bc5fbfec146104e7578063bee0a03f146104fb578063c974d1b61461050e575f80fd5b80639e1bc4ef116100fa5780639e1bc4ef1461044e5780639e478eea14610461578063a3a65e4814610474578063a9778a7a146102ee578063afb9809614610487575f80fd5b806380dd672f146103fa5780638280a25a1461040d5780638ef34c981461041557806393e24598146104285780639ae064471461043b575f80fd5b8063467ef06f116101c1578063620658561161018657806362065856146103a757806366435abf146103ba578063732214f8146103cd57806376f78621146103d45780637d8d2f77146103e7575f80fd5b8063467ef06f146103305780634bee0040146103435780635dd6a6cb1461036457806360305d621461037757806360ad778414610394575f80fd5b806325e1c7761161020757806325e1c776146102b05780632e2194d8146102c357806335455ded146102ee57806337b9be8f1461030a5780633a1cfff61461031d575f80fd5b80630118acc4146102435780630322ed9814610258578063151d30d11461026b5780631ec447241461028a57806320d91b7a1461029d575b5f80fd5b610256610251366004614cd2565b61057a565b005b610256610266366004614d0d565b61058b565b610273600a81565b60405160ff90911681526020015b60405180910390f35b610256610298366004614cd2565b61081b565b6102566102ab366004614d24565b610827565b6102566102be366004614d72565b610dac565b6102d66102d1366004614d0d565b610e20565b6040516001600160401b039091168152602001610281565b6102f761271081565b60405161ffff9091168152602001610281565b610256610318366004614da7565b610e74565b61025661032b366004614cd2565b610e87565b61025661033e366004614df5565b610e93565b610356610351366004614e33565b610f78565b604051908152602001610281565b610256610372366004614da7565b610fad565b61037f601481565b60405163ffffffff9091168152602001610281565b6102566103a2366004614d72565b610fb9565b6103566103b5366004614e9a565b611286565b6102d66103c8366004614d0d565b6112a6565b6103565f81565b6102566103e2366004614cd2565b6112ba565b6102566103f5366004614da7565b6112c6565b610256610408366004614d72565b6112d2565b610273603081565b610256610423366004614eb5565b61150c565b610256610436366004614d0d565b6115ee565b610256610449366004614da7565b611682565b61035661045c366004614ee3565b61168e565b61025661046f366004614f03565b6116ba565b610256610482366004614df5565b611799565b6103567f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6104bc6005600160991b0181565b6040516001600160a01b039091168152602001610281565b6102566104e2366004614d0d565b61198e565b6103565f80516020615cf983398151915281565b610256610509366004614d0d565b611be7565b610273601481565b610529610524366004614d0d565b611d24565b6040516102819190614fab565b6102d66202a30081565b6103565f80516020615cd983398151915281565b610256610562366004614eb5565b611e73565b61035661057536600461502b565b611f3a565b6105868383835f611f95565b505050565b5f8181525f80516020615d398339815191526020526040808220815160e0810190925280545f80516020615cf983398151915293929190829060ff1660058111156105d8576105d8614f36565b60058111156105e9576105e9614f36565b81526020016001820180546105fd90615096565b80601f016020809104026020016040519081016040528092919081815260200182805461062990615096565b80156106745780601f1061064b57610100808354040283529160200191610674565b820191905f5260205f20905b81548152906001019060200180831161065757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156106df576106df614f36565b1461071b575f8381526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150ce565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610792573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107b991908101906151d7565b6040518263ffffffff1660e01b81526004016107d59190615208565b6020604051808303815f875af11580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610815919061521a565b50505050565b6108158383835f611fc1565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615cf98339815191529060ff161561087957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e0919061521a565b836020013514610909576040516372b0a7e760e11b815260208401356004820152602401610712565b3061091a6060850160408601615231565b6001600160a01b03161461095d576109386060840160408501615231565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610712565b5f61096b606085018561524c565b905090505f805b828163ffffffff161015610bd2575f61098e606088018861524c565b8363ffffffff168181106109a4576109a4615291565b90506020028101906109b691906152a5565b6109bf90615310565b80516040519192505f9160088801916109d79161538b565b90815260200160405180910390205414610a0757805160405163a41f772f60e01b81526107129190600401615208565b5f6002885f013584604051602001610a3692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a509161538b565b602060405180830381855afa158015610a6b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a8e919061521a565b90508086600801835f0151604051610aa6919061538b565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610ae690826153e0565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610b6590856154af565b8251604051919550610b769161538b565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610bcb906154c2565b9050610972565b50600483018190556001830154606490610bf690600160401b900460ff16836154e4565b1015610c1857604051635943317f60e01b815260048101829052602401610712565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c3c876122ee565b604001516040518263ffffffff1660e01b8152600401610c5c9190615208565b602060405180830381865af4158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b919061521a565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610cd59190615626565b5f60405180830381865af4158015610cef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d1691908101906151d7565b90505f600282604051610d29919061538b565b602060405180830381855afa158015610d44573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d67919061521a565b9050828114610d935760405163baaea89d60e01b81526004810182905260248101849052604401610712565b5050506009909201805460ff1916600117905550505050565b610db582612404565b610dd5576040516330efa98b60e01b815260048101839052602401610712565b5f610ddf83611d24565b5190506002816005811115610df657610df6614f36565b14610e16578060405163170cc93360e21b815260040161071291906150ce565b610815838361242d565b5f80610e2a6126cc565b60030154610e3890846156ba565b9050801580610e4d57506001600160401b0381115b15610e6e5760405163222d164360e21b815260048101849052602401610712565b92915050565b610e8084848484611fc1565b5050505050565b6108158383835f6126f0565b610e9b612912565b5f610ea46126cc565b90505f80610eb184612949565b91509150610ebe82612404565b610eca57505050610f5f565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f01575080610f1f565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f3457610f34614f36565b03610f4357610f438185612cfc565b610f5982610f548560400151611286565b612d26565b50505050505b610f7560015f80516020615d1983398151915255565b50565b5f610f81612912565b610f8d85858585612d5c565b9050610fa560015f80516020615d1983398151915255565b949350505050565b61081584848484612ec1565b5f610fc26126cc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115610ffb57610ffb614f36565b600381111561100c5761100c614f36565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61108282611d24565b905060018351600381111561109957611099614f36565b146110ba578251604051633b0d540d60e21b815261071291906004016156d9565b6004815160058111156110cf576110cf614f36565b036110e5576110dd86612eed565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61110a896122ee565b604001516040518263ffffffff1660e01b815260040161112a9190615208565b606060405180830381865af4158015611145573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116991906156f3565b509150915081841461119657846040015160405163089938b360e11b815260040161071291815260200190565b806001600160401b031683606001516001600160401b031610806111cf5750806001600160401b03168560a001516001600160401b0316115b156111f857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61128f6126cc565b60030154610e6e906001600160401b0384166154e4565b5f6112b082611d24565b6080015192915050565b6105868383835f612ec1565b610e80848484846126f0565b6112da612912565b5f6112e36126cc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561131c5761131c614f36565b600381111561132d5761132d614f36565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113a6576113a6614f36565b146113c7578051604051633b0d540d60e21b815261071291906004016156d9565b60046113d68260400151611d24565b5160058111156113e8576113e8614f36565b146114e7575f6113f7846122ee565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016114369190615208565b606060405180830381865af4158015611451573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147591906156f3565b5091509150818460400151146114a15760405163089938b360e11b815260048101839052602401610712565b806001600160401b03168460c001516001600160401b031611156114e357604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5050505b6114f084612eed565b505061150860015f80516020615d1983398151915255565b5050565b6001600160a01b03811661153e5760405163caa903f960e01b81526001600160a01b0382166004820152602401610712565b5f6115476126cc565b5f8481526006820160205260409020549091506001600160a01b0316331461159057335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610712565b336001600160a01b038316036115bf575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f6115f76126cc565b90505f61160383611d24565b519050600481600581111561161a5761161a614f36565b1461163a578060405163170cc93360e21b815260040161071291906150ce565b5f8381526006830160205260409020546001600160a01b0316331461165f573361156b565b5f838152600683016020526040902054610586906001600160a01b031684612cfc565b61081584848484611f95565b5f611697612912565b6116a28333846130fa565b9050610e6e60015f80516020615d1983398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611703575080546001600160401b03808416911610155b156117215760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561174c848461333f565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615cf98339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6117cc866122ee565b604001516040518263ffffffff1660e01b81526004016117ec9190615208565b6040805180830381865af4158015611806573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061182a9190615733565b915091508061185057604051632d07135360e01b81528115156004820152602401610712565b5f8281526006840160205260409020805461186a90615096565b90505f0361188e5760405163089938b360e11b815260048101839052602401610712565b60015f83815260078501602052604090205460ff1660058111156118b4576118b4614f36565b146118e7575f8281526007840160205260409081902054905163170cc93360e21b81526107129160ff16906004016150ce565b5f82815260068401602052604081206118ff91614c21565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6119976126cc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156119d0576119d0614f36565b60038111156119e1576119e1614f36565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611a5a57611a5a614f36565b14158015611a7b5750600381516003811115611a7857611a78614f36565b14155b15611a9c578051604051633b0d540d60e21b815261071291906004016156d9565b5f611aaa8260400151611d24565b905080606001516001600160401b03165f03611adc576040516339b894f960e21b815260048101859052602401610712565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b4a93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611b64573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b8b91908101906151d7565b6040518263ffffffff1660e01b8152600401611ba79190615208565b6020604051808303815f875af1158015611bc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e80919061521a565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615cf98339815191529190611c2e90615096565b90505f03611c525760405163089938b360e11b815260048101839052602401610712565b60015f83815260078301602052604090205460ff166005811115611c7857611c78614f36565b14611cab575f8281526007820160205260409081902054905163170cc93360e21b81526107129160ff16906004016150ce565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611ce49190600401615756565b6020604051808303815f875af1158015611d00573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610586919061521a565b611d2c614c58565b5f8281525f80516020615d39833981519152602052604090819020815160e0810190925280545f80516020615cf9833981519152929190829060ff166005811115611d7957611d79614f36565b6005811115611d8a57611d8a614f36565b8152602001600182018054611d9e90615096565b80601f0160208091040260200160405190810160405280929190818152602001828054611dca90615096565b8015611e155780601f10611dec57610100808354040283529160200191611e15565b820191905f5260205f20905b815481529060010190602001808311611df857829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ea55760405163caa903f960e01b81526001600160a01b0382166004820152602401610712565b5f611eae6126cc565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611edc573361156b565b336001600160a01b03831603611f0b575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615cf9833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f7d90869086906157e0565b90815260200160405180910390205491505092915050565b611fa184848484611fc1565b61081557604051631036cf9160e11b815260048101859052602401610712565b5f80611fcb6126cc565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561200457612004614f36565b600381111561201557612015614f36565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61208b82611d24565b90506002835160038111156120a2576120a2614f36565b146120c3578251604051633b0d540d60e21b815261071291906004016156d9565b60208301516001600160a01b0316331461215f575f8281526006850160205260409020546001600160a01b031633146120fc573361156b565b5f82815260068501602052604090205460a082015161212b91600160b01b90046001600160401b0316906157ef565b6001600160401b031642101561215f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b60028151600581111561217457612174614f36565b036122965760028401546080840151612196916001600160401b0316906157ef565b6001600160401b03164210156121ca5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b87156121dc576121da828861242d565b505b5f8981526007850160205260409020805460ff1916600317905560608301516080820151612215918491612210919061580f565b613359565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561225884888c613530565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610fa59350505050565b6004815160058111156122ab576122ab614f36565b036122d2576122bb83878b613530565b506122c589612eed565b6001945050505050610fa5565b805160405163170cc93360e21b815261071291906004016150ce565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612352573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612379919081019061582f565b915091508061239b57604051636b2f19e960e01b815260040160405180910390fd5b8151156123c1578151604051636ba589a560e01b81526004810191909152602401610712565b60208201516001600160a01b0316156123fd576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5092915050565b5f8061240e6126cc565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612478573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261249f919081019061582f565b91509150806124c157604051636b2f19e960e01b815260040160405180910390fd5b5f6124ca6126cc565b60058101548451919250146124f8578251604051636ba589a560e01b81526004810191909152602401610712565b60208301516001600160a01b031615612534576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b60208301516001600160a01b031615612570576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125ad9190615208565b6040805180830381865af41580156125c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125eb91906158bf565b915091508188146126125760405163089938b360e11b815260048101899052602401610712565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126a3575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126c1565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806126fa6126cc565b90505f61270687613715565b905061271187612404565b61272057600192505050610fa5565b5f8781526006830160205260409020546001600160a01b03163314612745573361156b565b5f87815260068301602052604090205460a082015161277491600160b01b90046001600160401b0316906157ef565b6001600160401b03168160c001516001600160401b031610156127bb5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610712565b5f86156127d3576127cc888761242d565b90506127f1565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281690611286565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a3919061521a565b90508084600a015f8b81526020019081526020015f205f8282546128c791906154af565b90915550506001600160a01b03861615612904575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615d1983398151915280546001190161294357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612952614c58565b5f80516020615cf98339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612985886122ee565b604001516040518263ffffffff1660e01b81526004016129a59190615208565b6040805180830381865af41580156129bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e39190615733565b915091508015612a0a57604051632d07135360e01b81528115156004820152602401610712565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a3b57612a3b614f36565b6005811115612a4c57612a4c614f36565b8152602001600182018054612a6090615096565b80601f0160208091040260200160405190810160405280929190818152602001828054612a8c90615096565b8015612ad75780601f10612aae57610100808354040283529160200191612ad7565b820191905f5260205f20905b815481529060010190602001808311612aba57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b4257612b42614f36565b14158015612b635750600181516005811115612b6057612b60614f36565b14155b15612b8457805160405163170cc93360e21b815261071291906004016150ce565b600381516005811115612b9957612b99614f36565b03612ba75760048152612bac565b600581525b836008018160200151604051612bc2919061538b565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612c0657612c06614f36565b021790555060208201516001820190612c1f90826153e0565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612cc557612cc5614f36565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d056126cc565b5f838152600a820160205260408120805491905590915061081584826139f9565b5f80516020615cd983398151915254611508906001600160a01b03168383613a6f565b60015f80516020615d1983398151915255565b5f80612d666126cc565b600281015490915061ffff600160401b90910481169086161080612d8f575061271061ffff8616115b15612db357604051635f12e6c360e11b815261ffff86166004820152602401610712565b60028101546001600160401b039081169085161015612def576040516202a06d60e11b81526001600160401b0385166004820152602401610712565b8054831080612e015750806001015483115b15612e225760405163222d164360e21b815260048101849052602401610712565b5f612e2c84613ace565b90505f612e3882610e20565b90505f612e458983613af1565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612ecd848484846126f0565b61081557604051635bff683f60e11b815260048101859052602401610712565b5f612ef66126cc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f2f57612f2f614f36565b6003811115612f4057612f40614f36565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612fdd7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612fec91906157ef565b6001600160401b03164210156130205760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130705750602082015161308e565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061309b838886614016565b915091506130b48560200151610f548760600151611286565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131046126cc565b90505f6131136102d185613ace565b90505f61311f87611d24565b905061312a87612404565b61314a576040516330efa98b60e01b815260048101889052602401610712565b60028151600581111561315f5761315f614f36565b1461318057805160405163170cc93360e21b815261071291906004016150ce565b5f82826080015161319191906157ef565b905083600201600a9054906101000a90046001600160401b031682604001516131ba91906158e2565b6001600160401b0316816001600160401b031611156131f757604051636d51fe0560e11b81526001600160401b0382166004820152602401610712565b5f806132038a84613359565b915091505f8a8360405160200161323192919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b6133476140c3565b6133508261410e565b61150881614188565b5f8281525f80516020615d39833981519152602052604081206002015481905f80516020615cf983398151915290600160801b90046001600160401b03166133a185826141f0565b5f6133ab87614413565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613454573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261347b91908101906151d7565b6040518263ffffffff1660e01b81526004016134979190615208565b6020604051808303815f875af11580156134b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d7919061521a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061353a6126cc565b90505f61354a8660400151611d24565b90505f60038251600581111561356257613562614f36565b1480613580575060048251600581111561357e5761357e614f36565b145b15613590575060c08101516135cd565b6002825160058111156135a5576135a5614f36565b036135b15750426135cd565b815160405163170cc93360e21b815261071291906004016150ce565b86608001516001600160401b0316816001600160401b0316116135f5575f9350505050613338565b600483015460608801515f916001600160a01b031690634f22429f9061361a90611286565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561369b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136bf919061521a565b5f878152600886016020526040902081905590506001600160a01b038716156126c1575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61371d614c58565b5f8281525f80516020615d398339815191526020526040808220815160e0810190925280545f80516020615cf983398151915293929190829060ff16600581111561376a5761376a614f36565b600581111561377b5761377b614f36565b815260200160018201805461378f90615096565b80601f01602080910402602001604051908101604052809291908181526020018280546137bb90615096565b80156138065780601f106137dd57610100808354040283529160200191613806565b820191905f5260205f20905b8154815290600101906020018083116137e957829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561387457613874614f36565b146138a7575f8481526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150ce565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff191660018360058111156138eb576138eb614f36565b02179055506020820151600182019061390490826153e0565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139a28582613359565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f5f80516020615cd983398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613a54575f80fd5b505af1158015613a66573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b0383811660248301526044820183905261058691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614488565b5f610e6e825f80516020615cd9833981519152546001600160a01b0316906144e9565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b3557604051637fab81e560e01b815260040160405180910390fd5b5f80516020615cf983398151915242613b546060860160408701614e9a565b6001600160401b0316111580613b8e5750613b726202a300426154af565b613b826060860160408701614e9a565b6001600160401b031610155b15613bc857613ba36060850160408601614e9a565b604051635879da1360e11b81526001600160401b039091166004820152602401610712565b613bdd613bd8606086018661590d565b6144f5565b613bed613bd8608086018661590d565b6030613bfc6020860186615921565b905014613c2e57613c106020850185615921565b6040516326475b2f60e11b8152610712925060040190815260200190565b613c388480615921565b90505f03613c6557613c4a8480615921565b604051633e08a12560e11b8152600401610712929190615963565b5f60088201613c748680615921565b604051613c829291906157e0565b90815260200160405180910390205414613cbb57613ca08480615921565b60405163a41f772f60e01b8152600401610712929190615963565b613cc5835f6141f0565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613d028a80615921565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d4a908b018b615921565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613d9360608b0160408c01614e9a565b6001600160401b03168152602001613dae60608b018b61590d565b613db790615976565b8152602001613dc960808b018b61590d565b613dd290615976565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e009190615aa3565b5f60405180830381865af4158015613e1a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e419190810190615b5a565b5f82815260068601602052604090209193509150613e5f82826153e0565b508160088401613e6f8880615921565b604051613e7d9291906157e0565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613eb9908590600401615208565b6020604051808303815f875af1158015613ed5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef9919061521a565b5f8481526007860160205260409020805460ff191660011790559050613f1f8780615921565b5f858152600787016020526040902060010191613f3d919083615b9d565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613f9c8880615921565b604051613faa9291906157e0565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fe89190614e9a565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140216126cc565b5f868152600882016020526040812080549082905591925090819080156140b5575f8781526006850160205260409020546127109061406b90600160a01b900461ffff16836154e4565b61407591906156ba565b91508184600a015f8981526020019081526020015f205f82825461409991906154af565b909155506140a990508282615c56565b92506140b589846139f9565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661410c57604051631afcd79f60e31b815260040160405180910390fd5b565b6141166140c3565b61411f8161465e565b614127614677565b610f756060820135608083013561414460c0850160a08601614e9a565b61415460e0860160c08701615c69565b614165610100870160e08801615c82565b61010087013561417d61014089016101208a01615231565b886101400135614687565b6141906140c3565b5f80516020615cd98339815191526001600160a01b0382166141d057604051637330680360e01b81526001600160a01b0383166004820152602401610712565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615cf98339815191525f6001600160401b0380841690851611156142245761421d838561580f565b9050614231565b61422e848461580f565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061429357506001840154815161428f916001600160401b0316906154af565b8210155b156142b9576001600160401b0383166060820152818152604081015160208201526142d8565b82816060018181516142cb91906157ef565b6001600160401b03169052505b60608101516142e89060646158e2565b602082015160018601546001600160401b0392909216916143139190600160401b900460ff166154e4565b101561434357606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610712565b856001600160401b03168160400181815161435e91906154af565b9052506040810180516001600160401b038716919061437e908390615c56565b905250600184015460408201516064916143a391600160401b90910460ff16906154e4565b10156143ca578060400151604051635943317f60e01b815260040161071291815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615d398339815191526020526040812060020180545f80516020615cf9833981519152919060089061445d90600160401b90046001600160401b0316615ca2565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61449c6001600160a01b0384168361486c565b905080515f141580156144c05750808060200190518101906144be9190615cbd565b155b1561058657604051635274afe760e01b81526001600160a01b0384166004820152602401610712565b5f613338833384614879565b6145026020820182614df5565b63ffffffff16158015614522575061451d602082018261524c565b151590505b15614569576145346020820182614df5565b614541602083018361524c565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610712565b614576602082018261524c565b90506145856020830183614df5565b63ffffffff16111561459e576145346020820182614df5565b60015b6145ae602083018361524c565b9050811015611508576145c4602083018361524c565b6145cf600184615c56565b8181106145de576145de615291565b90506020020160208101906145f39190615231565b6001600160a01b0316614609602084018461524c565b8381811061461957614619615291565b905060200201602081019061462e9190615231565b6001600160a01b0316101561465657604051630dbc8d5f60e31b815260040160405180910390fd5b6001016145a1565b6146666140c3565b61466e6149dc565b610f75816149e4565b61467f6140c3565b61410c614acc565b61468f6140c3565b5f6146986126cc565b905061ffff861615806146b0575061271061ffff8716115b156146d457604051635f12e6c360e11b815261ffff87166004820152602401610712565b878911156146f85760405163222d164360e21b8152600481018a9052602401610712565b60ff8516158061470b5750600a60ff8616115b1561472e5760405163170db35960e31b815260ff86166004820152602401610712565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614795576040516202a06d60e11b81526001600160401b0388166004820152602401610712565b835f036147b55760405163a733007160e01b815260040160405180910390fd5b816147d657604051632f6bd1db60e01b815260048101839052602401610712565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061333883835f614ad4565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156148bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148e3919061521a565b90506148fa6001600160a01b038616853086614b63565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561493e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614962919061521a565b90508181116149c85760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610712565b6149d28282615c56565b9695505050505050565b61410c6140c3565b6149ec6140c3565b80355f80516020615cf98339815191529081556014614a116060840160408501615c82565b60ff161180614a305750614a2b6060830160408401615c82565b60ff16155b15614a6457614a456060830160408401615c82565b604051634a59bbff60e11b815260ff9091166004820152602401610712565b614a746060830160408401615c82565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614aa56040830160208401614e9a565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d496140c3565b606081471015614af95760405163cd78605960e01b8152306004820152602401610712565b5f80856001600160a01b03168486604051614b14919061538b565b5f6040518083038185875af1925050503d805f8114614b4e576040519150601f19603f3d011682016040523d82523d5f602084013e614b53565b606091505b50915091506149d2868383614b9c565b6040516001600160a01b0384811660248301528381166044830152606482018390526108159186918216906323b872dd90608401613a9c565b606082614bb157614bac82614bf8565b613338565b8151158015614bc857506001600160a01b0384163b155b15614bf157604051639996b31560e01b81526001600160a01b0385166004820152602401610712565b5080613338565b805115614c085780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614c2d90615096565b5f825580601f10614c3c575050565b601f0160209004905f5260205f2090810190610f759190614c95565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614ca9575f8155600101614c96565b5090565b8015158114610f75575f80fd5b803563ffffffff81168114614ccd575f80fd5b919050565b5f805f60608486031215614ce4575f80fd5b833592506020840135614cf681614cad565b9150614d0460408501614cba565b90509250925092565b5f60208284031215614d1d575f80fd5b5035919050565b5f8060408385031215614d35575f80fd5b82356001600160401b03811115614d4a575f80fd5b830160808186031215614d5b575f80fd5b9150614d6960208401614cba565b90509250929050565b5f8060408385031215614d83575f80fd5b82359150614d6960208401614cba565b6001600160a01b0381168114610f75575f80fd5b5f805f8060808587031215614dba575f80fd5b843593506020850135614dcc81614cad565b9250614dda60408601614cba565b91506060850135614dea81614d93565b939692955090935050565b5f60208284031215614e05575f80fd5b61333882614cba565b803561ffff81168114614ccd575f80fd5b6001600160401b0381168114610f75575f80fd5b5f805f8060808587031215614e46575f80fd5b84356001600160401b03811115614e5b575f80fd5b850160a08188031215614e6c575f80fd5b9350614e7a60208601614e0e565b92506040850135614e8a81614e1f565b9396929550929360600135925050565b5f60208284031215614eaa575f80fd5b813561333881614e1f565b5f8060408385031215614ec6575f80fd5b823591506020830135614ed881614d93565b809150509250929050565b5f8060408385031215614ef4575f80fd5b50508035926020909101359150565b5f80828403610180811215614f16575f80fd5b61016080821215614f25575f80fd5b8493508301359050614ed881614d93565b634e487b7160e01b5f52602160045260245ffd5b60068110614f5a57614f5a614f36565b9052565b5f5b83811015614f78578181015183820152602001614f60565b50505f910152565b5f8151808452614f97816020860160208601614f5e565b601f01601f19169290920160200192915050565b60208152614fbd602082018351614f4a565b5f602083015160e06040840152614fd8610100840182614f80565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561503c575f80fd5b82356001600160401b0380821115615052575f80fd5b818501915085601f830112615065575f80fd5b813581811115615073575f80fd5b866020828501011115615084575f80fd5b60209290920196919550909350505050565b600181811c908216806150aa57607f821691505b6020821081036150c857634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e6e8284614f4a565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615112576151126150dc565b60405290565b604080519081016001600160401b0381118282101715615112576151126150dc565b604051601f8201601f191681016001600160401b0381118282101715615162576151626150dc565b604052919050565b5f6001600160401b03821115615182576151826150dc565b50601f01601f191660200190565b5f82601f83011261519f575f80fd5b81516151b26151ad8261516a565b61513a565b8181528460208386010111156151c6575f80fd5b610fa5826020830160208701614f5e565b5f602082840312156151e7575f80fd5b81516001600160401b038111156151fc575f80fd5b610fa584828501615190565b602081525f6133386020830184614f80565b5f6020828403121561522a575f80fd5b5051919050565b5f60208284031215615241575f80fd5b813561333881614d93565b5f808335601e19843603018112615261575f80fd5b8301803591506001600160401b0382111561527a575f80fd5b6020019150600581901b3603821315613529575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126152b9575f80fd5b9190910192915050565b5f82601f8301126152d2575f80fd5b81356152e06151ad8261516a565b8181528460208386010111156152f4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615320575f80fd5b6153286150f0565b82356001600160401b038082111561533e575f80fd5b61534a368387016152c3565b8352602085013591508082111561535f575f80fd5b5061536c368286016152c3565b602083015250604083013561538081614e1f565b604082015292915050565b5f82516152b9818460208701614f5e565b601f82111561058657805f5260205f20601f840160051c810160208510156153c15750805b601f840160051c820191505b81811015610e80575f81556001016153cd565b81516001600160401b038111156153f9576153f96150dc565b61540d816154078454615096565b8461539c565b602080601f831160018114615440575f84156154295750858301515b5f19600386901b1c1916600185901b1785556110dd565b5f85815260208120601f198616915b8281101561546e5788860151825594840194600190910190840161544f565b508582101561548b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e6e57610e6e61549b565b5f63ffffffff8083168181036154da576154da61549b565b6001019392505050565b8082028115828204841417610e6e57610e6e61549b565b5f808335601e19843603018112615510575f80fd5b83016020810192503590506001600160401b0381111561552e575f80fd5b803603821315613529575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561561957848303601f19018952813536889003605e190181126155a0575f80fd5b870160606155ae82806154fb565b8287526155be838801828461553c565b925050506155ce868301836154fb565b868303888801526155e083828461553c565b9250505060408083013592506155f583614e1f565b6001600160401b03929092169490910193909352978301979083019060010161557b565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561564a81614d93565b6001600160a01b031660608381019190915283013536849003601e19018112615671575f80fd5b83016020810190356001600160401b0381111561568c575f80fd5b8060051b360382131561569d575f80fd5b6080808501526156b160a085018284615564565b95945050505050565b5f826156d457634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106156ed576156ed614f36565b91905290565b5f805f60608486031215615705575f80fd5b83519250602084015161571781614e1f565b604085015190925061572881614e1f565b809150509250925092565b5f8060408385031215615744575f80fd5b825191506020830151614ed881614cad565b5f60208083525f845461576881615096565b806020870152604060018084165f811461578957600181146157a5576157d2565b60ff19851660408a0152604084151560051b8a010195506157d2565b895f5260205f205f5b858110156157c95781548b82018601529083019088016157ae565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123fd576123fd61549b565b6001600160401b038281168282160390808211156123fd576123fd61549b565b5f8060408385031215615840575f80fd5b82516001600160401b0380821115615856575f80fd5b9084019060608287031215615869575f80fd5b6158716150f0565b82518152602083015161588381614d93565b6020820152604083015182811115615899575f80fd5b6158a588828601615190565b6040830152508094505050506020830151614ed881614cad565b5f80604083850312156158d0575f80fd5b825191506020830151614ed881614e1f565b6001600160401b038181168382160280821691908281146159055761590561549b565b505092915050565b5f8235603e198336030181126152b9575f80fd5b5f808335601e19843603018112615936575f80fd5b8301803591506001600160401b0382111561594f575f80fd5b602001915036819003821315613529575f80fd5b602081525f610fa560208301848661553c565b5f60408236031215615986575f80fd5b61598e615118565b61599783614cba565b81526020808401356001600160401b03808211156159b3575f80fd5b9085019036601f8301126159c5575f80fd5b8135818111156159d7576159d76150dc565b8060051b91506159e884830161513a565b8181529183018401918481019036841115615a01575f80fd5b938501935b83851015615a2b5784359250615a1b83614d93565b8282529385019390850190615a06565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615a985784516001600160a01b03168252938301936001929092019190830190615a6f565b509695505050505050565b60208152815160208201525f602083015160e06040840152615ac9610100840182614f80565b90506040840151601f1980858403016060860152615ae78383614f80565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615b178383615a3d565b925060a08601519150808584030160c086015250615b358282615a3d565b91505060c0840151615b5260e08501826001600160401b03169052565b509392505050565b5f8060408385031215615b6b575f80fd5b8251915060208301516001600160401b03811115615b87575f80fd5b615b9385828601615190565b9150509250929050565b6001600160401b03831115615bb457615bb46150dc565b615bc883615bc28354615096565b8361539c565b5f601f841160018114615bf9575f8515615be25750838201355b5f19600387901b1c1916600186901b178355610e80565b5f83815260208120601f198716915b82811015615c285786850135825560209485019460019092019101615c08565b5086821015615c44575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610e6e57610e6e61549b565b5f60208284031215615c79575f80fd5b61333882614e0e565b5f60208284031215615c92575f80fd5b813560ff81168114613338575f80fd5b5f6001600160401b038083168181036154da576154da61549b565b5f60208284031215615ccd575f80fd5b815161333881614cad56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220867614b8b054b4e521199dd7bfc2eb3b65806a1b8cd67dead4bafc97554b6a6c64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615eda380380615eda83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615d8d8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c806380dd672f11610135578063b771b3bc116100b4578063d5f20ff611610079578063d5f20ff614610516578063df93d8de14610536578063e4a63c4014610540578063fb8b11dd14610554578063fd7ac5e714610567575f80fd5b8063b771b3bc146104ae578063ba3a4b97146104d4578063bc5fbfec146104e7578063bee0a03f146104fb578063c974d1b61461050e575f80fd5b80639e1bc4ef116100fa5780639e1bc4ef1461044e5780639e478eea14610461578063a3a65e4814610474578063a9778a7a146102ee578063afb9809614610487575f80fd5b806380dd672f146103fa5780638280a25a1461040d5780638ef34c981461041557806393e24598146104285780639ae064471461043b575f80fd5b8063467ef06f116101c1578063620658561161018657806362065856146103a757806366435abf146103ba578063732214f8146103cd57806376f78621146103d45780637d8d2f77146103e7575f80fd5b8063467ef06f146103305780634bee0040146103435780635dd6a6cb1461036457806360305d621461037757806360ad778414610394575f80fd5b806325e1c7761161020757806325e1c776146102b05780632e2194d8146102c357806335455ded146102ee57806337b9be8f1461030a5780633a1cfff61461031d575f80fd5b80630118acc4146102435780630322ed9814610258578063151d30d11461026b5780631ec447241461028a57806320d91b7a1461029d575b5f80fd5b610256610251366004614cd1565b61057a565b005b610256610266366004614d0c565b61058b565b610273600a81565b60405160ff90911681526020015b60405180910390f35b610256610298366004614cd1565b61081b565b6102566102ab366004614d23565b610827565b6102566102be366004614d71565b610dac565b6102d66102d1366004614d0c565b610e20565b6040516001600160401b039091168152602001610281565b6102f761271081565b60405161ffff9091168152602001610281565b610256610318366004614da6565b610e74565b61025661032b366004614cd1565b610e87565b61025661033e366004614df4565b610e93565b610356610351366004614e32565b610f78565b604051908152602001610281565b610256610372366004614da6565b610fad565b61037f601481565b60405163ffffffff9091168152602001610281565b6102566103a2366004614d71565b610fb9565b6103566103b5366004614e99565b611286565b6102d66103c8366004614d0c565b6112a6565b6103565f81565b6102566103e2366004614cd1565b6112ba565b6102566103f5366004614da6565b6112c6565b610256610408366004614d71565b6112d2565b610273603081565b610256610423366004614eb4565b61150c565b610256610436366004614d0c565b6115ed565b610256610449366004614da6565b611681565b61035661045c366004614ee2565b61168d565b61025661046f366004614f02565b6116b9565b610256610482366004614df4565b611798565b6103567f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6104bc6005600160991b0181565b6040516001600160a01b039091168152602001610281565b6102566104e2366004614d0c565b61198d565b6103565f80516020615cf883398151915281565b610256610509366004614d0c565b611be6565b610273601481565b610529610524366004614d0c565b611d23565b6040516102819190614faa565b6102d66202a30081565b6103565f80516020615cd883398151915281565b610256610562366004614eb4565b611e72565b61035661057536600461502a565b611f39565b6105868383835f611f94565b505050565b5f8181525f80516020615d388339815191526020526040808220815160e0810190925280545f80516020615cf883398151915293929190829060ff1660058111156105d8576105d8614f35565b60058111156105e9576105e9614f35565b81526020016001820180546105fd90615095565b80601f016020809104026020016040519081016040528092919081815260200182805461062990615095565b80156106745780601f1061064b57610100808354040283529160200191610674565b820191905f5260205f20905b81548152906001019060200180831161065757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156106df576106df614f35565b1461071b575f8381526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610792573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107b991908101906151d6565b6040518263ffffffff1660e01b81526004016107d59190615207565b6020604051808303815f875af11580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108159190615219565b50505050565b6108158383835f611fc0565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615cf88339815191529060ff161561087957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190615219565b836020013514610909576040516372b0a7e760e11b815260208401356004820152602401610712565b3061091a6060850160408601615230565b6001600160a01b03161461095d576109386060840160408501615230565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610712565b5f61096b606085018561524b565b905090505f805b828163ffffffff161015610bd2575f61098e606088018861524b565b8363ffffffff168181106109a4576109a4615290565b90506020028101906109b691906152a4565b6109bf9061530f565b80516040519192505f9160088801916109d79161538a565b90815260200160405180910390205414610a0757805160405163a41f772f60e01b81526107129190600401615207565b5f6002885f013584604051602001610a3692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a509161538a565b602060405180830381855afa158015610a6b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a8e9190615219565b90508086600801835f0151604051610aa6919061538a565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610ae690826153df565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610b6590856154ae565b8251604051919550610b769161538a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610bcb906154c1565b9050610972565b50600483018190556001830154606490610bf690600160401b900460ff16836154e3565b1015610c1857604051635943317f60e01b815260048101829052602401610712565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c3c876122ed565b604001516040518263ffffffff1660e01b8152600401610c5c9190615207565b602060405180830381865af4158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190615219565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610cd59190615625565b5f60405180830381865af4158015610cef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d1691908101906151d6565b90505f600282604051610d29919061538a565b602060405180830381855afa158015610d44573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d679190615219565b9050828114610d935760405163baaea89d60e01b81526004810182905260248101849052604401610712565b5050506009909201805460ff1916600117905550505050565b610db582612403565b610dd5576040516330efa98b60e01b815260048101839052602401610712565b5f610ddf83611d23565b5190506002816005811115610df657610df6614f35565b14610e16578060405163170cc93360e21b815260040161071291906150cd565b610815838361242c565b5f80610e2a6126cb565b60030154610e3890846156b9565b9050801580610e4d57506001600160401b0381115b15610e6e5760405163222d164360e21b815260048101849052602401610712565b92915050565b610e8084848484611fc0565b5050505050565b6108158383835f6126ef565b610e9b612911565b5f610ea46126cb565b90505f80610eb184612948565b91509150610ebe82612403565b610eca57505050610f5f565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f01575080610f1f565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f3457610f34614f35565b03610f4357610f438185612cfb565b610f5982610f548560400151611286565b612d25565b50505050505b610f7560015f80516020615d1883398151915255565b50565b5f610f81612911565b610f8d85858585612d5b565b9050610fa560015f80516020615d1883398151915255565b949350505050565b61081584848484612ec0565b5f610fc26126cb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115610ffb57610ffb614f35565b600381111561100c5761100c614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61108282611d23565b905060018351600381111561109957611099614f35565b146110ba578251604051633b0d540d60e21b815261071291906004016156d8565b6004815160058111156110cf576110cf614f35565b036110e5576110dd86612eec565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61110a896122ed565b604001516040518263ffffffff1660e01b815260040161112a9190615207565b606060405180830381865af4158015611145573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116991906156f2565b509150915081841461119657846040015160405163089938b360e11b815260040161071291815260200190565b806001600160401b031683606001516001600160401b031610806111cf5750806001600160401b03168560a001516001600160401b0316115b156111f857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61128f6126cb565b60030154610e6e906001600160401b0384166154e3565b5f6112b082611d23565b6080015192915050565b6105868383835f612ec0565b610e80848484846126ef565b6112da612911565b5f6112e36126cb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561131c5761131c614f35565b600381111561132d5761132d614f35565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113a6576113a6614f35565b146113c7578051604051633b0d540d60e21b815261071291906004016156d8565b60046113d68260400151611d23565b5160058111156113e8576113e8614f35565b146114e7575f6113f7846122ed565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016114369190615207565b606060405180830381865af4158015611451573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147591906156f2565b5091509150818460400151146114a15760405163089938b360e11b815260048101839052602401610712565b806001600160401b03168460c001516001600160401b031611156114e357604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5050505b6114f084612eec565b505061150860015f80516020615d1883398151915255565b5050565b5f6115156126cb565b90506001600160a01b0382166115495760405163caa903f960e01b81526001600160a01b0383166004820152602401610712565b5f8381526006820160205260409020546001600160a01b0316331461158f57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610712565b336001600160a01b038316036115be575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f6115f66126cb565b90505f61160283611d23565b519050600481600581111561161957611619614f35565b14611639578060405163170cc93360e21b815260040161071291906150cd565b5f8381526006830160205260409020546001600160a01b0316331461165e573361156a565b5f838152600683016020526040902054610586906001600160a01b031684612cfb565b61081584848484611f94565b5f611696612911565b6116a18333846130f9565b9050610e6e60015f80516020615d1883398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611702575080546001600160401b03808416911610155b156117205760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561174b848461333e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615cf88339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6117cb866122ed565b604001516040518263ffffffff1660e01b81526004016117eb9190615207565b6040805180830381865af4158015611805573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190615732565b915091508061184f57604051632d07135360e01b81528115156004820152602401610712565b5f8281526006840160205260409020805461186990615095565b90505f0361188d5760405163089938b360e11b815260048101839052602401610712565b60015f83815260078501602052604090205460ff1660058111156118b3576118b3614f35565b146118e6575f8281526007840160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b5f82815260068401602052604081206118fe91614c20565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6119966126cb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156119cf576119cf614f35565b60038111156119e0576119e0614f35565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611a5957611a59614f35565b14158015611a7a5750600381516003811115611a7757611a77614f35565b14155b15611a9b578051604051633b0d540d60e21b815261071291906004016156d8565b5f611aa98260400151611d23565b905080606001516001600160401b03165f03611adb576040516339b894f960e21b815260048101859052602401610712565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b4993906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611b63573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b8a91908101906151d6565b6040518263ffffffff1660e01b8152600401611ba69190615207565b6020604051808303815f875af1158015611bc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e809190615219565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615cf88339815191529190611c2d90615095565b90505f03611c515760405163089938b360e11b815260048101839052602401610712565b60015f83815260078301602052604090205460ff166005811115611c7757611c77614f35565b14611caa575f8281526007820160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611ce39190600401615755565b6020604051808303815f875af1158015611cff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105869190615219565b611d2b614c57565b5f8281525f80516020615d38833981519152602052604090819020815160e0810190925280545f80516020615cf8833981519152929190829060ff166005811115611d7857611d78614f35565b6005811115611d8957611d89614f35565b8152602001600182018054611d9d90615095565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc990615095565b8015611e145780601f10611deb57610100808354040283529160200191611e14565b820191905f5260205f20905b815481529060010190602001808311611df757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ea45760405163caa903f960e01b81526001600160a01b0382166004820152602401610712565b5f611ead6126cb565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611edb573361156a565b336001600160a01b03831603611f0a575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615cf8833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f7c90869086906157df565b90815260200160405180910390205491505092915050565b611fa084848484611fc0565b61081557604051631036cf9160e11b815260048101859052602401610712565b5f80611fca6126cb565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561200357612003614f35565b600381111561201457612014614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61208a82611d23565b90506002835160038111156120a1576120a1614f35565b146120c2578251604051633b0d540d60e21b815261071291906004016156d8565b60208301516001600160a01b0316331461215e575f8281526006850160205260409020546001600160a01b031633146120fb573361156a565b5f82815260068501602052604090205460a082015161212a91600160b01b90046001600160401b0316906157ee565b6001600160401b031642101561215e5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b60028151600581111561217357612173614f35565b036122955760028401546080840151612195916001600160401b0316906157ee565b6001600160401b03164210156121c95760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b87156121db576121d9828861242c565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161221491849161220f919061580e565b613358565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561225784888c61352f565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610fa59350505050565b6004815160058111156122aa576122aa614f35565b036122d1576122ba83878b61352f565b506122c489612eec565b6001945050505050610fa5565b805160405163170cc93360e21b815261071291906004016150cd565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612351573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612378919081019061582e565b915091508061239a57604051636b2f19e960e01b815260040160405180910390fd5b8151156123c0578151604051636ba589a560e01b81526004810191909152602401610712565b60208201516001600160a01b0316156123fc576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5092915050565b5f8061240d6126cb565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612477573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261249e919081019061582e565b91509150806124c057604051636b2f19e960e01b815260040160405180910390fd5b5f6124c96126cb565b60058101548451919250146124f7578251604051636ba589a560e01b81526004810191909152602401610712565b60208301516001600160a01b031615612533576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b60208301516001600160a01b03161561256f576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125ac9190615207565b6040805180830381865af41580156125c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ea91906158be565b915091508188146126115760405163089938b360e11b815260048101899052602401610712565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126a2575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126c0565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806126f96126cb565b90505f61270587613714565b905061271087612403565b61271f57600192505050610fa5565b5f8781526006830160205260409020546001600160a01b03163314612744573361156a565b5f87815260068301602052604090205460a082015161277391600160b01b90046001600160401b0316906157ee565b6001600160401b03168160c001516001600160401b031610156127ba5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610712565b5f86156127d2576127cb888761242c565b90506127f0565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281590611286565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a29190615219565b90508084600a015f8b81526020019081526020015f205f8282546128c691906154ae565b90915550506001600160a01b03861615612903575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615d1883398151915280546001190161294257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612951614c57565b5f80516020615cf88339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612984886122ed565b604001516040518263ffffffff1660e01b81526004016129a49190615207565b6040805180830381865af41580156129be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e29190615732565b915091508015612a0957604051632d07135360e01b81528115156004820152602401610712565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a3a57612a3a614f35565b6005811115612a4b57612a4b614f35565b8152602001600182018054612a5f90615095565b80601f0160208091040260200160405190810160405280929190818152602001828054612a8b90615095565b8015612ad65780601f10612aad57610100808354040283529160200191612ad6565b820191905f5260205f20905b815481529060010190602001808311612ab957829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b4157612b41614f35565b14158015612b625750600181516005811115612b5f57612b5f614f35565b14155b15612b8357805160405163170cc93360e21b815261071291906004016150cd565b600381516005811115612b9857612b98614f35565b03612ba65760048152612bab565b600581525b836008018160200151604051612bc1919061538a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612c0557612c05614f35565b021790555060208201516001820190612c1e90826153df565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612cc457612cc4614f35565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d046126cb565b5f838152600a820160205260408120805491905590915061081584826139f8565b5f80516020615cd883398151915254611508906001600160a01b03168383613a6e565b60015f80516020615d1883398151915255565b5f80612d656126cb565b600281015490915061ffff600160401b90910481169086161080612d8e575061271061ffff8616115b15612db257604051635f12e6c360e11b815261ffff86166004820152602401610712565b60028101546001600160401b039081169085161015612dee576040516202a06d60e11b81526001600160401b0385166004820152602401610712565b8054831080612e005750806001015483115b15612e215760405163222d164360e21b815260048101849052602401610712565b5f612e2b84613acd565b90505f612e3782610e20565b90505f612e448983613af0565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612ecc848484846126ef565b61081557604051635bff683f60e11b815260048101859052602401610712565b5f612ef56126cb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f2e57612f2e614f35565b6003811115612f3f57612f3f614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612fdc7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612feb91906157ee565b6001600160401b031642101561301f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b03168061306f5750602082015161308d565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061309a838886614015565b915091506130b38560200151610f548760600151611286565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131036126cb565b90505f6131126102d185613acd565b90505f61311e87611d23565b905061312987612403565b613149576040516330efa98b60e01b815260048101889052602401610712565b60028151600581111561315e5761315e614f35565b1461317f57805160405163170cc93360e21b815261071291906004016150cd565b5f82826080015161319091906157ee565b905083600201600a9054906101000a90046001600160401b031682604001516131b991906158e1565b6001600160401b0316816001600160401b031611156131f657604051636d51fe0560e11b81526001600160401b0382166004820152602401610712565b5f806132028a84613358565b915091505f8a8360405160200161323092919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b6133466140c2565b61334f8261410d565b61150881614187565b5f8281525f80516020615d38833981519152602052604081206002015481905f80516020615cf883398151915290600160801b90046001600160401b03166133a085826141ef565b5f6133aa87614412565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613453573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261347a91908101906151d6565b6040518263ffffffff1660e01b81526004016134969190615207565b6020604051808303815f875af11580156134b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d69190615219565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806135396126cb565b90505f6135498660400151611d23565b90505f60038251600581111561356157613561614f35565b148061357f575060048251600581111561357d5761357d614f35565b145b1561358f575060c08101516135cc565b6002825160058111156135a4576135a4614f35565b036135b05750426135cc565b815160405163170cc93360e21b815261071291906004016150cd565b86608001516001600160401b0316816001600160401b0316116135f4575f9350505050613337565b600483015460608801515f916001600160a01b031690634f22429f9061361990611286565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561369a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136be9190615219565b5f878152600886016020526040902081905590506001600160a01b038716156126c0575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61371c614c57565b5f8281525f80516020615d388339815191526020526040808220815160e0810190925280545f80516020615cf883398151915293929190829060ff16600581111561376957613769614f35565b600581111561377a5761377a614f35565b815260200160018201805461378e90615095565b80601f01602080910402602001604051908101604052809291908181526020018280546137ba90615095565b80156138055780601f106137dc57610100808354040283529160200191613805565b820191905f5260205f20905b8154815290600101906020018083116137e857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561387357613873614f35565b146138a6575f8481526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff191660018360058111156138ea576138ea614f35565b02179055506020820151600182019061390390826153df565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139a18582613358565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f5f80516020615cd883398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613a53575f80fd5b505af1158015613a65573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b0383811660248301526044820183905261058691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614487565b5f610e6e825f80516020615cd8833981519152546001600160a01b0316906144e8565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b3457604051637fab81e560e01b815260040160405180910390fd5b5f80516020615cf883398151915242613b536060860160408701614e99565b6001600160401b0316111580613b8d5750613b716202a300426154ae565b613b816060860160408701614e99565b6001600160401b031610155b15613bc757613ba26060850160408601614e99565b604051635879da1360e11b81526001600160401b039091166004820152602401610712565b613bdc613bd7606086018661590c565b6144f4565b613bec613bd7608086018661590c565b6030613bfb6020860186615920565b905014613c2d57613c0f6020850185615920565b6040516326475b2f60e11b8152610712925060040190815260200190565b613c378480615920565b90505f03613c6457613c498480615920565b604051633e08a12560e11b8152600401610712929190615962565b5f60088201613c738680615920565b604051613c819291906157df565b90815260200160405180910390205414613cba57613c9f8480615920565b60405163a41f772f60e01b8152600401610712929190615962565b613cc4835f6141ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613d018a80615920565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d49908b018b615920565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613d9260608b0160408c01614e99565b6001600160401b03168152602001613dad60608b018b61590c565b613db690615975565b8152602001613dc860808b018b61590c565b613dd190615975565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613dff9190615aa2565b5f60405180830381865af4158015613e19573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e409190810190615b59565b5f82815260068601602052604090209193509150613e5e82826153df565b508160088401613e6e8880615920565b604051613e7c9291906157df565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613eb8908590600401615207565b6020604051808303815f875af1158015613ed4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef89190615219565b5f8481526007860160205260409020805460ff191660011790559050613f1e8780615920565b5f858152600787016020526040902060010191613f3c919083615b9c565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613f9b8880615920565b604051613fa99291906157df565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fe79190614e99565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140206126cb565b5f868152600882016020526040812080549082905591925090819080156140b4575f8781526006850160205260409020546127109061406a90600160a01b900461ffff16836154e3565b61407491906156b9565b91508184600a015f8981526020019081526020015f205f82825461409891906154ae565b909155506140a890508282615c55565b92506140b489846139f8565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661410b57604051631afcd79f60e31b815260040160405180910390fd5b565b6141156140c2565b61411e8161465d565b614126614676565b610f756060820135608083013561414360c0850160a08601614e99565b61415360e0860160c08701615c68565b614164610100870160e08801615c81565b61010087013561417c61014089016101208a01615230565b886101400135614686565b61418f6140c2565b5f80516020615cd88339815191526001600160a01b0382166141cf57604051637330680360e01b81526001600160a01b0383166004820152602401610712565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615cf88339815191525f6001600160401b0380841690851611156142235761421c838561580e565b9050614230565b61422d848461580e565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061429257506001840154815161428e916001600160401b0316906154ae565b8210155b156142b8576001600160401b0383166060820152818152604081015160208201526142d7565b82816060018181516142ca91906157ee565b6001600160401b03169052505b60608101516142e79060646158e1565b602082015160018601546001600160401b0392909216916143129190600160401b900460ff166154e3565b101561434257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610712565b856001600160401b03168160400181815161435d91906154ae565b9052506040810180516001600160401b038716919061437d908390615c55565b905250600184015460408201516064916143a291600160401b90910460ff16906154e3565b10156143c9578060400151604051635943317f60e01b815260040161071291815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615d388339815191526020526040812060020180545f80516020615cf8833981519152919060089061445c90600160401b90046001600160401b0316615ca1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61449b6001600160a01b0384168361486b565b905080515f141580156144bf5750808060200190518101906144bd9190615cbc565b155b1561058657604051635274afe760e01b81526001600160a01b0384166004820152602401610712565b5f613337833384614878565b6145016020820182614df4565b63ffffffff16158015614521575061451c602082018261524b565b151590505b15614568576145336020820182614df4565b614540602083018361524b565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610712565b614575602082018261524b565b90506145846020830183614df4565b63ffffffff16111561459d576145336020820182614df4565b60015b6145ad602083018361524b565b9050811015611508576145c3602083018361524b565b6145ce600184615c55565b8181106145dd576145dd615290565b90506020020160208101906145f29190615230565b6001600160a01b0316614608602084018461524b565b8381811061461857614618615290565b905060200201602081019061462d9190615230565b6001600160a01b0316101561465557604051630dbc8d5f60e31b815260040160405180910390fd5b6001016145a0565b6146656140c2565b61466d6149db565b610f75816149e3565b61467e6140c2565b61410b614acb565b61468e6140c2565b5f6146976126cb565b905061ffff861615806146af575061271061ffff8716115b156146d357604051635f12e6c360e11b815261ffff87166004820152602401610712565b878911156146f75760405163222d164360e21b8152600481018a9052602401610712565b60ff8516158061470a5750600a60ff8616115b1561472d5760405163170db35960e31b815260ff86166004820152602401610712565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614794576040516202a06d60e11b81526001600160401b0388166004820152602401610712565b835f036147b45760405163a733007160e01b815260040160405180910390fd5b816147d557604051632f6bd1db60e01b815260048101839052602401610712565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061333783835f614ad3565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156148be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148e29190615219565b90506148f96001600160a01b038616853086614b62565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561493d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149619190615219565b90508181116149c75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610712565b6149d18282615c55565b9695505050505050565b61410b6140c2565b6149eb6140c2565b80355f80516020615cf88339815191529081556014614a106060840160408501615c81565b60ff161180614a2f5750614a2a6060830160408401615c81565b60ff16155b15614a6357614a446060830160408401615c81565b604051634a59bbff60e11b815260ff9091166004820152602401610712565b614a736060830160408401615c81565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614aa46040830160208401614e99565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d486140c2565b606081471015614af85760405163cd78605960e01b8152306004820152602401610712565b5f80856001600160a01b03168486604051614b13919061538a565b5f6040518083038185875af1925050503d805f8114614b4d576040519150601f19603f3d011682016040523d82523d5f602084013e614b52565b606091505b50915091506149d1868383614b9b565b6040516001600160a01b0384811660248301528381166044830152606482018390526108159186918216906323b872dd90608401613a9b565b606082614bb057614bab82614bf7565b613337565b8151158015614bc757506001600160a01b0384163b155b15614bf057604051639996b31560e01b81526001600160a01b0385166004820152602401610712565b5080613337565b805115614c075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614c2c90615095565b5f825580601f10614c3b575050565b601f0160209004905f5260205f2090810190610f759190614c94565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614ca8575f8155600101614c95565b5090565b8015158114610f75575f80fd5b803563ffffffff81168114614ccc575f80fd5b919050565b5f805f60608486031215614ce3575f80fd5b833592506020840135614cf581614cac565b9150614d0360408501614cb9565b90509250925092565b5f60208284031215614d1c575f80fd5b5035919050565b5f8060408385031215614d34575f80fd5b82356001600160401b03811115614d49575f80fd5b830160808186031215614d5a575f80fd5b9150614d6860208401614cb9565b90509250929050565b5f8060408385031215614d82575f80fd5b82359150614d6860208401614cb9565b6001600160a01b0381168114610f75575f80fd5b5f805f8060808587031215614db9575f80fd5b843593506020850135614dcb81614cac565b9250614dd960408601614cb9565b91506060850135614de981614d92565b939692955090935050565b5f60208284031215614e04575f80fd5b61333782614cb9565b803561ffff81168114614ccc575f80fd5b6001600160401b0381168114610f75575f80fd5b5f805f8060808587031215614e45575f80fd5b84356001600160401b03811115614e5a575f80fd5b850160a08188031215614e6b575f80fd5b9350614e7960208601614e0d565b92506040850135614e8981614e1e565b9396929550929360600135925050565b5f60208284031215614ea9575f80fd5b813561333781614e1e565b5f8060408385031215614ec5575f80fd5b823591506020830135614ed781614d92565b809150509250929050565b5f8060408385031215614ef3575f80fd5b50508035926020909101359150565b5f80828403610180811215614f15575f80fd5b61016080821215614f24575f80fd5b8493508301359050614ed781614d92565b634e487b7160e01b5f52602160045260245ffd5b60068110614f5957614f59614f35565b9052565b5f5b83811015614f77578181015183820152602001614f5f565b50505f910152565b5f8151808452614f96816020860160208601614f5d565b601f01601f19169290920160200192915050565b60208152614fbc602082018351614f49565b5f602083015160e06040840152614fd7610100840182614f7f565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561503b575f80fd5b82356001600160401b0380821115615051575f80fd5b818501915085601f830112615064575f80fd5b813581811115615072575f80fd5b866020828501011115615083575f80fd5b60209290920196919550909350505050565b600181811c908216806150a957607f821691505b6020821081036150c757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e6e8284614f49565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615111576151116150db565b60405290565b604080519081016001600160401b0381118282101715615111576151116150db565b604051601f8201601f191681016001600160401b0381118282101715615161576151616150db565b604052919050565b5f6001600160401b03821115615181576151816150db565b50601f01601f191660200190565b5f82601f83011261519e575f80fd5b81516151b16151ac82615169565b615139565b8181528460208386010111156151c5575f80fd5b610fa5826020830160208701614f5d565b5f602082840312156151e6575f80fd5b81516001600160401b038111156151fb575f80fd5b610fa58482850161518f565b602081525f6133376020830184614f7f565b5f60208284031215615229575f80fd5b5051919050565b5f60208284031215615240575f80fd5b813561333781614d92565b5f808335601e19843603018112615260575f80fd5b8301803591506001600160401b03821115615279575f80fd5b6020019150600581901b3603821315613528575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126152b8575f80fd5b9190910192915050565b5f82601f8301126152d1575f80fd5b81356152df6151ac82615169565b8181528460208386010111156152f3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561531f575f80fd5b6153276150ef565b82356001600160401b038082111561533d575f80fd5b615349368387016152c2565b8352602085013591508082111561535e575f80fd5b5061536b368286016152c2565b602083015250604083013561537f81614e1e565b604082015292915050565b5f82516152b8818460208701614f5d565b601f82111561058657805f5260205f20601f840160051c810160208510156153c05750805b601f840160051c820191505b81811015610e80575f81556001016153cc565b81516001600160401b038111156153f8576153f86150db565b61540c816154068454615095565b8461539b565b602080601f83116001811461543f575f84156154285750858301515b5f19600386901b1c1916600185901b1785556110dd565b5f85815260208120601f198616915b8281101561546d5788860151825594840194600190910190840161544e565b508582101561548a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e6e57610e6e61549a565b5f63ffffffff8083168181036154d9576154d961549a565b6001019392505050565b8082028115828204841417610e6e57610e6e61549a565b5f808335601e1984360301811261550f575f80fd5b83016020810192503590506001600160401b0381111561552d575f80fd5b803603821315613528575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561561857848303601f19018952813536889003605e1901811261559f575f80fd5b870160606155ad82806154fa565b8287526155bd838801828461553b565b925050506155cd868301836154fa565b868303888801526155df83828461553b565b9250505060408083013592506155f483614e1e565b6001600160401b03929092169490910193909352978301979083019060010161557a565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561564981614d92565b6001600160a01b031660608381019190915283013536849003601e19018112615670575f80fd5b83016020810190356001600160401b0381111561568b575f80fd5b8060051b360382131561569c575f80fd5b6080808501526156b060a085018284615563565b95945050505050565b5f826156d357634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106156ec576156ec614f35565b91905290565b5f805f60608486031215615704575f80fd5b83519250602084015161571681614e1e565b604085015190925061572781614e1e565b809150509250925092565b5f8060408385031215615743575f80fd5b825191506020830151614ed781614cac565b5f60208083525f845461576781615095565b806020870152604060018084165f811461578857600181146157a4576157d1565b60ff19851660408a0152604084151560051b8a010195506157d1565b895f5260205f205f5b858110156157c85781548b82018601529083019088016157ad565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123fc576123fc61549a565b6001600160401b038281168282160390808211156123fc576123fc61549a565b5f806040838503121561583f575f80fd5b82516001600160401b0380821115615855575f80fd5b9084019060608287031215615868575f80fd5b6158706150ef565b82518152602083015161588281614d92565b6020820152604083015182811115615898575f80fd5b6158a48882860161518f565b6040830152508094505050506020830151614ed781614cac565b5f80604083850312156158cf575f80fd5b825191506020830151614ed781614e1e565b6001600160401b038181168382160280821691908281146159045761590461549a565b505092915050565b5f8235603e198336030181126152b8575f80fd5b5f808335601e19843603018112615935575f80fd5b8301803591506001600160401b0382111561594e575f80fd5b602001915036819003821315613528575f80fd5b602081525f610fa560208301848661553b565b5f60408236031215615985575f80fd5b61598d615117565b61599683614cb9565b81526020808401356001600160401b03808211156159b2575f80fd5b9085019036601f8301126159c4575f80fd5b8135818111156159d6576159d66150db565b8060051b91506159e7848301615139565b8181529183018401918481019036841115615a00575f80fd5b938501935b83851015615a2a5784359250615a1a83614d92565b8282529385019390850190615a05565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615a975784516001600160a01b03168252938301936001929092019190830190615a6e565b509695505050505050565b60208152815160208201525f602083015160e06040840152615ac8610100840182614f7f565b90506040840151601f1980858403016060860152615ae68383614f7f565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615b168383615a3c565b925060a08601519150808584030160c086015250615b348282615a3c565b91505060c0840151615b5160e08501826001600160401b03169052565b509392505050565b5f8060408385031215615b6a575f80fd5b8251915060208301516001600160401b03811115615b86575f80fd5b615b928582860161518f565b9150509250929050565b6001600160401b03831115615bb357615bb36150db565b615bc783615bc18354615095565b8361539b565b5f601f841160018114615bf8575f8515615be15750838201355b5f19600387901b1c1916600186901b178355610e80565b5f83815260208120601f198716915b82811015615c275786850135825560209485019460019092019101615c07565b5086821015615c43575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610e6e57610e6e61549a565b5f60208284031215615c78575f80fd5b61333782614e0d565b5f60208284031215615c91575f80fd5b813560ff81168114613337575f80fd5b5f6001600160401b038083168181036154d9576154d961549a565b5f60208284031215615ccc575f80fd5b815161333781614cac56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220800cb3412a237729de0e877c4834301f7b7f14021b2617bb275262ecf618d1ed64736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 1f46d0ddd..aa58a243f 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -104,7 +104,7 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615c3a380380615c3a83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aed8061014d5f395ff3fe608060405260043610610233575f3560e01c80637d8d2f7711610129578063b771b3bc116100a8578063c974d1b61161006d578063c974d1b614610690578063d5f20ff6146106a4578063df93d8de146106d0578063fb8b11dd146106e6578063fd7ac5e714610705575f80fd5b8063b771b3bc14610605578063ba3a4b971461061f578063bc5fbfec1461063e578063bee0a03f1461065e578063c599e24f1461067d575f80fd5b80639ae06447116100ee5780639ae0644714610581578063a3a65e48146105a0578063a9778a7a14610387578063af2f5feb146105bf578063afb98096146105d2575f80fd5b80637d8d2f77146104f157806380dd672f146105105780638280a25a1461052f5780638ef34c981461054357806393e2459814610562575f80fd5b806337b9be8f116101b557806360ad77841161017a57806360ad778414610454578063620658561461047357806366435abf146104a0578063732214f8146104bf57806376f78621146104d2575f80fd5b806337b9be8f146103af5780633a1cfff6146103ce578063467ef06f146103ed5780635dd6a6cb1461040c57806360305d621461042b575f80fd5b806320d91b7a116101fb57806320d91b7a146102e057806325e1c776146102ff5780632e2194d81461031e578063329c3e121461035557806335455ded14610387575f80fd5b80630118acc4146102375780630322ed98146102585780630ba512d114610277578063151d30d1146102965780631ec44724146102c1575b5f80fd5b348015610242575f80fd5b50610256610251366004614abf565b610724565b005b348015610263575f80fd5b50610256610272366004614afa565b610735565b348015610282575f80fd5b50610256610291366004614b11565b6109c5565b3480156102a1575f80fd5b506102aa600a81565b60405160ff90911681526020015b60405180910390f35b3480156102cc575f80fd5b506102566102db366004614abf565b610aa2565b3480156102eb575f80fd5b506102566102fa366004614b28565b610aae565b34801561030a575f80fd5b50610256610319366004614b76565b611033565b348015610329575f80fd5b5061033d610338366004614afa565b6110a7565b6040516001600160401b0390911681526020016102b8565b348015610360575f80fd5b5061036f6001600160991b0181565b6040516001600160a01b0390911681526020016102b8565b348015610392575f80fd5b5061039c61271081565b60405161ffff90911681526020016102b8565b3480156103ba575f80fd5b506102566103c9366004614bab565b6110fb565b3480156103d9575f80fd5b506102566103e8366004614abf565b61110e565b3480156103f8575f80fd5b50610256610407366004614bf9565b61111a565b348015610417575f80fd5b50610256610426366004614bab565b6111ff565b348015610436575f80fd5b5061043f601481565b60405163ffffffff90911681526020016102b8565b34801561045f575f80fd5b5061025661046e366004614b76565b61120b565b34801561047e575f80fd5b5061049261048d366004614c26565b6114d8565b6040519081526020016102b8565b3480156104ab575f80fd5b5061033d6104ba366004614afa565b6114f8565b3480156104ca575f80fd5b506104925f81565b3480156104dd575f80fd5b506102566104ec366004614abf565b61150c565b3480156104fc575f80fd5b5061025661050b366004614bab565b611518565b34801561051b575f80fd5b5061025661052a366004614b76565b611524565b34801561053a575f80fd5b506102aa603081565b34801561054e575f80fd5b5061025661055d366004614c41565b61175e565b34801561056d575f80fd5b5061025661057c366004614afa565b611840565b34801561058c575f80fd5b5061025661059b366004614bab565b6118d4565b3480156105ab575f80fd5b506102566105ba366004614bf9565b6118e0565b6104926105cd366004614c80565b611ad5565b3480156105dd575f80fd5b506104927f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610610575f80fd5b5061036f6005600160991b0181565b34801561062a575f80fd5b50610256610639366004614afa565b611b09565b348015610649575f80fd5b506104925f80516020615a5883398151915281565b348015610669575f80fd5b50610256610678366004614afa565b611d62565b61049261068b366004614afa565b611e9f565b34801561069b575f80fd5b506102aa601481565b3480156106af575f80fd5b506106c36106be366004614afa565b611ed0565b6040516102b89190614d56565b3480156106db575f80fd5b5061033d6202a30081565b3480156106f1575f80fd5b50610256610700366004614c41565b61201f565b348015610710575f80fd5b5061049261071f366004614dd6565b6120e6565b6107308383835f612141565b505050565b5f8181525f80516020615a988339815191526020526040808220815160e0810190925280545f80516020615a5883398151915293929190829060ff16600581111561078257610782614ce1565b600581111561079357610793614ce1565b81526020016001820180546107a790614e41565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390614e41565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561088957610889614ce1565b146108c5575f8381526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e73565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561093c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109639190810190614f7c565b6040518263ffffffff1660e01b815260040161097f9190614fad565b6020604051808303815f875af115801561099b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190614fbf565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a0e575080546001600160401b03808416911610155b15610a2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a568361216d565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6109bf8383835f61217e565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615a588339815191529060ff1615610b0057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190614fbf565b836020013514610b90576040516372b0a7e760e11b8152602084013560048201526024016108bc565b30610ba16060850160408601614fd6565b6001600160a01b031614610be457610bbf6060840160408501614fd6565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016108bc565b5f610bf26060850185614ff1565b905090505f805b828163ffffffff161015610e59575f610c156060880188614ff1565b8363ffffffff16818110610c2b57610c2b615036565b9050602002810190610c3d919061504a565b610c46906150b5565b80516040519192505f916008880191610c5e91615130565b90815260200160405180910390205414610c8e57805160405163a41f772f60e01b81526108bc9190600401614fad565b5f6002885f013584604051602001610cbd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cd791615130565b602060405180830381855afa158015610cf2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d159190614fbf565b90508086600801835f0151604051610d2d9190615130565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610d6d9082615185565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610dec9085615254565b8251604051919550610dfd91615130565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610e5290615267565b9050610bf9565b50600483018190556001830154606490610e7d90600160401b900460ff1683615289565b1015610e9f57604051635943317f60e01b8152600481018290526024016108bc565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610ec3876124b3565b604001516040518263ffffffff1660e01b8152600401610ee39190614fad565b602060405180830381865af4158015610efe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190614fbf565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610f5c91906153cb565b5f60405180830381865af4158015610f76573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f9d9190810190614f7c565b90505f600282604051610fb09190615130565b602060405180830381855afa158015610fcb573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fee9190614fbf565b905082811461101a5760405163baaea89d60e01b815260048101829052602481018490526044016108bc565b5050506009909201805460ff1916600117905550505050565b61103c826125c9565b61105c576040516330efa98b60e01b8152600481018390526024016108bc565b5f61106683611ed0565b519050600281600581111561107d5761107d614ce1565b1461109d578060405163170cc93360e21b81526004016108bc9190614e73565b6109bf83836125f2565b5f806110b1612891565b600301546110bf908461545f565b90508015806110d457506001600160401b0381115b156110f55760405163222d164360e21b8152600481018490526024016108bc565b92915050565b6111078484848461217e565b5050505050565b6109bf8383835f6128b5565b611122612ad7565b5f61112b612891565b90505f8061113884612b0e565b91509150611145826125c9565b611151575050506111e6565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806111885750806111a6565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156111bb576111bb614ce1565b036111ca576111ca8185612ec1565b6111e0826111db85604001516114d8565b612eeb565b50505050505b6111fc60015f80516020615a7883398151915255565b50565b6109bf84848484612f11565b5f611214612891565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561124d5761124d614ce1565b600381111561125e5761125e614ce1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6112d482611ed0565b90506001835160038111156112eb576112eb614ce1565b1461130c578251604051633b0d540d60e21b81526108bc919060040161547e565b60048151600581111561132157611321614ce1565b036113375761132f86612f3d565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61135c896124b3565b604001516040518263ffffffff1660e01b815260040161137c9190614fad565b606060405180830381865af4158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bb9190615498565b50915091508184146113e857846040015160405163089938b360e11b81526004016108bc91815260200190565b806001600160401b031683606001516001600160401b031610806114215750806001600160401b03168560a001516001600160401b0316115b1561144a57604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6114e1612891565b600301546110f5906001600160401b038416615289565b5f61150282611ed0565b6080015192915050565b6107308383835f612f11565b611107848484846128b5565b61152c612ad7565b5f611535612891565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561156e5761156e614ce1565b600381111561157f5761157f614ce1565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156115f8576115f8614ce1565b14611619578051604051633b0d540d60e21b81526108bc919060040161547e565b60046116288260400151611ed0565b51600581111561163a5761163a614ce1565b14611739575f611649846124b3565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116889190614fad565b606060405180830381865af41580156116a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190615498565b5091509150818460400151146116f35760405163089938b360e11b8152600481018390526024016108bc565b806001600160401b03168460c001516001600160401b0316111561173557604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5050505b61174284612f3d565b505061175a60015f80516020615a7883398151915255565b5050565b6001600160a01b0381166117905760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f611799612891565b5f8481526006820160205260409020549091506001600160a01b031633146117e257335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016108bc565b336001600160a01b03831603611811575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611849612891565b90505f61185583611ed0565b519050600481600581111561186c5761186c614ce1565b1461188c578060405163170cc93360e21b81526004016108bc9190614e73565b5f8381526006830160205260409020546001600160a01b031633146118b157336117bd565b5f838152600683016020526040902054610730906001600160a01b031684612ec1565b6109bf84848484612141565b5f80516020615a588339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611913866124b3565b604001516040518263ffffffff1660e01b81526004016119339190614fad565b6040805180830381865af415801561194d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197191906154cd565b915091508061199757604051632d07135360e01b815281151560048201526024016108bc565b5f828152600684016020526040902080546119b190614e41565b90505f036119d55760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078501602052604090205460ff1660058111156119fb576119fb614ce1565b14611a2e575f8281526007840160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e73565b5f8281526006840160205260408120611a4691614a13565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611ade612ad7565b611aea8484843461314a565b9050611b0260015f80516020615a7883398151915255565b9392505050565b5f611b12612891565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b4b57611b4b614ce1565b6003811115611b5c57611b5c614ce1565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611bd557611bd5614ce1565b14158015611bf65750600381516003811115611bf357611bf3614ce1565b14155b15611c17578051604051633b0d540d60e21b81526108bc919060040161547e565b5f611c258260400151611ed0565b905080606001516001600160401b03165f03611c57576040516339b894f960e21b8152600481018590526024016108bc565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611cc593906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611cdf573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d069190810190614f7c565b6040518263ffffffff1660e01b8152600401611d229190614fad565b6020604051808303815f875af1158015611d3e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111079190614fbf565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615a588339815191529190611da990614e41565b90505f03611dcd5760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078301602052604090205460ff166005811115611df357611df3614ce1565b14611e26575f8281526007820160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e73565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611e5f91906004016154f0565b6020604051808303815f875af1158015611e7b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107309190614fbf565b5f611ea8612ad7565b611eb38233346132a4565b9050611ecb60015f80516020615a7883398151915255565b919050565b611ed8614a4a565b5f8281525f80516020615a98833981519152602052604090819020815160e0810190925280545f80516020615a58833981519152929190829060ff166005811115611f2557611f25614ce1565b6005811115611f3657611f36614ce1565b8152602001600182018054611f4a90614e41565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7690614e41565b8015611fc15780601f10611f9857610100808354040283529160200191611fc1565b820191905f5260205f20905b815481529060010190602001808311611fa457829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b0381166120515760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f61205a612891565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461208857336117bd565b336001600160a01b038316036120b7575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615a58833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890612129908690869061557a565b90815260200160405180910390205491505092915050565b61214d8484848461217e565b6109bf57604051631036cf9160e11b8152600481018590526024016108bc565b6121756134e4565b6111fc8161352f565b5f80612188612891565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121c1576121c1614ce1565b60038111156121d2576121d2614ce1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61224882611ed0565b905060028351600381111561225f5761225f614ce1565b14612280578251604051633b0d540d60e21b81526108bc919060040161547e565b60208301516001600160a01b0316331461231c575f8281526006850160205260409020546001600160a01b031633146122b957336117bd565b5f82815260068501602052604090205460a08201516122e891600160b01b90046001600160401b031690615589565b6001600160401b031642101561231c5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b60028151600581111561233157612331614ce1565b036124535760028401546080840151612353916001600160401b031690615589565b6001600160401b03164210156123875760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b87156123995761239782886125f2565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123d29184916123cd91906155a9565b6135a9565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561241584888c613780565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506124ab9350505050565b60048151600581111561246857612468614ce1565b0361248f5761247883878b613780565b5061248289612f3d565b60019450505050506124ab565b805160405163170cc93360e21b81526108bc9190600401614e73565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612517573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261253e91908101906155c9565b915091508061256057604051636b2f19e960e01b815260040160405180910390fd5b815115612586578151604051636ba589a560e01b815260048101919091526024016108bc565b60208201516001600160a01b0316156125c2576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5092915050565b5f806125d3612891565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561263d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261266491908101906155c9565b915091508061268657604051636b2f19e960e01b815260040160405180910390fd5b5f61268f612891565b60058101548451919250146126bd578251604051636ba589a560e01b815260048101919091526024016108bc565b60208301516001600160a01b0316156126f9576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b60208301516001600160a01b031615612735576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016127729190614fad565b6040805180830381865af415801561278c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127b09190615659565b915091508188146127d75760405163089938b360e11b8152600481018990526024016108bc565b5f8881526006840160205260409020600101546001600160401b039081169082161115612868575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612886565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128bf612891565b90505f6128cb87613965565b90506128d6876125c9565b6128e5576001925050506124ab565b5f8781526006830160205260409020546001600160a01b0316331461290a57336117bd565b5f87815260068301602052604090205460a082015161293991600160b01b90046001600160401b031690615589565b6001600160401b03168160c001516001600160401b031610156129805760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016108bc565b5f86156129985761299188876125f2565b90506129b6565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906129db906114d8565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a44573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a689190614fbf565b90508084600a015f8b81526020019081526020015f205f828254612a8c9190615254565b90915550506001600160a01b03861615612ac9575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615a78833981519152805460011901612b0857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b17614a4a565b5f80516020615a588339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b4a886124b3565b604001516040518263ffffffff1660e01b8152600401612b6a9190614fad565b6040805180830381865af4158015612b84573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba891906154cd565b915091508015612bcf57604051632d07135360e01b815281151560048201526024016108bc565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612c0057612c00614ce1565b6005811115612c1157612c11614ce1565b8152602001600182018054612c2590614e41565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5190614e41565b8015612c9c5780601f10612c7357610100808354040283529160200191612c9c565b820191905f5260205f20905b815481529060010190602001808311612c7f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d0757612d07614ce1565b14158015612d285750600181516005811115612d2557612d25614ce1565b14155b15612d4957805160405163170cc93360e21b81526108bc9190600401614e73565b600381516005811115612d5e57612d5e614ce1565b03612d6c5760048152612d71565b600581525b836008018160200151604051612d879190615130565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612dcb57612dcb614ce1565b021790555060208201516001820190612de49082615185565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612e8a57612e8a614ce1565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612eca612891565b5f838152600a82016020526040812080549190559091506109bf8482613c49565b61175a6001600160a01b03831682613ca7565b60015f80516020615a7883398151915255565b612f1d848484846128b5565b6109bf57604051635bff683f60e11b8152600481018590526024016108bc565b5f612f46612891565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f7f57612f7f614ce1565b6003811115612f9057612f90614ce1565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061302d7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161303c9190615589565b6001600160401b03164210156130705760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130c0575060208201516130de565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130eb838886613d3a565b9150915061310485602001516111db87606001516114d8565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f80613154612891565b600281015490915061ffff600160401b9091048116908616108061317d575061271061ffff8616115b156131a157604051635f12e6c360e11b815261ffff861660048201526024016108bc565b60028101546001600160401b0390811690851610156131dd576040516202a06d60e11b81526001600160401b03851660048201526024016108bc565b80548310806131ef5750806001015483115b156132105760405163222d164360e21b8152600481018490526024016108bc565b825f61321b826110a7565b90505f6132288983613de7565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806132ae612891565b90505f6132ba846110a7565b90505f6132c687611ed0565b90506132d1876125c9565b6132f1576040516330efa98b60e01b8152600481018890526024016108bc565b60028151600581111561330657613306614ce1565b1461332757805160405163170cc93360e21b81526108bc9190600401614e73565b5f8282608001516133389190615589565b905083600201600a9054906101000a90046001600160401b03168260400151613361919061567c565b6001600160401b0316816001600160401b0316111561339e57604051636d51fe0560e11b81526001600160401b03821660048201526024016108bc565b5f806133aa8a846135a9565b915091505f8a836040516020016133d892919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661352d57604051631afcd79f60e31b815260040160405180910390fd5b565b6135376134e4565b6135408161430c565b613548614325565b6111fc6060820135608083013561356560c0850160a08601614c26565b61357560e0860160c087016156a7565b613586610100870160e088016156c0565b61010087013561359e61014089016101208a01614fd6565b886101400135614335565b5f8281525f80516020615a98833981519152602052604081206002015481905f80516020615a5883398151915290600160801b90046001600160401b03166135f1858261451a565b5f6135fb8761473d565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156136a4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136cb9190810190614f7c565b6040518263ffffffff1660e01b81526004016136e79190614fad565b6020604051808303815f875af1158015613703573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137279190614fbf565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061378a612891565b90505f61379a8660400151611ed0565b90505f6003825160058111156137b2576137b2614ce1565b14806137d057506004825160058111156137ce576137ce614ce1565b145b156137e0575060c081015161381d565b6002825160058111156137f5576137f5614ce1565b0361380157504261381d565b815160405163170cc93360e21b81526108bc9190600401614e73565b86608001516001600160401b0316816001600160401b031611613845575f9350505050611b02565b600483015460608801515f916001600160a01b031690634f22429f9061386a906114d8565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156138eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390f9190614fbf565b5f878152600886016020526040902081905590506001600160a01b03871615612886575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61396d614a4a565b5f8281525f80516020615a988339815191526020526040808220815160e0810190925280545f80516020615a5883398151915293929190829060ff1660058111156139ba576139ba614ce1565b60058111156139cb576139cb614ce1565b81526020016001820180546139df90614e41565b80601f0160208091040260200160405190810160405280929190818152602001828054613a0b90614e41565b8015613a565780601f10613a2d57610100808354040283529160200191613a56565b820191905f5260205f20905b815481529060010190602001808311613a3957829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613ac457613ac4614ce1565b14613af7575f8481526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e73565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613b3b57613b3b614ce1565b021790555060208201516001820190613b549082615185565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613bf285826135a9565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613c95575f80fd5b505af115801561132f573d5f803e3d5ffd5b80471015613cca5760405163cd78605960e01b81523060048201526024016108bc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d13576040519150601f19603f3d011682016040523d82523d5f602084013e613d18565b606091505b505090508061073057604051630a12f52160e11b815260040160405180910390fd5b5f805f613d45612891565b5f86815260088201602052604081208054908290559192509081908015613dd9575f87815260068501602052604090205461271090613d8f90600160a01b900461ffff1683615289565b613d99919061545f565b91508184600a015f8981526020019081526020015f205f828254613dbd9190615254565b90915550613dcd905082826156e0565b9250613dd98984613c49565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613e2b57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615a5883398151915242613e4a6060860160408701614c26565b6001600160401b0316111580613e845750613e686202a30042615254565b613e786060860160408701614c26565b6001600160401b031610155b15613ebe57613e996060850160408601614c26565b604051635879da1360e11b81526001600160401b0390911660048201526024016108bc565b613ed3613ece60608601866156f3565b6147b2565b613ee3613ece60808601866156f3565b6030613ef26020860186615707565b905014613f2457613f066020850185615707565b6040516326475b2f60e11b81526108bc925060040190815260200190565b613f2e8480615707565b90505f03613f5b57613f408480615707565b604051633e08a12560e11b81526004016108bc929190615749565b5f60088201613f6a8680615707565b604051613f7892919061557a565b90815260200160405180910390205414613fb157613f968480615707565b60405163a41f772f60e01b81526004016108bc929190615749565b613fbb835f61451a565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613ff88a80615707565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190614040908b018b615707565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161408960608b0160408c01614c26565b6001600160401b031681526020016140a460608b018b6156f3565b6140ad9061575c565b81526020016140bf60808b018b6156f3565b6140c89061575c565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016140f69190615889565b5f60405180830381865af4158015614110573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141379190810190615940565b5f828152600686016020526040902091935091506141558282615185565b5081600884016141658880615707565b60405161417392919061557a565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141af908590600401614fad565b6020604051808303815f875af11580156141cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ef9190614fbf565b5f8481526007860160205260409020805460ff1916600117905590506142158780615707565b5f858152600787016020526040902060010191614233919083615983565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806142928880615707565b6040516142a092919061557a565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142de9190614c26565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b6143146134e4565b61431c61491b565b6111fc81614923565b61432d6134e4565b61352d614a0b565b61433d6134e4565b5f614346612891565b905061ffff8616158061435e575061271061ffff8716115b1561438257604051635f12e6c360e11b815261ffff871660048201526024016108bc565b878911156143a65760405163222d164360e21b8152600481018a90526024016108bc565b60ff851615806143b95750600a60ff8616115b156143dc5760405163170db35960e31b815260ff861660048201526024016108bc565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614443576040516202a06d60e11b81526001600160401b03881660048201526024016108bc565b835f036144635760405163a733007160e01b815260040160405180910390fd5b8161448457604051632f6bd1db60e01b8152600481018390526024016108bc565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f80516020615a588339815191525f6001600160401b03808416908516111561454e5761454783856155a9565b905061455b565b61455884846155a9565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806145bd5750600184015481516145b9916001600160401b031690615254565b8210155b156145e3576001600160401b038316606082015281815260408101516020820152614602565b82816060018181516145f59190615589565b6001600160401b03169052505b606081015161461290606461567c565b602082015160018601546001600160401b03929092169161463d9190600160401b900460ff16615289565b101561466d57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016108bc565b856001600160401b0316816040018181516146889190615254565b9052506040810180516001600160401b03871691906146a89083906156e0565b905250600184015460408201516064916146cd91600160401b90910460ff1690615289565b10156146f4578060400151604051635943317f60e01b81526004016108bc91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615a988339815191526020526040812060020180545f80516020615a58833981519152919060089061478790600160401b90046001600160401b0316615a3c565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147bf6020820182614bf9565b63ffffffff161580156147df57506147da6020820182614ff1565b151590505b15614826576147f16020820182614bf9565b6147fe6020830183614ff1565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016108bc565b6148336020820182614ff1565b90506148426020830183614bf9565b63ffffffff16111561485b576147f16020820182614bf9565b60015b61486b6020830183614ff1565b905081101561175a576148816020830183614ff1565b61488c6001846156e0565b81811061489b5761489b615036565b90506020020160208101906148b09190614fd6565b6001600160a01b03166148c66020840184614ff1565b838181106148d6576148d6615036565b90506020020160208101906148eb9190614fd6565b6001600160a01b0316101561491357604051630dbc8d5f60e31b815260040160405180910390fd5b60010161485e565b61352d6134e4565b61492b6134e4565b80355f80516020615a58833981519152908155601461495060608401604085016156c0565b60ff16118061496f575061496a60608301604084016156c0565b60ff16155b156149a35761498460608301604084016156c0565b604051634a59bbff60e11b815260ff90911660048201526024016108bc565b6149b360608301604084016156c0565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149e46040830160208401614c26565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612efe6134e4565b508054614a1f90614e41565b5f825580601f10614a2e575050565b601f0160209004905f5260205f20908101906111fc9190614a87565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614a9b575f8155600101614a88565b5090565b80151581146111fc575f80fd5b803563ffffffff81168114611ecb575f80fd5b5f805f60608486031215614ad1575f80fd5b833592506020840135614ae381614a9f565b9150614af160408501614aac565b90509250925092565b5f60208284031215614b0a575f80fd5b5035919050565b5f6101608284031215614b22575f80fd5b50919050565b5f8060408385031215614b39575f80fd5b82356001600160401b03811115614b4e575f80fd5b830160808186031215614b5f575f80fd5b9150614b6d60208401614aac565b90509250929050565b5f8060408385031215614b87575f80fd5b82359150614b6d60208401614aac565b6001600160a01b03811681146111fc575f80fd5b5f805f8060808587031215614bbe575f80fd5b843593506020850135614bd081614a9f565b9250614bde60408601614aac565b91506060850135614bee81614b97565b939692955090935050565b5f60208284031215614c09575f80fd5b611b0282614aac565b6001600160401b03811681146111fc575f80fd5b5f60208284031215614c36575f80fd5b8135611b0281614c12565b5f8060408385031215614c52575f80fd5b823591506020830135614c6481614b97565b809150509250929050565b803561ffff81168114611ecb575f80fd5b5f805f60608486031215614c92575f80fd5b83356001600160401b03811115614ca7575f80fd5b840160a08187031215614cb8575f80fd5b9250614cc660208501614c6f565b91506040840135614cd681614c12565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60068110614d0557614d05614ce1565b9052565b5f5b83811015614d23578181015183820152602001614d0b565b50505f910152565b5f8151808452614d42816020860160208601614d09565b601f01601f19169290920160200192915050565b60208152614d68602082018351614cf5565b5f602083015160e06040840152614d83610100840182614d2b565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614de7575f80fd5b82356001600160401b0380821115614dfd575f80fd5b818501915085601f830112614e10575f80fd5b813581811115614e1e575f80fd5b866020828501011115614e2f575f80fd5b60209290920196919550909350505050565b600181811c90821680614e5557607f821691505b602082108103614b2257634e487b7160e01b5f52602260045260245ffd5b602081016110f58284614cf5565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614eb757614eb7614e81565b60405290565b604080519081016001600160401b0381118282101715614eb757614eb7614e81565b604051601f8201601f191681016001600160401b0381118282101715614f0757614f07614e81565b604052919050565b5f6001600160401b03821115614f2757614f27614e81565b50601f01601f191660200190565b5f82601f830112614f44575f80fd5b8151614f57614f5282614f0f565b614edf565b818152846020838601011115614f6b575f80fd5b6124ab826020830160208701614d09565b5f60208284031215614f8c575f80fd5b81516001600160401b03811115614fa1575f80fd5b6124ab84828501614f35565b602081525f611b026020830184614d2b565b5f60208284031215614fcf575f80fd5b5051919050565b5f60208284031215614fe6575f80fd5b8135611b0281614b97565b5f808335601e19843603018112615006575f80fd5b8301803591506001600160401b0382111561501f575f80fd5b6020019150600581901b3603821315613779575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261505e575f80fd5b9190910192915050565b5f82601f830112615077575f80fd5b8135615085614f5282614f0f565b818152846020838601011115615099575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156150c5575f80fd5b6150cd614e95565b82356001600160401b03808211156150e3575f80fd5b6150ef36838701615068565b83526020850135915080821115615104575f80fd5b5061511136828601615068565b602083015250604083013561512581614c12565b604082015292915050565b5f825161505e818460208701614d09565b601f82111561073057805f5260205f20601f840160051c810160208510156151665750805b601f840160051c820191505b81811015611107575f8155600101615172565b81516001600160401b0381111561519e5761519e614e81565b6151b2816151ac8454614e41565b84615141565b602080601f8311600181146151e5575f84156151ce5750858301515b5f19600386901b1c1916600185901b17855561132f565b5f85815260208120601f198616915b82811015615213578886015182559484019460019091019084016151f4565b508582101561523057878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808201808211156110f5576110f5615240565b5f63ffffffff80831681810361527f5761527f615240565b6001019392505050565b80820281158282048414176110f5576110f5615240565b5f808335601e198436030181126152b5575f80fd5b83016020810192503590506001600160401b038111156152d3575f80fd5b803603821315613779575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156153be57848303601f19018952813536889003605e19018112615345575f80fd5b8701606061535382806152a0565b82875261536383880182846152e1565b92505050615373868301836152a0565b868303888801526153858382846152e1565b92505050604080830135925061539a83614c12565b6001600160401b039290921694909101939093529783019790830190600101615320565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356153ef81614b97565b6001600160a01b031660608381019190915283013536849003601e19018112615416575f80fd5b83016020810190356001600160401b03811115615431575f80fd5b8060051b3603821315615442575f80fd5b60808085015261545660a085018284615309565b95945050505050565b5f8261547957634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061549257615492614ce1565b91905290565b5f805f606084860312156154aa575f80fd5b8351925060208401516154bc81614c12565b6040850151909250614cd681614c12565b5f80604083850312156154de575f80fd5b825191506020830151614c6481614a9f565b5f60208083525f845461550281614e41565b806020870152604060018084165f8114615523576001811461553f5761556c565b60ff19851660408a0152604084151560051b8a0101955061556c565b895f5260205f205f5b858110156155635781548b8201860152908301908801615548565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156125c2576125c2615240565b6001600160401b038281168282160390808211156125c2576125c2615240565b5f80604083850312156155da575f80fd5b82516001600160401b03808211156155f0575f80fd5b9084019060608287031215615603575f80fd5b61560b614e95565b82518152602083015161561d81614b97565b6020820152604083015182811115615633575f80fd5b61563f88828601614f35565b6040830152508094505050506020830151614c6481614a9f565b5f806040838503121561566a575f80fd5b825191506020830151614c6481614c12565b6001600160401b0381811683821602808216919082811461569f5761569f615240565b505092915050565b5f602082840312156156b7575f80fd5b611b0282614c6f565b5f602082840312156156d0575f80fd5b813560ff81168114611b02575f80fd5b818103818111156110f5576110f5615240565b5f8235603e1983360301811261505e575f80fd5b5f808335601e1984360301811261571c575f80fd5b8301803591506001600160401b03821115615735575f80fd5b602001915036819003821315613779575f80fd5b602081525f6124ab6020830184866152e1565b5f6040823603121561576c575f80fd5b615774614ebd565b61577d83614aac565b81526020808401356001600160401b0380821115615799575f80fd5b9085019036601f8301126157ab575f80fd5b8135818111156157bd576157bd614e81565b8060051b91506157ce848301614edf565b81815291830184019184810190368411156157e7575f80fd5b938501935b83851015615811578435925061580183614b97565b82825293850193908501906157ec565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561587e5784516001600160a01b03168252938301936001929092019190830190615855565b509695505050505050565b60208152815160208201525f602083015160e060408401526158af610100840182614d2b565b90506040840151601f19808584030160608601526158cd8383614d2b565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526158fd8383615823565b925060a08601519150808584030160c08601525061591b8282615823565b91505060c084015161593860e08501826001600160401b03169052565b509392505050565b5f8060408385031215615951575f80fd5b8251915060208301516001600160401b0381111561596d575f80fd5b61597985828601614f35565b9150509250929050565b6001600160401b0383111561599a5761599a614e81565b6159ae836159a88354614e41565b83615141565b5f601f8411600181146159df575f85156159c85750838201355b5f19600387901b1c1916600186901b178355611107565b5f83815260208120601f198716915b82811015615a0e57868501358255602094850194600190920191016159ee565b5086821015615a2a575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b0380831681810361527f5761527f61524056fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220fea5d6dfa72371283856f773bad36bd16bbb6f41f9282f7dc10b4617900619ae64736f6c63430008190033", + Bin: "0x608060405234801561000f575f80fd5b50604051615c39380380615c3983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aec8061014d5f395ff3fe608060405260043610610233575f3560e01c80637d8d2f7711610129578063b771b3bc116100a8578063c974d1b61161006d578063c974d1b614610690578063d5f20ff6146106a4578063df93d8de146106d0578063fb8b11dd146106e6578063fd7ac5e714610705575f80fd5b8063b771b3bc14610605578063ba3a4b971461061f578063bc5fbfec1461063e578063bee0a03f1461065e578063c599e24f1461067d575f80fd5b80639ae06447116100ee5780639ae0644714610581578063a3a65e48146105a0578063a9778a7a14610387578063af2f5feb146105bf578063afb98096146105d2575f80fd5b80637d8d2f77146104f157806380dd672f146105105780638280a25a1461052f5780638ef34c981461054357806393e2459814610562575f80fd5b806337b9be8f116101b557806360ad77841161017a57806360ad778414610454578063620658561461047357806366435abf146104a0578063732214f8146104bf57806376f78621146104d2575f80fd5b806337b9be8f146103af5780633a1cfff6146103ce578063467ef06f146103ed5780635dd6a6cb1461040c57806360305d621461042b575f80fd5b806320d91b7a116101fb57806320d91b7a146102e057806325e1c776146102ff5780632e2194d81461031e578063329c3e121461035557806335455ded14610387575f80fd5b80630118acc4146102375780630322ed98146102585780630ba512d114610277578063151d30d1146102965780631ec44724146102c1575b5f80fd5b348015610242575f80fd5b50610256610251366004614abe565b610724565b005b348015610263575f80fd5b50610256610272366004614af9565b610735565b348015610282575f80fd5b50610256610291366004614b10565b6109c5565b3480156102a1575f80fd5b506102aa600a81565b60405160ff90911681526020015b60405180910390f35b3480156102cc575f80fd5b506102566102db366004614abe565b610aa2565b3480156102eb575f80fd5b506102566102fa366004614b27565b610aae565b34801561030a575f80fd5b50610256610319366004614b75565b611033565b348015610329575f80fd5b5061033d610338366004614af9565b6110a7565b6040516001600160401b0390911681526020016102b8565b348015610360575f80fd5b5061036f6001600160991b0181565b6040516001600160a01b0390911681526020016102b8565b348015610392575f80fd5b5061039c61271081565b60405161ffff90911681526020016102b8565b3480156103ba575f80fd5b506102566103c9366004614baa565b6110fb565b3480156103d9575f80fd5b506102566103e8366004614abe565b61110e565b3480156103f8575f80fd5b50610256610407366004614bf8565b61111a565b348015610417575f80fd5b50610256610426366004614baa565b6111ff565b348015610436575f80fd5b5061043f601481565b60405163ffffffff90911681526020016102b8565b34801561045f575f80fd5b5061025661046e366004614b75565b61120b565b34801561047e575f80fd5b5061049261048d366004614c25565b6114d8565b6040519081526020016102b8565b3480156104ab575f80fd5b5061033d6104ba366004614af9565b6114f8565b3480156104ca575f80fd5b506104925f81565b3480156104dd575f80fd5b506102566104ec366004614abe565b61150c565b3480156104fc575f80fd5b5061025661050b366004614baa565b611518565b34801561051b575f80fd5b5061025661052a366004614b75565b611524565b34801561053a575f80fd5b506102aa603081565b34801561054e575f80fd5b5061025661055d366004614c40565b61175e565b34801561056d575f80fd5b5061025661057c366004614af9565b61183f565b34801561058c575f80fd5b5061025661059b366004614baa565b6118d3565b3480156105ab575f80fd5b506102566105ba366004614bf8565b6118df565b6104926105cd366004614c7f565b611ad4565b3480156105dd575f80fd5b506104927f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610610575f80fd5b5061036f6005600160991b0181565b34801561062a575f80fd5b50610256610639366004614af9565b611b08565b348015610649575f80fd5b506104925f80516020615a5783398151915281565b348015610669575f80fd5b50610256610678366004614af9565b611d61565b61049261068b366004614af9565b611e9e565b34801561069b575f80fd5b506102aa601481565b3480156106af575f80fd5b506106c36106be366004614af9565b611ecf565b6040516102b89190614d55565b3480156106db575f80fd5b5061033d6202a30081565b3480156106f1575f80fd5b50610256610700366004614c40565b61201e565b348015610710575f80fd5b5061049261071f366004614dd5565b6120e5565b6107308383835f612140565b505050565b5f8181525f80516020615a978339815191526020526040808220815160e0810190925280545f80516020615a5783398151915293929190829060ff16600581111561078257610782614ce0565b600581111561079357610793614ce0565b81526020016001820180546107a790614e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390614e40565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561088957610889614ce0565b146108c5575f8381526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561093c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109639190810190614f7b565b6040518263ffffffff1660e01b815260040161097f9190614fac565b6020604051808303815f875af115801561099b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190614fbe565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a0e575080546001600160401b03808416911610155b15610a2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a568361216c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6109bf8383835f61217d565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615a578339815191529060ff1615610b0057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190614fbe565b836020013514610b90576040516372b0a7e760e11b8152602084013560048201526024016108bc565b30610ba16060850160408601614fd5565b6001600160a01b031614610be457610bbf6060840160408501614fd5565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016108bc565b5f610bf26060850185614ff0565b905090505f805b828163ffffffff161015610e59575f610c156060880188614ff0565b8363ffffffff16818110610c2b57610c2b615035565b9050602002810190610c3d9190615049565b610c46906150b4565b80516040519192505f916008880191610c5e9161512f565b90815260200160405180910390205414610c8e57805160405163a41f772f60e01b81526108bc9190600401614fac565b5f6002885f013584604051602001610cbd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cd79161512f565b602060405180830381855afa158015610cf2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d159190614fbe565b90508086600801835f0151604051610d2d919061512f565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610d6d9082615184565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610dec9085615253565b8251604051919550610dfd9161512f565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610e5290615266565b9050610bf9565b50600483018190556001830154606490610e7d90600160401b900460ff1683615288565b1015610e9f57604051635943317f60e01b8152600481018290526024016108bc565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610ec3876124b2565b604001516040518263ffffffff1660e01b8152600401610ee39190614fac565b602060405180830381865af4158015610efe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190614fbe565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610f5c91906153ca565b5f60405180830381865af4158015610f76573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f9d9190810190614f7b565b90505f600282604051610fb0919061512f565b602060405180830381855afa158015610fcb573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fee9190614fbe565b905082811461101a5760405163baaea89d60e01b815260048101829052602481018490526044016108bc565b5050506009909201805460ff1916600117905550505050565b61103c826125c8565b61105c576040516330efa98b60e01b8152600481018390526024016108bc565b5f61106683611ecf565b519050600281600581111561107d5761107d614ce0565b1461109d578060405163170cc93360e21b81526004016108bc9190614e72565b6109bf83836125f1565b5f806110b1612890565b600301546110bf908461545e565b90508015806110d457506001600160401b0381115b156110f55760405163222d164360e21b8152600481018490526024016108bc565b92915050565b6111078484848461217d565b5050505050565b6109bf8383835f6128b4565b611122612ad6565b5f61112b612890565b90505f8061113884612b0d565b91509150611145826125c8565b611151575050506111e6565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806111885750806111a6565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156111bb576111bb614ce0565b036111ca576111ca8185612ec0565b6111e0826111db85604001516114d8565b612eea565b50505050505b6111fc60015f80516020615a7783398151915255565b50565b6109bf84848484612f10565b5f611214612890565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561124d5761124d614ce0565b600381111561125e5761125e614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6112d482611ecf565b90506001835160038111156112eb576112eb614ce0565b1461130c578251604051633b0d540d60e21b81526108bc919060040161547d565b60048151600581111561132157611321614ce0565b036113375761132f86612f3c565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61135c896124b2565b604001516040518263ffffffff1660e01b815260040161137c9190614fac565b606060405180830381865af4158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bb9190615497565b50915091508184146113e857846040015160405163089938b360e11b81526004016108bc91815260200190565b806001600160401b031683606001516001600160401b031610806114215750806001600160401b03168560a001516001600160401b0316115b1561144a57604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6114e1612890565b600301546110f5906001600160401b038416615288565b5f61150282611ecf565b6080015192915050565b6107308383835f612f10565b611107848484846128b4565b61152c612ad6565b5f611535612890565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561156e5761156e614ce0565b600381111561157f5761157f614ce0565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156115f8576115f8614ce0565b14611619578051604051633b0d540d60e21b81526108bc919060040161547d565b60046116288260400151611ecf565b51600581111561163a5761163a614ce0565b14611739575f611649846124b2565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116889190614fac565b606060405180830381865af41580156116a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190615497565b5091509150818460400151146116f35760405163089938b360e11b8152600481018390526024016108bc565b806001600160401b03168460c001516001600160401b0316111561173557604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5050505b61174284612f3c565b505061175a60015f80516020615a7783398151915255565b5050565b5f611767612890565b90506001600160a01b03821661179b5760405163caa903f960e01b81526001600160a01b03831660048201526024016108bc565b5f8381526006820160205260409020546001600160a01b031633146117e157335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016108bc565b336001600160a01b03831603611810575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611848612890565b90505f61185483611ecf565b519050600481600581111561186b5761186b614ce0565b1461188b578060405163170cc93360e21b81526004016108bc9190614e72565b5f8381526006830160205260409020546001600160a01b031633146118b057336117bc565b5f838152600683016020526040902054610730906001600160a01b031684612ec0565b6109bf84848484612140565b5f80516020615a578339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611912866124b2565b604001516040518263ffffffff1660e01b81526004016119329190614fac565b6040805180830381865af415801561194c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197091906154cc565b915091508061199657604051632d07135360e01b815281151560048201526024016108bc565b5f828152600684016020526040902080546119b090614e40565b90505f036119d45760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078501602052604090205460ff1660058111156119fa576119fa614ce0565b14611a2d575f8281526007840160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b5f8281526006840160205260408120611a4591614a12565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611add612ad6565b611ae984848434613149565b9050611b0160015f80516020615a7783398151915255565b9392505050565b5f611b11612890565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b4a57611b4a614ce0565b6003811115611b5b57611b5b614ce0565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611bd457611bd4614ce0565b14158015611bf55750600381516003811115611bf257611bf2614ce0565b14155b15611c16578051604051633b0d540d60e21b81526108bc919060040161547d565b5f611c248260400151611ecf565b905080606001516001600160401b03165f03611c56576040516339b894f960e21b8152600481018590526024016108bc565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611cc493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611cde573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d059190810190614f7b565b6040518263ffffffff1660e01b8152600401611d219190614fac565b6020604051808303815f875af1158015611d3d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111079190614fbe565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615a578339815191529190611da890614e40565b90505f03611dcc5760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078301602052604090205460ff166005811115611df257611df2614ce0565b14611e25575f8281526007820160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611e5e91906004016154ef565b6020604051808303815f875af1158015611e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107309190614fbe565b5f611ea7612ad6565b611eb28233346132a3565b9050611eca60015f80516020615a7783398151915255565b919050565b611ed7614a49565b5f8281525f80516020615a97833981519152602052604090819020815160e0810190925280545f80516020615a57833981519152929190829060ff166005811115611f2457611f24614ce0565b6005811115611f3557611f35614ce0565b8152602001600182018054611f4990614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7590614e40565b8015611fc05780601f10611f9757610100808354040283529160200191611fc0565b820191905f5260205f20905b815481529060010190602001808311611fa357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b0381166120505760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f612059612890565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461208757336117bc565b336001600160a01b038316036120b6575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615a57833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08906121289086908690615579565b90815260200160405180910390205491505092915050565b61214c8484848461217d565b6109bf57604051631036cf9160e11b8152600481018590526024016108bc565b6121746134e3565b6111fc8161352e565b5f80612187612890565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121c0576121c0614ce0565b60038111156121d1576121d1614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61224782611ecf565b905060028351600381111561225e5761225e614ce0565b1461227f578251604051633b0d540d60e21b81526108bc919060040161547d565b60208301516001600160a01b0316331461231b575f8281526006850160205260409020546001600160a01b031633146122b857336117bc565b5f82815260068501602052604090205460a08201516122e791600160b01b90046001600160401b031690615588565b6001600160401b031642101561231b5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b60028151600581111561233057612330614ce0565b036124525760028401546080840151612352916001600160401b031690615588565b6001600160401b03164210156123865760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b87156123985761239682886125f1565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123d19184916123cc91906155a8565b6135a8565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561241484888c61377f565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506124aa9350505050565b60048151600581111561246757612467614ce0565b0361248e5761247783878b61377f565b5061248189612f3c565b60019450505050506124aa565b805160405163170cc93360e21b81526108bc9190600401614e72565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612516573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261253d91908101906155c8565b915091508061255f57604051636b2f19e960e01b815260040160405180910390fd5b815115612585578151604051636ba589a560e01b815260048101919091526024016108bc565b60208201516001600160a01b0316156125c1576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5092915050565b5f806125d2612890565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561263c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261266391908101906155c8565b915091508061268557604051636b2f19e960e01b815260040160405180910390fd5b5f61268e612890565b60058101548451919250146126bc578251604051636ba589a560e01b815260048101919091526024016108bc565b60208301516001600160a01b0316156126f8576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b60208301516001600160a01b031615612734576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016127719190614fac565b6040805180830381865af415801561278b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127af9190615658565b915091508188146127d65760405163089938b360e11b8152600481018990526024016108bc565b5f8881526006840160205260409020600101546001600160401b039081169082161115612867575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612885565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128be612890565b90505f6128ca87613964565b90506128d5876125c8565b6128e4576001925050506124aa565b5f8781526006830160205260409020546001600160a01b0316331461290957336117bc565b5f87815260068301602052604090205460a082015161293891600160b01b90046001600160401b031690615588565b6001600160401b03168160c001516001600160401b0316101561297f5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016108bc565b5f86156129975761299088876125f1565b90506129b5565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906129da906114d8565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a679190614fbe565b90508084600a015f8b81526020019081526020015f205f828254612a8b9190615253565b90915550506001600160a01b03861615612ac8575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615a77833981519152805460011901612b0757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b16614a49565b5f80516020615a578339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b49886124b2565b604001516040518263ffffffff1660e01b8152600401612b699190614fac565b6040805180830381865af4158015612b83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba791906154cc565b915091508015612bce57604051632d07135360e01b815281151560048201526024016108bc565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612bff57612bff614ce0565b6005811115612c1057612c10614ce0565b8152602001600182018054612c2490614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5090614e40565b8015612c9b5780601f10612c7257610100808354040283529160200191612c9b565b820191905f5260205f20905b815481529060010190602001808311612c7e57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d0657612d06614ce0565b14158015612d275750600181516005811115612d2457612d24614ce0565b14155b15612d4857805160405163170cc93360e21b81526108bc9190600401614e72565b600381516005811115612d5d57612d5d614ce0565b03612d6b5760048152612d70565b600581525b836008018160200151604051612d86919061512f565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612dca57612dca614ce0565b021790555060208201516001820190612de39082615184565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612e8957612e89614ce0565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612ec9612890565b5f838152600a82016020526040812080549190559091506109bf8482613c48565b61175a6001600160a01b03831682613ca6565b60015f80516020615a7783398151915255565b612f1c848484846128b4565b6109bf57604051635bff683f60e11b8152600481018590526024016108bc565b5f612f45612890565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f7e57612f7e614ce0565b6003811115612f8f57612f8f614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061302c7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161303b9190615588565b6001600160401b031642101561306f5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130bf575060208201516130dd565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130ea838886613d39565b9150915061310385602001516111db87606001516114d8565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f80613153612890565b600281015490915061ffff600160401b9091048116908616108061317c575061271061ffff8616115b156131a057604051635f12e6c360e11b815261ffff861660048201526024016108bc565b60028101546001600160401b0390811690851610156131dc576040516202a06d60e11b81526001600160401b03851660048201526024016108bc565b80548310806131ee5750806001015483115b1561320f5760405163222d164360e21b8152600481018490526024016108bc565b825f61321a826110a7565b90505f6132278983613de6565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806132ad612890565b90505f6132b9846110a7565b90505f6132c587611ecf565b90506132d0876125c8565b6132f0576040516330efa98b60e01b8152600481018890526024016108bc565b60028151600581111561330557613305614ce0565b1461332657805160405163170cc93360e21b81526108bc9190600401614e72565b5f8282608001516133379190615588565b905083600201600a9054906101000a90046001600160401b03168260400151613360919061567b565b6001600160401b0316816001600160401b0316111561339d57604051636d51fe0560e11b81526001600160401b03821660048201526024016108bc565b5f806133a98a846135a8565b915091505f8a836040516020016133d792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661352c57604051631afcd79f60e31b815260040160405180910390fd5b565b6135366134e3565b61353f8161430b565b613547614324565b6111fc6060820135608083013561356460c0850160a08601614c25565b61357460e0860160c087016156a6565b613585610100870160e088016156bf565b61010087013561359d61014089016101208a01614fd5565b886101400135614334565b5f8281525f80516020615a97833981519152602052604081206002015481905f80516020615a5783398151915290600160801b90046001600160401b03166135f08582614519565b5f6135fa8761473c565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156136a3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136ca9190810190614f7b565b6040518263ffffffff1660e01b81526004016136e69190614fac565b6020604051808303815f875af1158015613702573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137269190614fbe565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f80613789612890565b90505f6137998660400151611ecf565b90505f6003825160058111156137b1576137b1614ce0565b14806137cf57506004825160058111156137cd576137cd614ce0565b145b156137df575060c081015161381c565b6002825160058111156137f4576137f4614ce0565b0361380057504261381c565b815160405163170cc93360e21b81526108bc9190600401614e72565b86608001516001600160401b0316816001600160401b031611613844575f9350505050611b01565b600483015460608801515f916001600160a01b031690634f22429f90613869906114d8565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156138ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390e9190614fbe565b5f878152600886016020526040902081905590506001600160a01b03871615612885575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61396c614a49565b5f8281525f80516020615a978339815191526020526040808220815160e0810190925280545f80516020615a5783398151915293929190829060ff1660058111156139b9576139b9614ce0565b60058111156139ca576139ca614ce0565b81526020016001820180546139de90614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054613a0a90614e40565b8015613a555780601f10613a2c57610100808354040283529160200191613a55565b820191905f5260205f20905b815481529060010190602001808311613a3857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613ac357613ac3614ce0565b14613af6575f8481526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613b3a57613b3a614ce0565b021790555060208201516001820190613b539082615184565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613bf185826135a8565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613c94575f80fd5b505af115801561132f573d5f803e3d5ffd5b80471015613cc95760405163cd78605960e01b81523060048201526024016108bc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d12576040519150601f19603f3d011682016040523d82523d5f602084013e613d17565b606091505b505090508061073057604051630a12f52160e11b815260040160405180910390fd5b5f805f613d44612890565b5f86815260088201602052604081208054908290559192509081908015613dd8575f87815260068501602052604090205461271090613d8e90600160a01b900461ffff1683615288565b613d98919061545e565b91508184600a015f8981526020019081526020015f205f828254613dbc9190615253565b90915550613dcc905082826156df565b9250613dd88984613c48565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613e2a57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615a5783398151915242613e496060860160408701614c25565b6001600160401b0316111580613e835750613e676202a30042615253565b613e776060860160408701614c25565b6001600160401b031610155b15613ebd57613e986060850160408601614c25565b604051635879da1360e11b81526001600160401b0390911660048201526024016108bc565b613ed2613ecd60608601866156f2565b6147b1565b613ee2613ecd60808601866156f2565b6030613ef16020860186615706565b905014613f2357613f056020850185615706565b6040516326475b2f60e11b81526108bc925060040190815260200190565b613f2d8480615706565b90505f03613f5a57613f3f8480615706565b604051633e08a12560e11b81526004016108bc929190615748565b5f60088201613f698680615706565b604051613f77929190615579565b90815260200160405180910390205414613fb057613f958480615706565b60405163a41f772f60e01b81526004016108bc929190615748565b613fba835f614519565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613ff78a80615706565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081019061403f908b018b615706565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161408860608b0160408c01614c25565b6001600160401b031681526020016140a360608b018b6156f2565b6140ac9061575b565b81526020016140be60808b018b6156f2565b6140c79061575b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016140f59190615888565b5f60405180830381865af415801561410f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052614136919081019061593f565b5f828152600686016020526040902091935091506141548282615184565b5081600884016141648880615706565b604051614172929190615579565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141ae908590600401614fac565b6020604051808303815f875af11580156141ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ee9190614fbe565b5f8481526007860160205260409020805460ff1916600117905590506142148780615706565b5f858152600787016020526040902060010191614232919083615982565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806142918880615706565b60405161429f929190615579565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142dd9190614c25565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b6143136134e3565b61431b61491a565b6111fc81614922565b61432c6134e3565b61352c614a0a565b61433c6134e3565b5f614345612890565b905061ffff8616158061435d575061271061ffff8716115b1561438157604051635f12e6c360e11b815261ffff871660048201526024016108bc565b878911156143a55760405163222d164360e21b8152600481018a90526024016108bc565b60ff851615806143b85750600a60ff8616115b156143db5760405163170db35960e31b815260ff861660048201526024016108bc565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614442576040516202a06d60e11b81526001600160401b03881660048201526024016108bc565b835f036144625760405163a733007160e01b815260040160405180910390fd5b8161448357604051632f6bd1db60e01b8152600481018390526024016108bc565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f80516020615a578339815191525f6001600160401b03808416908516111561454d5761454683856155a8565b905061455a565b61455784846155a8565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806145bc5750600184015481516145b8916001600160401b031690615253565b8210155b156145e2576001600160401b038316606082015281815260408101516020820152614601565b82816060018181516145f49190615588565b6001600160401b03169052505b606081015161461190606461567b565b602082015160018601546001600160401b03929092169161463c9190600160401b900460ff16615288565b101561466c57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016108bc565b856001600160401b0316816040018181516146879190615253565b9052506040810180516001600160401b03871691906146a79083906156df565b905250600184015460408201516064916146cc91600160401b90910460ff1690615288565b10156146f3578060400151604051635943317f60e01b81526004016108bc91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615a978339815191526020526040812060020180545f80516020615a57833981519152919060089061478690600160401b90046001600160401b0316615a3b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147be6020820182614bf8565b63ffffffff161580156147de57506147d96020820182614ff0565b151590505b15614825576147f06020820182614bf8565b6147fd6020830183614ff0565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016108bc565b6148326020820182614ff0565b90506148416020830183614bf8565b63ffffffff16111561485a576147f06020820182614bf8565b60015b61486a6020830183614ff0565b905081101561175a576148806020830183614ff0565b61488b6001846156df565b81811061489a5761489a615035565b90506020020160208101906148af9190614fd5565b6001600160a01b03166148c56020840184614ff0565b838181106148d5576148d5615035565b90506020020160208101906148ea9190614fd5565b6001600160a01b0316101561491257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161485d565b61352c6134e3565b61492a6134e3565b80355f80516020615a57833981519152908155601461494f60608401604085016156bf565b60ff16118061496e575061496960608301604084016156bf565b60ff16155b156149a25761498360608301604084016156bf565b604051634a59bbff60e11b815260ff90911660048201526024016108bc565b6149b260608301604084016156bf565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149e36040830160208401614c25565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612efd6134e3565b508054614a1e90614e40565b5f825580601f10614a2d575050565b601f0160209004905f5260205f20908101906111fc9190614a86565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614a9a575f8155600101614a87565b5090565b80151581146111fc575f80fd5b803563ffffffff81168114611eca575f80fd5b5f805f60608486031215614ad0575f80fd5b833592506020840135614ae281614a9e565b9150614af060408501614aab565b90509250925092565b5f60208284031215614b09575f80fd5b5035919050565b5f6101608284031215614b21575f80fd5b50919050565b5f8060408385031215614b38575f80fd5b82356001600160401b03811115614b4d575f80fd5b830160808186031215614b5e575f80fd5b9150614b6c60208401614aab565b90509250929050565b5f8060408385031215614b86575f80fd5b82359150614b6c60208401614aab565b6001600160a01b03811681146111fc575f80fd5b5f805f8060808587031215614bbd575f80fd5b843593506020850135614bcf81614a9e565b9250614bdd60408601614aab565b91506060850135614bed81614b96565b939692955090935050565b5f60208284031215614c08575f80fd5b611b0182614aab565b6001600160401b03811681146111fc575f80fd5b5f60208284031215614c35575f80fd5b8135611b0181614c11565b5f8060408385031215614c51575f80fd5b823591506020830135614c6381614b96565b809150509250929050565b803561ffff81168114611eca575f80fd5b5f805f60608486031215614c91575f80fd5b83356001600160401b03811115614ca6575f80fd5b840160a08187031215614cb7575f80fd5b9250614cc560208501614c6e565b91506040840135614cd581614c11565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60068110614d0457614d04614ce0565b9052565b5f5b83811015614d22578181015183820152602001614d0a565b50505f910152565b5f8151808452614d41816020860160208601614d08565b601f01601f19169290920160200192915050565b60208152614d67602082018351614cf4565b5f602083015160e06040840152614d82610100840182614d2a565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614de6575f80fd5b82356001600160401b0380821115614dfc575f80fd5b818501915085601f830112614e0f575f80fd5b813581811115614e1d575f80fd5b866020828501011115614e2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614e5457607f821691505b602082108103614b2157634e487b7160e01b5f52602260045260245ffd5b602081016110f58284614cf4565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614eb657614eb6614e80565b60405290565b604080519081016001600160401b0381118282101715614eb657614eb6614e80565b604051601f8201601f191681016001600160401b0381118282101715614f0657614f06614e80565b604052919050565b5f6001600160401b03821115614f2657614f26614e80565b50601f01601f191660200190565b5f82601f830112614f43575f80fd5b8151614f56614f5182614f0e565b614ede565b818152846020838601011115614f6a575f80fd5b6124aa826020830160208701614d08565b5f60208284031215614f8b575f80fd5b81516001600160401b03811115614fa0575f80fd5b6124aa84828501614f34565b602081525f611b016020830184614d2a565b5f60208284031215614fce575f80fd5b5051919050565b5f60208284031215614fe5575f80fd5b8135611b0181614b96565b5f808335601e19843603018112615005575f80fd5b8301803591506001600160401b0382111561501e575f80fd5b6020019150600581901b3603821315613778575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261505d575f80fd5b9190910192915050565b5f82601f830112615076575f80fd5b8135615084614f5182614f0e565b818152846020838601011115615098575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156150c4575f80fd5b6150cc614e94565b82356001600160401b03808211156150e2575f80fd5b6150ee36838701615067565b83526020850135915080821115615103575f80fd5b5061511036828601615067565b602083015250604083013561512481614c11565b604082015292915050565b5f825161505d818460208701614d08565b601f82111561073057805f5260205f20601f840160051c810160208510156151655750805b601f840160051c820191505b81811015611107575f8155600101615171565b81516001600160401b0381111561519d5761519d614e80565b6151b1816151ab8454614e40565b84615140565b602080601f8311600181146151e4575f84156151cd5750858301515b5f19600386901b1c1916600185901b17855561132f565b5f85815260208120601f198616915b82811015615212578886015182559484019460019091019084016151f3565b508582101561522f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808201808211156110f5576110f561523f565b5f63ffffffff80831681810361527e5761527e61523f565b6001019392505050565b80820281158282048414176110f5576110f561523f565b5f808335601e198436030181126152b4575f80fd5b83016020810192503590506001600160401b038111156152d2575f80fd5b803603821315613778575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156153bd57848303601f19018952813536889003605e19018112615344575f80fd5b87016060615352828061529f565b82875261536283880182846152e0565b925050506153728683018361529f565b868303888801526153848382846152e0565b92505050604080830135925061539983614c11565b6001600160401b03929092169490910193909352978301979083019060010161531f565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356153ee81614b96565b6001600160a01b031660608381019190915283013536849003601e19018112615415575f80fd5b83016020810190356001600160401b03811115615430575f80fd5b8060051b3603821315615441575f80fd5b60808085015261545560a085018284615308565b95945050505050565b5f8261547857634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061549157615491614ce0565b91905290565b5f805f606084860312156154a9575f80fd5b8351925060208401516154bb81614c11565b6040850151909250614cd581614c11565b5f80604083850312156154dd575f80fd5b825191506020830151614c6381614a9e565b5f60208083525f845461550181614e40565b806020870152604060018084165f8114615522576001811461553e5761556b565b60ff19851660408a0152604084151560051b8a0101955061556b565b895f5260205f205f5b858110156155625781548b8201860152908301908801615547565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156125c1576125c161523f565b6001600160401b038281168282160390808211156125c1576125c161523f565b5f80604083850312156155d9575f80fd5b82516001600160401b03808211156155ef575f80fd5b9084019060608287031215615602575f80fd5b61560a614e94565b82518152602083015161561c81614b96565b6020820152604083015182811115615632575f80fd5b61563e88828601614f34565b6040830152508094505050506020830151614c6381614a9e565b5f8060408385031215615669575f80fd5b825191506020830151614c6381614c11565b6001600160401b0381811683821602808216919082811461569e5761569e61523f565b505092915050565b5f602082840312156156b6575f80fd5b611b0182614c6e565b5f602082840312156156cf575f80fd5b813560ff81168114611b01575f80fd5b818103818111156110f5576110f561523f565b5f8235603e1983360301811261505d575f80fd5b5f808335601e1984360301811261571b575f80fd5b8301803591506001600160401b03821115615734575f80fd5b602001915036819003821315613778575f80fd5b602081525f6124aa6020830184866152e0565b5f6040823603121561576b575f80fd5b615773614ebc565b61577c83614aab565b81526020808401356001600160401b0380821115615798575f80fd5b9085019036601f8301126157aa575f80fd5b8135818111156157bc576157bc614e80565b8060051b91506157cd848301614ede565b81815291830184019184810190368411156157e6575f80fd5b938501935b83851015615810578435925061580083614b96565b82825293850193908501906157eb565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561587d5784516001600160a01b03168252938301936001929092019190830190615854565b509695505050505050565b60208152815160208201525f602083015160e060408401526158ae610100840182614d2a565b90506040840151601f19808584030160608601526158cc8383614d2a565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526158fc8383615822565b925060a08601519150808584030160c08601525061591a8282615822565b91505060c084015161593760e08501826001600160401b03169052565b509392505050565b5f8060408385031215615950575f80fd5b8251915060208301516001600160401b0381111561596c575f80fd5b61597885828601614f34565b9150509250929050565b6001600160401b0383111561599957615999614e80565b6159ad836159a78354614e40565b83615140565b5f601f8411600181146159de575f85156159c75750838201355b5f19600387901b1c1916600186901b178355611107565b5f83815260208120601f198716915b82811015615a0d57868501358255602094850194600190920191016159ed565b5086821015615a29575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b0380831681810361527e5761527e61523f56fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220aea3e80a8c2ef0ad57a183e9049d8a5cf4e875ec07802435f4599519687fcb1e64736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index e8d3cc059..1388ffc86 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -279,12 +279,12 @@ abstract contract PoSValidatorManager is bytes32 validationID, address rewardRecipient ) external { + PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); + if (rewardRecipient == address(0)) { revert InvalidRewardRecipient(rewardRecipient); } - PoSValidatorManagerStorage storage $ = _getPoSValidatorManagerStorage(); - if ($._posValidatorInfo[validationID].owner != _msgSender()) { revert UnauthorizedOwner(_msgSender()); }