{
    "abi": [
        {
            "type": "constructor",
            "inputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "receive",
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "DEFAULT_ADMIN_ROLE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "MINIMUM_CONTRIBUTE_THRESHOLD",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_ADD_NODE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_DISABLE_NODE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_FEE_CLAIMER",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_FEE_EXEMPTION",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_FEE_SETTER",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_PAUSE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_REMOVE_NODE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_UPDATE_WEIGHTS",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "ROLE_UPGRADE",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "UPGRADE_INTERFACE_VERSION",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "string",
                    "internalType": "string"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "addNode",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "allowance",
            "inputs": [
                {
                    "name": "owner",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "spender",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "approve",
            "inputs": [
                {
                    "name": "spender",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "balanceOf",
            "inputs": [
                {
                    "name": "account",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "batchDepositRequests",
            "inputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "assets",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "batchSubmissions",
            "inputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "submissionEpoch",
                    "type": "uint64",
                    "internalType": "uint64"
                },
                {
                    "name": "activationEpoch",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "batchWithdrawRequests",
            "inputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "assets",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "calculateStakeDeltas",
            "inputs": [
                {
                    "name": "newTotalStaked",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "outputs": [
                {
                    "name": "totalExcess",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "totalDeficit",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "nodeExcesses",
                    "type": "uint96[]",
                    "internalType": "uint96[]"
                },
                {
                    "name": "nodeDeficits",
                    "type": "uint96[]",
                    "internalType": "uint96[]"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "cancelUnlockRequest",
            "inputs": [
                {
                    "name": "unlockIndex",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "claimProtocolFees",
            "inputs": [
                {
                    "name": "to",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "compound",
            "inputs": [
                {
                    "name": "nodeIds",
                    "type": "uint64[]",
                    "internalType": "uint64[]"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "contributeToPool",
            "inputs": [
                {
                    "name": "benefactor",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "convertToAssets",
            "inputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "outputs": [
                {
                    "name": "assets",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "convertToShares",
            "inputs": [
                {
                    "name": "assets",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "outputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "currentBatchId",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint40",
                    "internalType": "uint40"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "decimals",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint8",
                    "internalType": "uint8"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "deposit",
            "inputs": [
                {
                    "name": "minShares",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "receiver",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "disableNode",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "getAllUserUnlockRequests",
            "inputs": [
                {
                    "name": "user",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "tuple[]",
                    "internalType": "struct StakedMonad.UnlockRequest[]",
                    "components": [
                        {
                            "name": "shares",
                            "type": "uint96",
                            "internalType": "uint96"
                        },
                        {
                            "name": "spotValue",
                            "type": "uint96",
                            "internalType": "uint96"
                        },
                        {
                            "name": "batchId",
                            "type": "uint40",
                            "internalType": "uint40"
                        },
                        {
                            "name": "exitFeeInBips",
                            "type": "uint16",
                            "internalType": "uint16"
                        }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getDelegator",
            "inputs": [
                {
                    "name": "val_id",
                    "type": "uint64",
                    "internalType": "uint64"
                },
                {
                    "name": "delegator",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "stake",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "acc_reward_per_token",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "rewards",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "delta_stake",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "next_delta_stake",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "delta_epoch",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "next_delta_epoch",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "getExitFeeBips",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint16",
                    "internalType": "uint16"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getManagementFeeBips",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint16",
                    "internalType": "uint16"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getMintableProtocolShares",
            "inputs": [],
            "outputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getNodeIds",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256[]",
                    "internalType": "uint256[]"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getNodes",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "tuple[]",
                    "internalType": "struct Registry.Node[]",
                    "components": [
                        {
                            "name": "id",
                            "type": "uint64",
                            "internalType": "uint64"
                        },
                        {
                            "name": "weight",
                            "type": "uint96",
                            "internalType": "uint96"
                        },
                        {
                            "name": "staked",
                            "type": "uint96",
                            "internalType": "uint96"
                        }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getRoleAdmin",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getWithdrawIds",
            "inputs": [
                {
                    "name": "val_id",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "uint8[]",
                    "internalType": "uint8[]"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "getWithdrawIdsSize",
            "inputs": [
                {
                    "name": "val_id",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "grantRole",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "internalType": "bytes32"
                },
                {
                    "name": "account",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "hasRole",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "internalType": "bytes32"
                },
                {
                    "name": "account",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "initialize",
            "inputs": [
                {
                    "name": "admin",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "isExitFeeExempt",
            "inputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "isForceWithdrawPending",
            "inputs": [
                {
                    "name": "val_id",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "isNodeDisabled",
            "inputs": [
                {
                    "name": "",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "name",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "string",
                    "internalType": "string"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "nodes",
            "inputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "id",
                    "type": "uint64",
                    "internalType": "uint64"
                },
                {
                    "name": "weight",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "staked",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "pause",
            "inputs": [],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "paused",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "proxiableUUID",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "redeem",
            "inputs": [
                {
                    "name": "unlockIndex",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "receiver",
                    "type": "address",
                    "internalType": "address payable"
                }
            ],
            "outputs": [
                {
                    "name": "assets",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "removeNode",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "renounceRole",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "internalType": "bytes32"
                },
                {
                    "name": "callerConfirmation",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "requestUnlock",
            "inputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "minSpotValue",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "outputs": [
                {
                    "name": "spotValue",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "revokeRole",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "internalType": "bytes32"
                },
                {
                    "name": "account",
                    "type": "address",
                    "internalType": "address"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "setExitFee",
            "inputs": [
                {
                    "name": "newFee",
                    "type": "uint16",
                    "internalType": "uint16"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "setExitFeeExemption",
            "inputs": [
                {
                    "name": "user",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "isExempt",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "setManagementFee",
            "inputs": [
                {
                    "name": "newFee",
                    "type": "uint16",
                    "internalType": "uint16"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "submitBatch",
            "inputs": [],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "supportsInterface",
            "inputs": [
                {
                    "name": "interfaceId",
                    "type": "bytes4",
                    "internalType": "bytes4"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "sweep",
            "inputs": [
                {
                    "name": "nodeIds",
                    "type": "uint64[]",
                    "internalType": "uint64[]"
                },
                {
                    "name": "maxWithdrawsPerNode",
                    "type": "uint8",
                    "internalType": "uint8"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "sweepForced",
            "inputs": [
                {
                    "name": "nodeIds",
                    "type": "uint64[]",
                    "internalType": "uint64[]"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "symbol",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "string",
                    "internalType": "string"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "totalPooled",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "totalShares",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint96",
                    "internalType": "uint96"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "totalSupply",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "totalWeight",
            "inputs": [],
            "outputs": [
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "transfer",
            "inputs": [
                {
                    "name": "to",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "transferFrom",
            "inputs": [
                {
                    "name": "from",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "to",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "",
                    "type": "bool",
                    "internalType": "bool"
                }
            ],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "unbondDisableNode",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "unpause",
            "inputs": [],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "updateWeights",
            "inputs": [
                {
                    "name": "weightDeltas",
                    "type": "tuple[]",
                    "internalType": "struct Registry.WeightDelta[]",
                    "components": [
                        {
                            "name": "nodeId",
                            "type": "uint64",
                            "internalType": "uint64"
                        },
                        {
                            "name": "delta",
                            "type": "uint96",
                            "internalType": "uint96"
                        },
                        {
                            "name": "isIncreasing",
                            "type": "bool",
                            "internalType": "bool"
                        }
                    ]
                }
            ],
            "outputs": [],
            "stateMutability": "nonpayable"
        },
        {
            "type": "function",
            "name": "upgradeToAndCall",
            "inputs": [
                {
                    "name": "newImplementation",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "data",
                    "type": "bytes",
                    "internalType": "bytes"
                }
            ],
            "outputs": [],
            "stateMutability": "payable"
        },
        {
            "type": "function",
            "name": "userUnlockRequests",
            "inputs": [
                {
                    "name": "",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ],
            "outputs": [
                {
                    "name": "shares",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "spotValue",
                    "type": "uint96",
                    "internalType": "uint96"
                },
                {
                    "name": "batchId",
                    "type": "uint40",
                    "internalType": "uint40"
                },
                {
                    "name": "exitFeeInBips",
                    "type": "uint16",
                    "internalType": "uint16"
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "function",
            "name": "viewNodeByNodeId",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "internalType": "uint64"
                }
            ],
            "outputs": [
                {
                    "name": "node",
                    "type": "tuple",
                    "internalType": "struct Registry.Node",
                    "components": [
                        {
                            "name": "id",
                            "type": "uint64",
                            "internalType": "uint64"
                        },
                        {
                            "name": "weight",
                            "type": "uint96",
                            "internalType": "uint96"
                        },
                        {
                            "name": "staked",
                            "type": "uint96",
                            "internalType": "uint96"
                        }
                    ]
                }
            ],
            "stateMutability": "view"
        },
        {
            "type": "event",
            "name": "Approval",
            "inputs": [
                {
                    "name": "owner",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "spender",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Contribution",
            "inputs": [
                {
                    "name": "amount",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "benefactor",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "ExitFeeAdjusted",
            "inputs": [
                {
                    "name": "newFee",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "FeesWithdrawn",
            "inputs": [
                {
                    "name": "managementFeeShares",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "exitFeeShares",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Initialized",
            "inputs": [
                {
                    "name": "version",
                    "type": "uint64",
                    "indexed": false,
                    "internalType": "uint64"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "ManagementFeeAdjusted",
            "inputs": [
                {
                    "name": "newFee",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "NodeAdded",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "indexed": false,
                    "internalType": "uint64"
                },
                {
                    "name": "index",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "NodeDisabled",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "indexed": false,
                    "internalType": "uint64"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "NodeRemoved",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "indexed": false,
                    "internalType": "uint64"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "NodeUpdated",
            "inputs": [
                {
                    "name": "nodeId",
                    "type": "uint64",
                    "indexed": true,
                    "internalType": "uint64"
                },
                {
                    "name": "newWeight",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Paused",
            "inputs": [
                {
                    "name": "account",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "RoleAdminChanged",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "indexed": true,
                    "internalType": "bytes32"
                },
                {
                    "name": "previousAdminRole",
                    "type": "bytes32",
                    "indexed": true,
                    "internalType": "bytes32"
                },
                {
                    "name": "newAdminRole",
                    "type": "bytes32",
                    "indexed": true,
                    "internalType": "bytes32"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "RoleGranted",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "indexed": true,
                    "internalType": "bytes32"
                },
                {
                    "name": "account",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "sender",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "RoleRevoked",
            "inputs": [
                {
                    "name": "role",
                    "type": "bytes32",
                    "indexed": true,
                    "internalType": "bytes32"
                },
                {
                    "name": "account",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "sender",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Transfer",
            "inputs": [
                {
                    "name": "from",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "to",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "value",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "UnlockCancelled",
            "inputs": [
                {
                    "name": "staker",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "unlockId",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "UnlockRedeemed",
            "inputs": [
                {
                    "name": "staker",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "unlockId",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "amount",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "UnlockRequested",
            "inputs": [
                {
                    "name": "staker",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                },
                {
                    "name": "unlockId",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "shares",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "spotValue",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                },
                {
                    "name": "toll",
                    "type": "uint256",
                    "indexed": false,
                    "internalType": "uint256"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Unpaused",
            "inputs": [
                {
                    "name": "account",
                    "type": "address",
                    "indexed": false,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "event",
            "name": "Upgraded",
            "inputs": [
                {
                    "name": "implementation",
                    "type": "address",
                    "indexed": true,
                    "internalType": "address"
                }
            ],
            "anonymous": false
        },
        {
            "type": "error",
            "name": "AccessControlBadConfirmation",
            "inputs": []
        },
        {
            "type": "error",
            "name": "AccessControlUnauthorizedAccount",
            "inputs": [
                {
                    "name": "account",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "neededRole",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ]
        },
        {
            "type": "error",
            "name": "ActiveNode",
            "inputs": []
        },
        {
            "type": "error",
            "name": "AddressEmptyCode",
            "inputs": [
                {
                    "name": "target",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "BatchNotSubmitted",
            "inputs": []
        },
        {
            "type": "error",
            "name": "CancellationWindowClosed",
            "inputs": []
        },
        {
            "type": "error",
            "name": "DepositOverflow",
            "inputs": []
        },
        {
            "type": "error",
            "name": "DisabledNode",
            "inputs": []
        },
        {
            "type": "error",
            "name": "DuplicateNode",
            "inputs": []
        },
        {
            "type": "error",
            "name": "ERC1967InvalidImplementation",
            "inputs": [
                {
                    "name": "implementation",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC1967NonPayable",
            "inputs": []
        },
        {
            "type": "error",
            "name": "ERC20InsufficientAllowance",
            "inputs": [
                {
                    "name": "spender",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "allowance",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "needed",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC20InsufficientBalance",
            "inputs": [
                {
                    "name": "sender",
                    "type": "address",
                    "internalType": "address"
                },
                {
                    "name": "balance",
                    "type": "uint256",
                    "internalType": "uint256"
                },
                {
                    "name": "needed",
                    "type": "uint256",
                    "internalType": "uint256"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC20InvalidApprover",
            "inputs": [
                {
                    "name": "approver",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC20InvalidReceiver",
            "inputs": [
                {
                    "name": "receiver",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC20InvalidSender",
            "inputs": [
                {
                    "name": "sender",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "ERC20InvalidSpender",
            "inputs": [
                {
                    "name": "spender",
                    "type": "address",
                    "internalType": "address"
                }
            ]
        },
        {
            "type": "error",
            "name": "EmptyBatch",
            "inputs": []
        },
        {
            "type": "error",
            "name": "EnforcedPause",
            "inputs": []
        },
        {
            "type": "error",
            "name": "ExpectedPause",
            "inputs": []
        },
        {
            "type": "error",
            "name": "FailedCall",
            "inputs": []
        },
        {
            "type": "error",
            "name": "FeeTooLarge",
            "inputs": []
        },
        {
            "type": "error",
            "name": "InsufficientPendingWithdrawals",
            "inputs": []
        },
        {
            "type": "error",
            "name": "InvalidInitialization",
            "inputs": []
        },
        {
            "type": "error",
            "name": "InvalidNode",
            "inputs": []
        },
        {
            "type": "error",
            "name": "MaxPendingWithdrawals",
            "inputs": []
        },
        {
            "type": "error",
            "name": "MinimumBatchDelay",
            "inputs": []
        },
        {
            "type": "error",
            "name": "MinimumContributeThreshold",
            "inputs": []
        },
        {
            "type": "error",
            "name": "MinimumDeposit",
            "inputs": []
        },
        {
            "type": "error",
            "name": "MinimumUnlock",
            "inputs": []
        },
        {
            "type": "error",
            "name": "NoChange",
            "inputs": []
        },
        {
            "type": "error",
            "name": "NotInitializing",
            "inputs": []
        },
        {
            "type": "error",
            "name": "PendingWithdrawals",
            "inputs": []
        },
        {
            "type": "error",
            "name": "PrecompileCallFailed",
            "inputs": []
        },
        {
            "type": "error",
            "name": "TransferFailed",
            "inputs": []
        },
        {
            "type": "error",
            "name": "UUPSUnauthorizedCallContext",
            "inputs": []
        },
        {
            "type": "error",
            "name": "UUPSUnsupportedProxiableUUID",
            "inputs": [
                {
                    "name": "slot",
                    "type": "bytes32",
                    "internalType": "bytes32"
                }
            ]
        },
        {
            "type": "error",
            "name": "WithdrawDelay",
            "inputs": []
        },
        {
            "type": "error",
            "name": "ZeroTotalWeight",
            "inputs": []
        }
    ],
    "bytecode": {
        "object": "0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051616d1e6100f95f395f8181614fc801528181614ff101526151c30152616d1e5ff3fe6080604052600436106104ee575f3560e01c80635c975abb11610285578063a30fefe111610156578063d6531de5116100d1578063e8ce892211610087578063fb9848e41161006d578063fb9848e414611160578063fd012e341461117f578063fde73f7d146111d9575f5ffd5b8063e8ce89221461110e578063f75b040414611141575f5ffd5b8063dd62ed3e116100b7578063dd62ed3e1461106b578063df235fe6146110ce578063e29581aa146110ed575f5ffd5b8063d6531de51461101e578063d8a9fe501461104c575f5ffd5b8063aedf6d5111610126578063c4d66de81161010c578063c4d66de814610fcd578063cf5e274314610fe0578063d547741f14610fff575f5ffd5b8063aedf6d5114610f87578063bf7df8e014610fa6575f5ffd5b8063a30fefe114610ece578063a4b0b5a314610f01578063a9059cbb14610f20578063ad3cb1cc14610f3f575f5ffd5b80637a6d59d51161020057806391d14854116101b657806396c82e571161019c57806396c82e5714610e93578063a0e3cdd614610ea8578063a217fddf14610ebb575f5ffd5b806391d1485414610e1c57806395d89b4114610e7f575f5ffd5b80638456cb59116101e65780638456cb5914610dcc57806386bb1d6e14610de05780638dd09af314610dfd575f5ffd5b80637a6d59d514610d515780637bde82f214610dad575f5ffd5b80636ec21cc811610255578063733897b71161023b578063733897b714610c9257806377654f3414610cb157806378f908e114610cf0575f5ffd5b80636ec21cc814610c2057806370a0823114610c3f575f5ffd5b80635c975abb14610b84578063615bfc4514610bba57806363311d3d14610bce57806369ce6d4714610c01575f5ffd5b80632a7d8acb116103bf57806343abcf321161033a5780634ff0241a116102f0578063540a26f3116102d6578063540a26f314610ad1578063573c1ce014610afd5780635838b2fe14610b51575f5ffd5b80634ff0241a14610a8a57806352d1902d14610abd575f5ffd5b80634a797bd5116103205780634a797bd5146109e95780634beae6e314610a185780634f1ef28614610a77575f5ffd5b806343abcf32146109b657806346115383146109d5575f5ffd5b806336568abe1161038f5780633b5b4765116103755780633b5b4765146109555780633e367afa146109815780633f4ba83a146109a2575f5ffd5b806336568abe146109225780633a98ef3914610941575f5ffd5b80632a7d8acb146108965780632f2ff15d146108c9578063313ce567146108e8578063337b2b6e14610903575f5ffd5b80631610247b1161046957806322fd4ad51161041f578063248a9ca311610405578063248a9ca3146107d357806324f67e18146108205780632584601f1461083f575f5ffd5b806322fd4ad51461078157806323b872dd146107b4575f5ffd5b80631b8e0db61161044f5780631b8e0db6146106d45780631c3477dd146107075780631c53c28014610732575f5ffd5b80631610247b1461068257806318160ddd146106a1575f5ffd5b80630a763da1116104be5780630b52f7b1116104a45780630b52f7b1146106095780630bf14d9b1461063557806315230e8014610663575f5ffd5b80630a763da1146105ae5780630a9f9ee2146105e8575f5ffd5b806301ffc9a7146104f957806306c7dbc41461052d57806306fdde031461056e578063095ea7b31461058f575f5ffd5b366104f557005b5f5ffd5b348015610504575f5ffd5b506105186105133660046161d7565b6111f1565b60405190151581526020015b60405180910390f35b348015610538575f5ffd5b506105607f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d881565b604051908152602001610524565b348015610579575f5ffd5b50610582611289565b6040516105249190616216565b34801561059a575f5ffd5b506105186105a936600461625f565b61135c565b3480156105b9575f5ffd5b506046546105d290600160601b900464ffffffffff1681565b60405164ffffffffff9091168152602001610524565b3480156105f3575f5ffd5b5061060761060236600461636c565b611373565b005b348015610614575f5ffd5b506106286106233660046163c0565b6113d4565b60405161052491906163db565b348015610640575f5ffd5b5061051861064f3660046163c0565b60496020525f908152604090205460ff1681565b34801561066e575f5ffd5b5061060761067d36600461646d565b611482565b34801561068d575f5ffd5b5061060761069c366004616499565b6114d7565b3480156106ac575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610560565b3480156106df575f5ffd5b506105607f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa81565b61071a6107153660046164cb565b611766565b6040516001600160601b039091168152602001610524565b34801561073d575f5ffd5b5061075161074c366004616499565b6118e3565b6040805167ffffffffffffffff90941684526001600160601b039283166020850152911690820152606001610524565b34801561078c575f5ffd5b506105607f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d881565b3480156107bf575f5ffd5b506105186107ce3660046164f5565b611927565b3480156107de575f5ffd5b506105606107ed366004616499565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b34801561082b575f5ffd5b5061071a61083a366004616533565b61194c565b34801561084a575f5ffd5b50610518610859366004616564565b67ffffffffffffffff165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed601602052604090205460ff1690565b3480156108a1575f5ffd5b506105607f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b881565b3480156108d4575f5ffd5b506106076108e336600461657f565b611ccb565b3480156108f3575f5ffd5b5060405160128152602001610524565b34801561090e575f5ffd5b5061060761091d366004616564565b611d0e565b34801561092d575f5ffd5b5061060761093c36600461657f565b611e64565b34801561094c575f5ffd5b5061071a611eb5565b348015610960575f5ffd5b5061097461096f366004616564565b611eef565b60405161052491906165a2565b34801561098c575f5ffd5b50610995611fde565b60405161052491906165dc565b3480156109ad575f5ffd5b50610607611fe9565b3480156109c1575f5ffd5b506106076109d0366004616613565b61201e565b3480156109e0575f5ffd5b506106076120ef565b3480156109f4575f5ffd5b50610a08610a03366004616645565b612596565b60405161052494939291906166a1565b348015610a23575f5ffd5b50610a57610a32366004616499565b604c6020525f90815260409020546001600160601b0380821691600160601b90041682565b604080516001600160601b03938416815292909116602083015201610524565b610607610a853660046166ee565b61263e565b348015610a95575f5ffd5b506105607ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb81565b348015610ac8575f5ffd5b5061056061265d565b348015610adc575f5ffd5b50610af0610aeb366004616564565b61268b565b6040516105249190616795565b348015610b08575f5ffd5b50610b1c610b173660046167d6565b6126f2565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610524565b348015610b5c575f5ffd5b506105607f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b45181565b348015610b8f575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610518565b348015610bc5575f5ffd5b5061071a6127aa565b348015610bd9575f5ffd5b506105607fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c81565b348015610c0c575f5ffd5b50610607610c1b3660046163c0565b612884565b348015610c2b575f5ffd5b5060465461071a906001600160601b031681565b348015610c4a575f5ffd5b50610560610c593660046163c0565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610c9d575f5ffd5b50610607610cac366004616564565b612996565b348015610cbc575f5ffd5b50610a57610ccb366004616499565b604b6020525f90815260409020546001600160601b0380821691600160601b90041682565b348015610cfb575f5ffd5b50610d30610d0a366004616499565b604a6020525f908152604090205467ffffffffffffffff80821691600160401b90041682565b6040805167ffffffffffffffff938416815292909116602083015201610524565b348015610d5c575f5ffd5b50610560610d6b366004616564565b67ffffffffffffffff165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6006020526040902054610100900460ff1690565b348015610db8575f5ffd5b5061071a610dc736600461657f565b612a67565b348015610dd7575f5ffd5b50610607612cae565b348015610deb575f5ffd5b5061056069010f0cf064dd5920000081565b348015610e08575f5ffd5b50610607610e173660046167f2565b612ce0565b348015610e27575f5ffd5b50610518610e3636600461657f565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610e8a575f5ffd5b50610582612dc7565b348015610e9e575f5ffd5b5061056060045481565b610607610eb63660046163c0565b612e18565b348015610ec6575f5ffd5b506105605f81565b348015610ed9575f5ffd5b506105607f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f53881565b348015610f0c575f5ffd5b50610607610f1b366004616813565b612f73565b348015610f2b575f5ffd5b50610518610f3a36600461625f565b613320565b348015610f4a575f5ffd5b506105826040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610f92575f5ffd5b50610607610fa1366004616564565b61332d565b348015610fb1575f5ffd5b5060485461ffff165b60405161ffff9091168152602001610524565b610607610fdb3660046163c0565b6135c9565b348015610feb575f5ffd5b50610607610ffa366004616613565b613a3f565b34801561100a575f5ffd5b5061060761101936600461657f565b613b37565b348015611029575f5ffd5b50610518611038366004616564565b60056020525f908152604090205460ff1681565b348015611057575f5ffd5b50610607611066366004616564565b613b7a565b348015611076575f5ffd5b50610560611085366004616884565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b3480156110d9575f5ffd5b5061071a6110e8366004616645565b613c62565b3480156110f8575f5ffd5b50611101613cb8565b60405161052491906168a0565b348015611119575f5ffd5b506105607fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c81565b34801561114c575f5ffd5b5061060761115b3660046167f2565b613d41565b34801561116b575f5ffd5b5061071a61117a366004616645565b613e18565b34801561118a575f5ffd5b5061119e61119936600461625f565b613e58565b604080516001600160601b03958616815294909316602085015264ffffffffff9091169183019190915261ffff166060820152608001610524565b3480156111e4575f5ffd5b5060475461ffff16610fba565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061128357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916112da90616915565b80601f016020809104026020016040519081016040528092919081815260200182805461130690616915565b80156113515780601f1061132857610100808354040283529160200191611351565b820191905f5260205f20905b81548152906001019060200180831161133457829003601f168201915b505050505091505090565b5f33611369818585613eb0565b5060019392505050565b61137b613ebd565b81515f5b818167ffffffffffffffff1610156113ce576113be848267ffffffffffffffff16815181106113b0576113b0616947565b602002602001015184613f1b565b6113c78161696f565b905061137f565b50505050565b6001600160a01b0381165f908152604d60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015611477575f84815260209081902060408051608081018252918501546001600160601b038082168452600160601b82041683850152600160c01b810464ffffffffff1691830191909152600160e81b900461ffff16606082015282526001909201910161140b565b505050509050919050565b7f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f5386114ac816140e9565b506001600160a01b03919091165f908152604960205260409020805460ff1916911515919091179055565b6114df613ebd565b335f908152604d60205260408120805490919082908490811061150457611504616947565b5f9182526020918290206040805160808101825292909101546001600160601b038082168452600160601b80830490911694840194909452600160c01b810464ffffffffff908116928401839052600160e81b90910461ffff16606084015260465492945092909104909116146115a7576040517fdcb958f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6115c6825f01516001600160601b0316836060015161ffff166140f3565b90505f81835f01516115d8919061699b565b60408085015164ffffffffff165f908152604c6020908152908290208251808401909352546001600160601b03808216808552600160601b909204168383015290860151929350909190829061162f90839061699b565b6001600160601b031690525060208101805183919061164f90839061699b565b6001600160601b0390811690915260408087015164ffffffffff165f908152604c602090815291902084518154928601518416600160601b027fffffffffffffffff00000000000000000000000000000000000000000000000090931690841617919091179055841615905061170857604780548491906002906116e39084906201000090046001600160601b031661699b565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6117128587614124565b6117293033865f01516001600160601b03166142be565b60405186815233907fd1bbb16d648df2dfd0b1b3d88a5bc3f262e0323d3af8fd678115b4f1e7b4b88a9060200160405180910390a2505050505050565b5f61176f613ebd565b6001600160601b033411156117b0576040517f1132981b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b8614352565b6117c134613c62565b9050806001600160601b03165f036117ec5760405163a88ee57760e01b815260040160405180910390fd5b826001600160601b0316816001600160601b03161015611838576040517fc635a9f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61184b82826001600160601b03166144b1565b604680543491905f906118689084906001600160601b03166169ba565b82546101009290920a6001600160601b03818102199093169183160217909155604654600160601b900464ffffffffff165f908152604b60205260408120805434945090926118b9918591166169ba565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555092915050565b600381815481106118f2575f80fd5b5f9182526020909120015467ffffffffffffffff811691506001600160601b03600160401b8204811691600160a01b90041683565b5f336119348582856144fe565b61193f8585856142be565b60019150505b9392505050565b5f611955613ebd565b61195d614352565b335f90815260496020526040812054819060ff166119945760475461ffff1691506119916001600160601b038616836140f3565b90505b5f61199f828761699b565b90506119aa81613e18565b9350836001600160601b03165f036119d55760405163a88ee57760e01b815260040160405180910390fd5b846001600160601b0316846001600160601b03161015611a21576040517f641963a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604654335f908152604d6020908152604080832081516080810183526001600160601b03808d1682528a811682860190815264ffffffffff600160601b98899004811684870181815261ffff808f16606088019081528854600181018a55988c528a8c209751979098018054955192519851909116600160e81b027fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98909416600160c01b02979097167fff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff9186168c027fffffffffffffffff0000000000000000000000000000000000000000000000009095169686169690961793909317929092169390931792909217909255808552604c8452938290208251808401909352548082168084529590041691810191909152909186908290611b659083906169ba565b6001600160601b0316905250602081018051849190611b859083906169ba565b6001600160601b0390811690915264ffffffffff84165f908152604c6020908152604090912084518154928601518416600160601b027fffffffffffffffff000000000000000000000000000000000000000000000000909316908416179190911790558516159050611c3b5760478054859190600290611c169084906201000090046001600160601b03166169ba565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b611c4f33308a6001600160601b03166142be565b335f818152604d60205260409020547fef31107568890496c8f16fec1278e709d23f1444e004e7973a9403880c28d91790611c8c906001906169d9565b604080519182526001600160601b038088166020840152808b1691830191909152871660608201526080015b60405180910390a2505050505092915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611d04816140e9565b6113ce83836145ac565b611d16614678565b611d2a5f67ffffffffffffffff83166146a2565b15155f03611d64576040517f0fa1af0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182525f602080830182815283850183815267ffffffffffffffff8781168087526003805460018101825581885288517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9091018054965195519190941673ffffffffffffffffffffffffffffffffffffffff1990961695909517600160401b6001600160601b0395861602176001600160a01b0316600160a01b949095169390930293909317905554818452600283529285902083905584519081529081018290528351929391927fdd8aaf98a662995c3720dc78ea3773142e7d32c94f523a7d651e932ba0c44f8a929181900390910190a1505050565b6001600160a01b0381163314611ea6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb082826146ad565b505050565b5f611ebe6127aa565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254611eea91906169ba565b905090565b60605f7fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60067ffffffffffffffff8085165f9081526020838152604080832081518083019092525460ff8082168352610100909104169181018290529394509091811115611f5e57611f5e616289565b604051908082528060200260200182016040528015611f87578160200160208202803683370190505b5090505f5b826020015160ff16811015611fd5578251611fa9908260ff614751565b828281518110611fbb57611fbb616947565b60ff90921660209283029190910190910152600101611f8c565b50949350505050565b6060611eea5f61477a565b7ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb612013816140e9565b61201b614786565b50565b612026613ebd565b805147905f5b818167ffffffffffffffff16101561207a5761206a848267ffffffffffffffff168151811061205d5761205d616947565b60200260200101516147f8565b6120738161696f565b905061202c565b505f61208683476169d9565b905080156113ce57604654600160601b900464ffffffffff165f908152604b6020526040812080548392906120c59084906001600160601b03166169ba565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555050505050565b6120f7613ebd565b6120ff614352565b6046546001600160601b03811690600160601b900464ffffffffff165f8061212561495e565b90925090505f604a816121396001876169ec565b64ffffffffff16815260208082019290925260409081015f2081518083019092525467ffffffffffffffff8082168352600160401b9091048116928201839052909250841610156121b6576040517f4851faea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b64ffffffffff84165f818152604b602090815260408083208151808301835290546001600160601b038082168352600160601b91829004811683860152958552604c845293829020825180840190935254808616808452949004851692820192909252815191939092911611156122c657815181515f91612237918a614999565b825184519192505f91839161224b9161699b565b612255919061699b565b90506001600160601b038116156122af5780604b5f6122758b6001616a09565b64ffffffffff16815260208101919091526040015f2080546bffffffffffffffffffffffff19166001600160601b03929092169190911790555b505067ffffffffffffffff841660208401526123db565b815181516001600160601b039182169116111561238757805182515f916122ed918a614bba565b835183519192505f9183916123019161699b565b61230b919061699b565b90506001600160601b038116156122af5780604c5f61232b8b6001616a09565b64ffffffffff16815260208101919091526040015f2080546bffffffffffffffffffffffff19166001600160601b039290921691909117905561236e818a6169ba565b9850505067ffffffffffffffff841660208401526123db565b81516001600160601b03165f036123ca576040517fc2e5347d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff851660208401525b60208101516001600160601b031615612405576124053082602001516001600160601b0316614d91565b80516001600160601b031615612447578051612421908861699b565b604680546bffffffffffffffffffffffff19166001600160601b03929092169190911790555b6040805160608101825260475461ffff811682526001600160601b03620100008204811660208401819052600160701b909204169282019290925290156124fc5780602001518160400181815161249e91906169ba565b6001600160601b039081169091525f60208401528251604780546040860151909316600160701b027fffffffffffff000000000000000000000000000000000000000000000000000090931661ffff90921691909117919091179055505b67ffffffffffffffff808716855264ffffffffff88165f908152604a6020908152604090912086518154928801518416600160401b027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931693169290921717905561256a876001616a09565b6046600c6101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b5f5f60608061262f6003805480602002602001604051908101604052809291908181526020015f905b8282101561261c575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b90910416908201528252600190920191016125bf565b50505050866001600160601b0316614dde565b93509350935093509193509193565b612646614fbd565b61264f8261508d565b61265982826150b7565b5050565b5f6126666151b8565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b604080516060810182525f80825260208201819052918101919091526126b08261521a565b60408051606081018252915467ffffffffffffffff811683526001600160601b03600160401b820481166020850152600160a01b909104169082015292915050565b6040517f573c1ce000000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b03821660248201525f908190819081908190819081906110009063573c1ce09060440160e0604051808303815f875af115801561276e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127929190616a26565b959f949e50929c50909a509850965090945092505050565b6040805160608101825260485461ffff811682526201000081046001600160601b031660208301819052600160701b90910464ffffffffff16928201839052915f906127f690426169d9565b9050801561287f575f612849846001600160601b03166128347f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b61283e9190616a75565b845161ffff166140f3565b6001600160601b031690505f6301e133806128648484616a88565b61286e9190616ab3565b905061287a81866169ba565b945050505b505090565b61288c613ebd565b7f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d86128b6816140e9565b6128be614352565b6048546201000090046001600160601b03168015612909576128e083826144b1565b604880547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1690555b604754600160701b90046001600160601b031680156129565761292d3085836142be565b604780547fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff1690555b60408051838152602081018390527fd9787bf70d3926a4a81c52cba8799d18903ce0132aaa4b7de9e92dc893303a7f91015b60405180910390a150505050565b61299e613ebd565b7f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b4516129c8816140e9565b67ffffffffffffffff82165f9081526005602052604090205460ff16612a015760405163194fdc7f60e31b815260040160405180910390fd5b5f612a0b8361521a565b8054909150600160a01b90046001600160601b03165f819003612a415760405163a88ee57760e01b815260040160405180910390fd5b612a5484826001600160601b0316615299565b505080546001600160a01b031690555050565b5f612a70613ebd565b335f908152604d602052604081208054909190829086908110612a9557612a95616947565b5f91825260208083206040805160808101825293909101546001600160601b038082168552600160601b82041684840152600160c01b810464ffffffffff16848301819052600160e81b90910461ffff1660608501528452604a825280842081518083019092525467ffffffffffffffff808216808452600160401b9092041692820192909252919350909103612b58576040517ffc08f5f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612b61615368565b509050612b6c6153d4565b60ff168260200151612b7e9190616ac6565b67ffffffffffffffff168167ffffffffffffffff161015612bcb576040517fba9bead700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bd58488614124565b826020015194505f866001600160a01b0316866001600160601b03166040515f6040518083038185875af1925050503d805f8114612c2e576040519150601f19603f3d011682016040523d82523d5f602084013e612c33565b606091505b5050905080612c6e576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518981526001600160601b038816602082015233917f53a80b7fa2025e3acb298abd7e222b36ce5d6a1425e7a6e53b451aac0c6e5a219101611cb8565b7ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb612cd8816140e9565b61201b615407565b7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa612d0a816140e9565b60c88261ffff161115612d49576040517ffc5bee1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60485461ffff90811690831603612d735760405163a88ee57760e01b815260040160405180910390fd5b612d7b614352565b6048805461ffff191661ffff84169081179091556040519081527f756367c310578acc96b78fcf4141ddb3cf532982d1342ec193f34a3600b9ae65906020015b60405180910390a15050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916112da90616915565b612e20613ebd565b6001600160601b03341115612e61576040517f1132981b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6046546001600160601b031669010f0cf064dd59200000811015612eb1576040517f500625f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ebb34826169ba565b604680546bffffffffffffffffffffffff19166001600160601b039283161790819055600160601b900464ffffffffff165f908152604b6020526040812080543493919291612f0c918591166169ba565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f04e75fda068b8e114d7658bdff74280a0fd65586b7e026a034eae29dd5a9e68b3483604051612dbb9291909182526001600160a01b0316602082015260400190565b612f7b615462565b600454815f5b8181101561331757848482818110612f9b57612f9b616947565b9050606002016040016020810190612fb39190616ae6565b1561314e575f612fe9868684818110612fce57612fce616947565b612fe49260206060909202019081019150616564565b61521a565b805467ffffffffffffffff165f9081526005602052604090205490915060ff1615613040576040517f1db1d0c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054600160401b90046001600160601b03165f87878581811061306557613065616947565b905060600201602001602081019061307d9190616645565b61308790836169ba565b835473ffffffffffffffffffffffff00000000000000001916600160401b6001600160601b038381169182029290921786559192506130c8908416886169d9565b6130d29190616a75565b95508787858181106130e6576130e6616947565b6130fc9260206060909202019081019150616564565b6040516001600160601b038316815267ffffffffffffffff91909116907fcfaa637aecf1e60e723842980c95e1f0a7ca0a264e46647e4656b98f7293e33b9060200160405180910390a250505061330f565b5f60025f87878581811061316457613164616947565b61317a9260206060909202019081019150616564565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20549050805f036131ab575061330f565b5f60036131b96001846169d9565b815481106131c9576131c9616947565b5f91825260208220018054909250600160401b90046001600160601b0316908181036131f8575050505061330f565b5f89898781811061320b5761320b616947565b90506060020160200160208101906132239190616645565b9050826001600160601b0316816001600160601b0316101561324c57613249818461699b565b91505b83546001600160601b03808416600160401b810273ffffffffffffffffffffffff00000000000000001990931692909217865561328b9085168a6169d9565b6132959190616a75565b97508989878181106132a9576132a9616947565b6132bf9260206060909202019081019150616564565b6040516001600160601b038416815267ffffffffffffffff91909116907fcfaa637aecf1e60e723842980c95e1f0a7ca0a264e46647e4656b98f7293e33b9060200160405180910390a250505050505b600101612f81565b50506004555050565b5f336113698185856142be565b6133368161548c565b67ffffffffffffffff81165f9081526002602052604081205490819003613389576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60036133976001846169d9565b815481106133a7576133a7616947565b5f91825260209182902060408051606081018252929091015467ffffffffffffffff811683526001600160601b03600160401b82048116948401859052600160a01b90910416908201529150156134115760405163194fdc7f60e31b815260040160405180910390fd5b60408101516001600160601b03161561343d5760405163194fdc7f60e31b815260040160405180910390fd5b600380545f9190613450906001906169d9565b8154811061346057613460616947565b5f9182526020808320909101805467ffffffffffffffff1683526002909152604090912084905590508060036134976001866169d9565b815481106134a7576134a7616947565b5f918252602080832084549201805467ffffffffffffffff93841667ffffffffffffffff19821681178355865473ffffffffffffffffffffffffffffffffffffffff1990921617600160401b918290046001600160601b039081169092021780835595546001600160a01b03909616600160a01b96879004909116909502949094179093558616815260029091526040812055600380548061354b5761354b616b01565b5f8281526020812082015f199081018290559091019091556135779067ffffffffffffffff86166155a0565b5067ffffffffffffffff84165f81815260056020908152604091829020805460ff1916905590519182527f8712d9d347359238729023dc8640e38f0d4f8ad25d0e079c2208a885a51a023f9101612988565b5f6135d26155ab565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156135f95750825b90505f8267ffffffffffffffff1660011480156136155750303b155b905081158015613623575080155b1561365a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561368957845468ff00000000000000001916600160401b1785555b6136916155d3565b6136996155d3565b61370d6040518060400160405280601381526020017f4b696e747375205374616b6564204d6f6e6164000000000000000000000000008152506040518060400160405280600481526020017f734d4f4e000000000000000000000000000000000000000000000000000000008152506155db565b6137156155d3565b61371d6155d3565b6137275f876145ac565b506137527f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d8876145ac565b5061377d7fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c876145ac565b506137a87fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c876145ac565b506137d37f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b451876145ac565b506137fe7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa876145ac565b506138297f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa806155ed565b6138537f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d8876145ac565b5061387e7f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d8806155ed565b6138a87f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f538876145ac565b506138d37f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f538806155ed565b6138fd7f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8876145ac565b506139287f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8806155ed565b6139527ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb876145ac565b50604680547fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff16600160601b1790556040805160608101825260c88082525f60208301524264ffffffffff169190920181905260488054600160701b9092027fffffffffffffffffffffffffff000000000000000000000000000000000000009092169190911790911790556047805461ffff191660051790558315613a3757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b613a47613ebd565b805147905f5b818167ffffffffffffffff161015613a9b57613a8b848267ffffffffffffffff1681518110613a7e57613a7e616947565b602002602001015161568e565b613a948161696f565b9050613a4d565b505f613aa783476169d9565b9050805f03613ac95760405163a88ee57760e01b815260040160405180910390fd5b604680548291905f90613ae69084906001600160601b03166169ba565b82546101009290920a6001600160601b03818102199093169183160217909155604654600160601b900464ffffffffff165f908152604b60205260408120805485945090926120c5918591166169ba565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154613b70816140e9565b6113ce83836146ad565b613b82615733565b67ffffffffffffffff81165f9081526005602052604090205460ff1615613bbc5760405163a88ee57760e01b815260040160405180910390fd5b5f613bc68261521a565b805460048054929350600160401b9091046001600160601b0316915f90613bee9084906169d9565b9091555050805473ffffffffffffffffffffffff00000000000000001916815567ffffffffffffffff82165f81815260056020908152604091829020805460ff1916600117905590519182527fa46b2e9bd92f27216c46d5a9772c39431f3f381285ee1dacb1f1034fe603b10b9101612dbb565b6046545f906001600160601b0316808203613c7f57829150613cb2565b80613c88611eb5565b6001600160601b0316846001600160601b0316613ca59190616a88565b613caf9190616ab3565b91505b50919050565b60606003805480602002602001604051908101604052809291908181526020015f905b82821015613d38575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b9091041690820152825260019092019101613cdb565b50505050905090565b7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa613d6b816140e9565b60328261ffff161115613daa576040517ffc5bee1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60475461ffff90811690831603613dd45760405163a88ee57760e01b815260040160405180910390fd5b6047805461ffff191661ffff84169081179091556040519081527f0531f91c02fe1dc8b306233f5edba5c1b65a79a064d26a40b6082bc9d887ecba90602001612dbb565b5f5f613e22611eb5565b6001600160601b03169050805f03613e3c57829150613cb2565b6046548190613ca5906001600160601b03908116908616616a88565b604d602052815f5260405f208181548110613e71575f80fd5b5f918252602090912001546001600160601b038082169350600160601b8204169150600160c01b810464ffffffffff1690600160e81b900461ffff1684565b611eb0838383600161575d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615613f19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60067ffffffffffffffff84165f9081526020828152604080832081518083019092525460ff8082168352610100909104811692820183905293945092851610613f89578160200151613f8b565b835b90508060ff165f03613f9e575050505050565b5f5b8160ff16811015614076575f613fbb845f01518360ff614751565b6040517faed2ee7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8916600482015260ff821660248201529091505f906110009063aed2ee73906044016020604051808303815f875af1158015614028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061404c9190616b15565b90508061406c57604051633f48ffd960e21b815260040160405180910390fd5b5050600101613fa0565b508151614085908260ff614751565b60ff16825260208201805182919061409e908390616b30565b60ff90811690915267ffffffffffffffff9096165f90815260209485526040902083518154959094015187166101000261ffff19909516939096169290921792909217909355505050565b61201b8133615886565b5f612710614102600182616b49565b61ffff166141108486616a88565b61411a9190616a75565b6119459190616ab3565b81545f90614134906001906169d9565b90508082146142715782818154811061414f5761414f616947565b905f5260205f200183838154811061416957614169616947565b5f91825260209091208254910180546bffffffffffffffffffffffff1981166001600160601b0393841690811783558454600160601b908190049094169093027fffffffffffffffff00000000000000000000000000000000000000000000000090911690921791909117808255825464ffffffffff600160c01b9182900416027fffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff821681178355925461ffff600160e81b9182900416027fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093167fff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff909116179190911790555b8280548061428157614281616b01565b5f8281526020902081015f1990810180547fff00000000000000000000000000000000000000000000000000000000000000169055019055505050565b6001600160a01b038316614305576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6001600160a01b038216614347576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b611eb0838383615912565b6040805160608101825260485461ffff811682526201000081046001600160601b03166020830152600160701b900464ffffffffff16918101829052905f9061439b90426169d9565b90508015612659575f6143dd83602001516001600160601b03166128347f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b6001600160601b031690505f6301e133806143f88484616a88565b6144029190616ab3565b90508084602001516001600160601b031661441d9190616a75565b6001600160601b0316602085018190524264ffffffffff166040860181905294516048805461ffff9092167fffffffffffffffffffffffffffffffffffff00000000000000000000000000009092169190911762010000909202919091177fffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff16600160701b90950294909417909355505050565b6001600160a01b0382166144f3576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6126595f8383615912565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f198110156113ce578181101561459e576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016142fc565b6113ce84848484035f61575d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661466f575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556146253390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611283565b5f915050611283565b7f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d861201b816140e9565b5f6119458383615a77565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561466f575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611283565b5f8160ff168360ff168560ff166147689190616a75565b6147729190616b63565b949350505050565b60605f61194583615ac3565b61478e615b1c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b67ffffffffffffffff81165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60160205260409020547fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6009060ff1661488b576040517f78297a8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517faed2ee7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8316600482015260ff60248201525f906110009063aed2ee73906044016020604051808303815f875af11580156148f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149179190616b15565b90508061493757604051633f48ffd960e21b815260040160405180910390fd5b5067ffffffffffffffff9091165f908152600190910160205260409020805460ff19169055565b5f5f5f5f61496a615368565b915091508193508061498657614981846001616ac6565b614991565b614991846002616ac6565b925050509091565b6004545f908082036149d7576040517f098404de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6003805480602002602001604051908101604052809291908181526020015f905b82821015614a56575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b90910416908201528252600190920191016149f9565b5050505090505f5f614a7c838888614a6e919061699b565b6001600160601b0316614dde565b9350509250505f8789614a8f919061699b565b6001600160601b031690505f845190505f5b81811015614bac575f856001600160601b0316858381518110614ac657614ac6616947565b60200260200101516001600160601b031685614ae29190616a88565b614aec9190616ab3565b90506001600160601b03811615614ba35780878381518110614b1057614b10616947565b602002602001015160400151614b2691906169ba565b60038381548110614b3957614b39616947565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b03160217905550614b96878381518110614b7c57614b7c616947565b60200260200101515f0151826001600160601b0316615b77565b614ba0818a6169ba565b98505b50600101614aa1565b505050505050509392505050565b5f5f6003805480602002602001604051908101604052809291908181526020015f905b82821015614c3a575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b9091041690820152825260019092019101614bdd565b5050505090505f5f614c52838887614a6e919061699b565b5092505091505f8688614c65919061699b565b6001600160601b031690505f845190505f5b81811015614d84575f856001600160601b0316858381518110614c9c57614c9c616947565b60200260200101516001600160601b031685614cb89190616a88565b614cc29190616ab3565b90506001600160601b03811615614d7b5780878381518110614ce657614ce6616947565b602002602001015160400151614cfc919061699b565b60038381548110614d0f57614d0f616947565b5f91825260209091200180546001600160601b0392909216600160a01b026001600160a01b03909216919091179055614d4881896169ba565b9750614d79878381518110614d5f57614d5f616947565b60200260200101515f0151826001600160601b0316615c1f565b505b50600101614c77565b5050505050509392505050565b6001600160a01b038216614dd3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b612659825f83615912565b60045482515f91829160609182918067ffffffffffffffff811115614e0557614e05616289565b604051908082528060200260200182016040528015614e2e578160200160208202803683370190505b5093508067ffffffffffffffff811115614e4a57614e4a616289565b604051908082528060200260200182016040528015614e73578160200160208202803683370190505b5092505f5b81811015614fb1575f898281518110614e9357614e93616947565b6020026020010151604001516001600160601b031690505f5f8511614eb8575f614ef5565b848b8481518110614ecb57614ecb616947565b6020026020010151602001516001600160601b03168b614eeb9190616a88565b614ef59190616ab3565b905080821115614f51575f614f0a82846169d9565b9050614f16818b6169ba565b995080888581518110614f2b57614f2b616947565b60200260200101906001600160601b031690816001600160601b03168152505050614fa7565b81811115614fa7575f614f6483836169d9565b9050614f70818a6169ba565b985080878581518110614f8557614f85616947565b60200260200101906001600160601b031690816001600160601b031681525050505b5050600101614e78565b50505092959194509250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061505657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661504a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15613f19576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8612659816140e9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015615111575060408051601f3d908101601f1916820190925261510e91810190616b76565b60015b615152576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016142fc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146151ae576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016142fc565b611eb08383615d3d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613f19576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff81165f9081526002602052604081205480820361526c576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60036152796001836169d9565b8154811061528957615289616947565b905f5260205f2001915050919050565b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60160205260408120547fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6009060ff161561532d576040517f500389a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff915061533c848484615d92565b67ffffffffffffffff9093165f908152600193840160205260409020805460ff19169093179092555090565b5f5f6110006001600160a01b031663757991a86040518163ffffffff1660e01b815260040160408051808303815f875af11580156153a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906153cc9190616b8d565b915091509091565b5f46608f036153e35750600190565b4661279f036153f25750600190565b466175bf036154015750600190565b50600190565b61540f613ebd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336147da565b7fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c61201b816140e9565b7f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b4516154b6816140e9565b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6006020526040812054610100900460ff16111561552e576040517f4d078c7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed601602052604090205460ff1615612659576040517f4d078c7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6119458383615e47565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611283565b613f19615f21565b6155e3615f21565b6126598282615f5f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f615646845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b6040517fa76e2ca500000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201525f906110009063a76e2ca5906024016020604051808303815f875af11580156156ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906157139190616b15565b90508061265957604051633f48ffd960e21b815260040160405180910390fd5b7fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c61201b816140e9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0385166157c0576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6001600160a01b038416615802576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561587f57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161587691815260200190565b60405180910390a35b5050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16612659576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016142fc565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661595f5781816002015f8282546159549190616a75565b909155506159e89050565b6001600160a01b0384165f90815260208290526040902054828110156159ca576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016142fc565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316615a06576002810180548390039055615a24565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051615a6991815260200190565b60405180910390a350505050565b5f818152600183016020526040812054615abc57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611283565b505f611283565b6060815f01805480602002602001604051908101604052809291908181526020018280548015615b1057602002820191905f5260205f20905b815481526020019060010190808311615afc575b50505050509050919050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16613f19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f84994fec00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201525f90611000906384994fec90849060240160206040518083038185885af1158015615bda573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190615bff9190616b15565b905080611eb057604051633f48ffd960e21b815260040160405180910390fd5b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed600602081815260408084208151808301909252805460ff808216845261010090910416928201839052917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0101615cd0576040517f500389a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b615ce3815f0151826020015160ff614751565b935080602001516001615cf69190616bba565b825460ff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116178255615d34868686615d92565b50505092915050565b615d4682615fc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115615d8a57611eb0828261605e565b6126596160d0565b6040517f5cf4151400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024810183905260ff821660448201525f9061100090635cf41514906064016020604051808303815f875af1158015615e03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615e279190616b15565b9050806113ce57604051633f48ffd960e21b815260040160405180910390fd5b5f818152600183016020526040812054801561466f575f615e696001836169d9565b85549091505f90615e7c906001906169d9565b9050808214615edb575f865f018281548110615e9a57615e9a616947565b905f5260205f200154905080875f018481548110615eba57615eba616947565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080615eec57615eec616b01565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611283565b615f29616108565b613f19576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b615f67615f21565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03615fb38482616c17565b50600481016113ce8382616c17565b806001600160a01b03163b5f03616010576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016142fc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161607a9190616cd2565b5f60405180830381855af49150503d805f81146160b2576040519150601f19603f3d011682016040523d82523d5f602084013e6160b7565b606091505b50915091506160c7858383616121565b95945050505050565b3415613f19576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6161116155ab565b54600160401b900460ff16919050565b6060826161365761613182616196565b611945565b815115801561614d57506001600160a01b0384163b155b1561618f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016142fc565b5080611945565b8051156161a557805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f602082840312156161e7575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611945575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461201b575f5ffd5b5f5f60408385031215616270575f5ffd5b823561627b8161624b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156162c6576162c6616289565b604052919050565b67ffffffffffffffff8116811461201b575f5ffd5b5f82601f8301126162f2575f5ffd5b813567ffffffffffffffff81111561630c5761630c616289565b8060051b61631c6020820161629d565b91825260208185018101929081019086841115616337575f5ffd5b6020860192505b83831015616362578235616351816162ce565b82526020928301929091019061633e565b9695505050505050565b5f5f6040838503121561637d575f5ffd5b823567ffffffffffffffff811115616393575f5ffd5b61639f858286016162e3565b925050602083013560ff811681146163b5575f5ffd5b809150509250929050565b5f602082840312156163d0575f5ffd5b81356119458161624b565b602080825282518282018190525f918401906040840190835b818110156164555783516001600160601b0381511684526001600160601b03602082015116602085015264ffffffffff604082015116604085015261ffff6060820151166060850152506080830192506020840193506001810190506163f4565b509095945050505050565b801515811461201b575f5ffd5b5f5f6040838503121561647e575f5ffd5b82356164898161624b565b915060208301356163b581616460565b5f602082840312156164a9575f5ffd5b5035919050565b80356001600160601b03811681146164c6575f5ffd5b919050565b5f5f604083850312156164dc575f5ffd5b6164e5836164b0565b915060208301356163b58161624b565b5f5f5f60608486031215616507575f5ffd5b83356165128161624b565b925060208401356165228161624b565b929592945050506040919091013590565b5f5f60408385031215616544575f5ffd5b61654d836164b0565b915061655b602084016164b0565b90509250929050565b5f60208284031215616574575f5ffd5b8135611945816162ce565b5f5f60408385031215616590575f5ffd5b8235915060208301356163b58161624b565b602080825282518282018190525f918401906040840190835b8181101561645557835160ff168352602093840193909201916001016165bb565b602080825282518282018190525f918401906040840190835b818110156164555783518352602093840193909201916001016165f5565b5f60208284031215616623575f5ffd5b813567ffffffffffffffff811115616639575f5ffd5b614772848285016162e3565b5f60208284031215616655575f5ffd5b611945826164b0565b5f8151808452602084019350602083015f5b828110156166975781516001600160601b0316865260209586019590910190600101616670565b5093949350505050565b6001600160601b03851681526001600160601b0384166020820152608060408201525f6166d1608083018561665e565b82810360608401526166e3818561665e565b979650505050505050565b5f5f604083850312156166ff575f5ffd5b823561670a8161624b565b9150602083013567ffffffffffffffff811115616725575f5ffd5b8301601f81018513616735575f5ffd5b803567ffffffffffffffff81111561674f5761674f616289565b6167626020601f19601f8401160161629d565b818152866020838501011115616776575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b60608101611283828467ffffffffffffffff81511682526001600160601b0360208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156167e7575f5ffd5b82356164e5816162ce565b5f60208284031215616802575f5ffd5b813561ffff81168114611945575f5ffd5b5f5f60208385031215616824575f5ffd5b823567ffffffffffffffff81111561683a575f5ffd5b8301601f8101851361684a575f5ffd5b803567ffffffffffffffff811115616860575f5ffd5b856020606083028401011115616874575f5ffd5b6020919091019590945092505050565b5f5f60408385031215616895575f5ffd5b82356164e58161624b565b602080825282518282018190525f918401906040840190835b81811015616455576168ff83855167ffffffffffffffff81511682526001600160601b0360208201511660208301526001600160601b0360408201511660408301525050565b60209390930192606092909201916001016168b9565b600181811c9082168061692957607f821691505b602082108103613cb257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f67ffffffffffffffff821667ffffffffffffffff81036169925761699261695b565b60010192915050565b6001600160601b0382811682821603908111156112835761128361695b565b6001600160601b0381811683821601908111156112835761128361695b565b818103818111156112835761128361695b565b64ffffffffff82811682821603908111156112835761128361695b565b64ffffffffff81811683821601908111156112835761128361695b565b5f5f5f5f5f5f5f60e0888a031215616a3c575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b808201808211156112835761128361695b565b80820281158282048414176112835761128361695b565b634e487b7160e01b5f52601260045260245ffd5b5f82616ac157616ac1616a9f565b500490565b67ffffffffffffffff81811683821601908111156112835761128361695b565b5f60208284031215616af6575f5ffd5b813561194581616460565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215616b25575f5ffd5b815161194581616460565b60ff82811682821603908111156112835761128361695b565b61ffff82811682821603908111156112835761128361695b565b5f82616b7157616b71616a9f565b500690565b5f60208284031215616b86575f5ffd5b5051919050565b5f5f60408385031215616b9e575f5ffd5b8251616ba9816162ce565b60208401519092506163b581616460565b60ff81811683821601908111156112835761128361695b565b601f821115611eb057805f5260205f20601f840160051c81016020851015616bf85750805b601f840160051c820191505b8181101561587f575f8155600101616c04565b815167ffffffffffffffff811115616c3157616c31616289565b616c4581616c3f8454616915565b84616bd3565b6020601f821160018114616c77575f8315616c605750848201515b5f19600385901b1c1916600184901b17845561587f565b5f84815260208120601f198516915b82811015616ca65787850151825560209485019460019092019101616c86565b5084821015616cc357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f92019182525091905056fea2646970667358221220dd077e4d557bb135eaf8ca467f61cce23be8e96af577cc7a810e99a63aadd08964736f6c634300081e0033",
        "sourceMap": "901:32297:52:-:0;;;1171:4:23;1128:48;;4704:67:52;;;;;;;;;-1:-1:-1;4728:36:52;:34;:36::i;:::-;901:32297;;7709:422:22;3147:66;7898:15;;;;;;;7894:76;;;7936:23;;-1:-1:-1;;;7936:23:22;;;;;;;;;;;7894:76;7983:14;;-1:-1:-1;;;;;7983:14:22;;;:34;7979:146;;8033:33;;-1:-1:-1;;;;;;8033:33:22;-1:-1:-1;;;;;8033:33:22;;;;;8085:29;;158:50:57;;;8085:29:22;;146:2:57;131:18;8085:29:22;;;;;;;7979:146;7758:373;7709:422::o;14:200:57:-;901:32297:52;;;;;;;;;;;;;;;;;;;;;;",
        "linkReferences": {}
    },
    "deployedBytecode": {
        "object": "0x6080604052600436106104ee575f3560e01c80635c975abb11610285578063a30fefe111610156578063d6531de5116100d1578063e8ce892211610087578063fb9848e41161006d578063fb9848e414611160578063fd012e341461117f578063fde73f7d146111d9575f5ffd5b8063e8ce89221461110e578063f75b040414611141575f5ffd5b8063dd62ed3e116100b7578063dd62ed3e1461106b578063df235fe6146110ce578063e29581aa146110ed575f5ffd5b8063d6531de51461101e578063d8a9fe501461104c575f5ffd5b8063aedf6d5111610126578063c4d66de81161010c578063c4d66de814610fcd578063cf5e274314610fe0578063d547741f14610fff575f5ffd5b8063aedf6d5114610f87578063bf7df8e014610fa6575f5ffd5b8063a30fefe114610ece578063a4b0b5a314610f01578063a9059cbb14610f20578063ad3cb1cc14610f3f575f5ffd5b80637a6d59d51161020057806391d14854116101b657806396c82e571161019c57806396c82e5714610e93578063a0e3cdd614610ea8578063a217fddf14610ebb575f5ffd5b806391d1485414610e1c57806395d89b4114610e7f575f5ffd5b80638456cb59116101e65780638456cb5914610dcc57806386bb1d6e14610de05780638dd09af314610dfd575f5ffd5b80637a6d59d514610d515780637bde82f214610dad575f5ffd5b80636ec21cc811610255578063733897b71161023b578063733897b714610c9257806377654f3414610cb157806378f908e114610cf0575f5ffd5b80636ec21cc814610c2057806370a0823114610c3f575f5ffd5b80635c975abb14610b84578063615bfc4514610bba57806363311d3d14610bce57806369ce6d4714610c01575f5ffd5b80632a7d8acb116103bf57806343abcf321161033a5780634ff0241a116102f0578063540a26f3116102d6578063540a26f314610ad1578063573c1ce014610afd5780635838b2fe14610b51575f5ffd5b80634ff0241a14610a8a57806352d1902d14610abd575f5ffd5b80634a797bd5116103205780634a797bd5146109e95780634beae6e314610a185780634f1ef28614610a77575f5ffd5b806343abcf32146109b657806346115383146109d5575f5ffd5b806336568abe1161038f5780633b5b4765116103755780633b5b4765146109555780633e367afa146109815780633f4ba83a146109a2575f5ffd5b806336568abe146109225780633a98ef3914610941575f5ffd5b80632a7d8acb146108965780632f2ff15d146108c9578063313ce567146108e8578063337b2b6e14610903575f5ffd5b80631610247b1161046957806322fd4ad51161041f578063248a9ca311610405578063248a9ca3146107d357806324f67e18146108205780632584601f1461083f575f5ffd5b806322fd4ad51461078157806323b872dd146107b4575f5ffd5b80631b8e0db61161044f5780631b8e0db6146106d45780631c3477dd146107075780631c53c28014610732575f5ffd5b80631610247b1461068257806318160ddd146106a1575f5ffd5b80630a763da1116104be5780630b52f7b1116104a45780630b52f7b1146106095780630bf14d9b1461063557806315230e8014610663575f5ffd5b80630a763da1146105ae5780630a9f9ee2146105e8575f5ffd5b806301ffc9a7146104f957806306c7dbc41461052d57806306fdde031461056e578063095ea7b31461058f575f5ffd5b366104f557005b5f5ffd5b348015610504575f5ffd5b506105186105133660046161d7565b6111f1565b60405190151581526020015b60405180910390f35b348015610538575f5ffd5b506105607f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d881565b604051908152602001610524565b348015610579575f5ffd5b50610582611289565b6040516105249190616216565b34801561059a575f5ffd5b506105186105a936600461625f565b61135c565b3480156105b9575f5ffd5b506046546105d290600160601b900464ffffffffff1681565b60405164ffffffffff9091168152602001610524565b3480156105f3575f5ffd5b5061060761060236600461636c565b611373565b005b348015610614575f5ffd5b506106286106233660046163c0565b6113d4565b60405161052491906163db565b348015610640575f5ffd5b5061051861064f3660046163c0565b60496020525f908152604090205460ff1681565b34801561066e575f5ffd5b5061060761067d36600461646d565b611482565b34801561068d575f5ffd5b5061060761069c366004616499565b6114d7565b3480156106ac575f5ffd5b507f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254610560565b3480156106df575f5ffd5b506105607f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa81565b61071a6107153660046164cb565b611766565b6040516001600160601b039091168152602001610524565b34801561073d575f5ffd5b5061075161074c366004616499565b6118e3565b6040805167ffffffffffffffff90941684526001600160601b039283166020850152911690820152606001610524565b34801561078c575f5ffd5b506105607f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d881565b3480156107bf575f5ffd5b506105186107ce3660046164f5565b611927565b3480156107de575f5ffd5b506105606107ed366004616499565b5f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b34801561082b575f5ffd5b5061071a61083a366004616533565b61194c565b34801561084a575f5ffd5b50610518610859366004616564565b67ffffffffffffffff165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed601602052604090205460ff1690565b3480156108a1575f5ffd5b506105607f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b881565b3480156108d4575f5ffd5b506106076108e336600461657f565b611ccb565b3480156108f3575f5ffd5b5060405160128152602001610524565b34801561090e575f5ffd5b5061060761091d366004616564565b611d0e565b34801561092d575f5ffd5b5061060761093c36600461657f565b611e64565b34801561094c575f5ffd5b5061071a611eb5565b348015610960575f5ffd5b5061097461096f366004616564565b611eef565b60405161052491906165a2565b34801561098c575f5ffd5b50610995611fde565b60405161052491906165dc565b3480156109ad575f5ffd5b50610607611fe9565b3480156109c1575f5ffd5b506106076109d0366004616613565b61201e565b3480156109e0575f5ffd5b506106076120ef565b3480156109f4575f5ffd5b50610a08610a03366004616645565b612596565b60405161052494939291906166a1565b348015610a23575f5ffd5b50610a57610a32366004616499565b604c6020525f90815260409020546001600160601b0380821691600160601b90041682565b604080516001600160601b03938416815292909116602083015201610524565b610607610a853660046166ee565b61263e565b348015610a95575f5ffd5b506105607ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb81565b348015610ac8575f5ffd5b5061056061265d565b348015610adc575f5ffd5b50610af0610aeb366004616564565b61268b565b6040516105249190616795565b348015610b08575f5ffd5b50610b1c610b173660046167d6565b6126f2565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e001610524565b348015610b5c575f5ffd5b506105607f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b45181565b348015610b8f575f5ffd5b507fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16610518565b348015610bc5575f5ffd5b5061071a6127aa565b348015610bd9575f5ffd5b506105607fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c81565b348015610c0c575f5ffd5b50610607610c1b3660046163c0565b612884565b348015610c2b575f5ffd5b5060465461071a906001600160601b031681565b348015610c4a575f5ffd5b50610560610c593660046163c0565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00602052604090205490565b348015610c9d575f5ffd5b50610607610cac366004616564565b612996565b348015610cbc575f5ffd5b50610a57610ccb366004616499565b604b6020525f90815260409020546001600160601b0380821691600160601b90041682565b348015610cfb575f5ffd5b50610d30610d0a366004616499565b604a6020525f908152604090205467ffffffffffffffff80821691600160401b90041682565b6040805167ffffffffffffffff938416815292909116602083015201610524565b348015610d5c575f5ffd5b50610560610d6b366004616564565b67ffffffffffffffff165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6006020526040902054610100900460ff1690565b348015610db8575f5ffd5b5061071a610dc736600461657f565b612a67565b348015610dd7575f5ffd5b50610607612cae565b348015610deb575f5ffd5b5061056069010f0cf064dd5920000081565b348015610e08575f5ffd5b50610607610e173660046167f2565b612ce0565b348015610e27575f5ffd5b50610518610e3636600461657f565b5f9182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610e8a575f5ffd5b50610582612dc7565b348015610e9e575f5ffd5b5061056060045481565b610607610eb63660046163c0565b612e18565b348015610ec6575f5ffd5b506105605f81565b348015610ed9575f5ffd5b506105607f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f53881565b348015610f0c575f5ffd5b50610607610f1b366004616813565b612f73565b348015610f2b575f5ffd5b50610518610f3a36600461625f565b613320565b348015610f4a575f5ffd5b506105826040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b348015610f92575f5ffd5b50610607610fa1366004616564565b61332d565b348015610fb1575f5ffd5b5060485461ffff165b60405161ffff9091168152602001610524565b610607610fdb3660046163c0565b6135c9565b348015610feb575f5ffd5b50610607610ffa366004616613565b613a3f565b34801561100a575f5ffd5b5061060761101936600461657f565b613b37565b348015611029575f5ffd5b50610518611038366004616564565b60056020525f908152604090205460ff1681565b348015611057575f5ffd5b50610607611066366004616564565b613b7a565b348015611076575f5ffd5b50610560611085366004616884565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b3480156110d9575f5ffd5b5061071a6110e8366004616645565b613c62565b3480156110f8575f5ffd5b50611101613cb8565b60405161052491906168a0565b348015611119575f5ffd5b506105607fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c81565b34801561114c575f5ffd5b5061060761115b3660046167f2565b613d41565b34801561116b575f5ffd5b5061071a61117a366004616645565b613e18565b34801561118a575f5ffd5b5061119e61119936600461625f565b613e58565b604080516001600160601b03958616815294909316602085015264ffffffffff9091169183019190915261ffff166060820152608001610524565b3480156111e4575f5ffd5b5060475461ffff16610fba565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061128357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916112da90616915565b80601f016020809104026020016040519081016040528092919081815260200182805461130690616915565b80156113515780601f1061132857610100808354040283529160200191611351565b820191905f5260205f20905b81548152906001019060200180831161133457829003601f168201915b505050505091505090565b5f33611369818585613eb0565b5060019392505050565b61137b613ebd565b81515f5b818167ffffffffffffffff1610156113ce576113be848267ffffffffffffffff16815181106113b0576113b0616947565b602002602001015184613f1b565b6113c78161696f565b905061137f565b50505050565b6001600160a01b0381165f908152604d60209081526040808320805482518185028101850190935280835260609492939192909184015b82821015611477575f84815260209081902060408051608081018252918501546001600160601b038082168452600160601b82041683850152600160c01b810464ffffffffff1691830191909152600160e81b900461ffff16606082015282526001909201910161140b565b505050509050919050565b7f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f5386114ac816140e9565b506001600160a01b03919091165f908152604960205260409020805460ff1916911515919091179055565b6114df613ebd565b335f908152604d60205260408120805490919082908490811061150457611504616947565b5f9182526020918290206040805160808101825292909101546001600160601b038082168452600160601b80830490911694840194909452600160c01b810464ffffffffff908116928401839052600160e81b90910461ffff16606084015260465492945092909104909116146115a7576040517fdcb958f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6115c6825f01516001600160601b0316836060015161ffff166140f3565b90505f81835f01516115d8919061699b565b60408085015164ffffffffff165f908152604c6020908152908290208251808401909352546001600160601b03808216808552600160601b909204168383015290860151929350909190829061162f90839061699b565b6001600160601b031690525060208101805183919061164f90839061699b565b6001600160601b0390811690915260408087015164ffffffffff165f908152604c602090815291902084518154928601518416600160601b027fffffffffffffffff00000000000000000000000000000000000000000000000090931690841617919091179055841615905061170857604780548491906002906116e39084906201000090046001600160601b031661699b565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6117128587614124565b6117293033865f01516001600160601b03166142be565b60405186815233907fd1bbb16d648df2dfd0b1b3d88a5bc3f262e0323d3af8fd678115b4f1e7b4b88a9060200160405180910390a2505050505050565b5f61176f613ebd565b6001600160601b033411156117b0576040517f1132981b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b8614352565b6117c134613c62565b9050806001600160601b03165f036117ec5760405163a88ee57760e01b815260040160405180910390fd5b826001600160601b0316816001600160601b03161015611838576040517fc635a9f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61184b82826001600160601b03166144b1565b604680543491905f906118689084906001600160601b03166169ba565b82546101009290920a6001600160601b03818102199093169183160217909155604654600160601b900464ffffffffff165f908152604b60205260408120805434945090926118b9918591166169ba565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555092915050565b600381815481106118f2575f80fd5b5f9182526020909120015467ffffffffffffffff811691506001600160601b03600160401b8204811691600160a01b90041683565b5f336119348582856144fe565b61193f8585856142be565b60019150505b9392505050565b5f611955613ebd565b61195d614352565b335f90815260496020526040812054819060ff166119945760475461ffff1691506119916001600160601b038616836140f3565b90505b5f61199f828761699b565b90506119aa81613e18565b9350836001600160601b03165f036119d55760405163a88ee57760e01b815260040160405180910390fd5b846001600160601b0316846001600160601b03161015611a21576040517f641963a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604654335f908152604d6020908152604080832081516080810183526001600160601b03808d1682528a811682860190815264ffffffffff600160601b98899004811684870181815261ffff808f16606088019081528854600181018a55988c528a8c209751979098018054955192519851909116600160e81b027fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff98909416600160c01b02979097167fff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff9186168c027fffffffffffffffff0000000000000000000000000000000000000000000000009095169686169690961793909317929092169390931792909217909255808552604c8452938290208251808401909352548082168084529590041691810191909152909186908290611b659083906169ba565b6001600160601b0316905250602081018051849190611b859083906169ba565b6001600160601b0390811690915264ffffffffff84165f908152604c6020908152604090912084518154928601518416600160601b027fffffffffffffffff000000000000000000000000000000000000000000000000909316908416179190911790558516159050611c3b5760478054859190600290611c169084906201000090046001600160601b03166169ba565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b611c4f33308a6001600160601b03166142be565b335f818152604d60205260409020547fef31107568890496c8f16fec1278e709d23f1444e004e7973a9403880c28d91790611c8c906001906169d9565b604080519182526001600160601b038088166020840152808b1691830191909152871660608201526080015b60405180910390a2505050505092915050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611d04816140e9565b6113ce83836145ac565b611d16614678565b611d2a5f67ffffffffffffffff83166146a2565b15155f03611d64576040517f0fa1af0e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516060810182525f602080830182815283850183815267ffffffffffffffff8781168087526003805460018101825581885288517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9091018054965195519190941673ffffffffffffffffffffffffffffffffffffffff1990961695909517600160401b6001600160601b0395861602176001600160a01b0316600160a01b949095169390930293909317905554818452600283529285902083905584519081529081018290528351929391927fdd8aaf98a662995c3720dc78ea3773142e7d32c94f523a7d651e932ba0c44f8a929181900390910190a1505050565b6001600160a01b0381163314611ea6576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eb082826146ad565b505050565b5f611ebe6127aa565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0254611eea91906169ba565b905090565b60605f7fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60067ffffffffffffffff8085165f9081526020838152604080832081518083019092525460ff8082168352610100909104169181018290529394509091811115611f5e57611f5e616289565b604051908082528060200260200182016040528015611f87578160200160208202803683370190505b5090505f5b826020015160ff16811015611fd5578251611fa9908260ff614751565b828281518110611fbb57611fbb616947565b60ff90921660209283029190910190910152600101611f8c565b50949350505050565b6060611eea5f61477a565b7ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb612013816140e9565b61201b614786565b50565b612026613ebd565b805147905f5b818167ffffffffffffffff16101561207a5761206a848267ffffffffffffffff168151811061205d5761205d616947565b60200260200101516147f8565b6120738161696f565b905061202c565b505f61208683476169d9565b905080156113ce57604654600160601b900464ffffffffff165f908152604b6020526040812080548392906120c59084906001600160601b03166169ba565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555050505050565b6120f7613ebd565b6120ff614352565b6046546001600160601b03811690600160601b900464ffffffffff165f8061212561495e565b90925090505f604a816121396001876169ec565b64ffffffffff16815260208082019290925260409081015f2081518083019092525467ffffffffffffffff8082168352600160401b9091048116928201839052909250841610156121b6576040517f4851faea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b64ffffffffff84165f818152604b602090815260408083208151808301835290546001600160601b038082168352600160601b91829004811683860152958552604c845293829020825180840190935254808616808452949004851692820192909252815191939092911611156122c657815181515f91612237918a614999565b825184519192505f91839161224b9161699b565b612255919061699b565b90506001600160601b038116156122af5780604b5f6122758b6001616a09565b64ffffffffff16815260208101919091526040015f2080546bffffffffffffffffffffffff19166001600160601b03929092169190911790555b505067ffffffffffffffff841660208401526123db565b815181516001600160601b039182169116111561238757805182515f916122ed918a614bba565b835183519192505f9183916123019161699b565b61230b919061699b565b90506001600160601b038116156122af5780604c5f61232b8b6001616a09565b64ffffffffff16815260208101919091526040015f2080546bffffffffffffffffffffffff19166001600160601b039290921691909117905561236e818a6169ba565b9850505067ffffffffffffffff841660208401526123db565b81516001600160601b03165f036123ca576040517fc2e5347d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff851660208401525b60208101516001600160601b031615612405576124053082602001516001600160601b0316614d91565b80516001600160601b031615612447578051612421908861699b565b604680546bffffffffffffffffffffffff19166001600160601b03929092169190911790555b6040805160608101825260475461ffff811682526001600160601b03620100008204811660208401819052600160701b909204169282019290925290156124fc5780602001518160400181815161249e91906169ba565b6001600160601b039081169091525f60208401528251604780546040860151909316600160701b027fffffffffffff000000000000000000000000000000000000000000000000000090931661ffff90921691909117919091179055505b67ffffffffffffffff808716855264ffffffffff88165f908152604a6020908152604090912086518154928801518416600160401b027fffffffffffffffffffffffffffffffff0000000000000000000000000000000090931693169290921717905561256a876001616a09565b6046600c6101000a81548164ffffffffff021916908364ffffffffff1602179055505050505050505050565b5f5f60608061262f6003805480602002602001604051908101604052809291908181526020015f905b8282101561261c575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b90910416908201528252600190920191016125bf565b50505050866001600160601b0316614dde565b93509350935093509193509193565b612646614fbd565b61264f8261508d565b61265982826150b7565b5050565b5f6126666151b8565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b604080516060810182525f80825260208201819052918101919091526126b08261521a565b60408051606081018252915467ffffffffffffffff811683526001600160601b03600160401b820481166020850152600160a01b909104169082015292915050565b6040517f573c1ce000000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201526001600160a01b03821660248201525f908190819081908190819081906110009063573c1ce09060440160e0604051808303815f875af115801561276e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127929190616a26565b959f949e50929c50909a509850965090945092505050565b6040805160608101825260485461ffff811682526201000081046001600160601b031660208301819052600160701b90910464ffffffffff16928201839052915f906127f690426169d9565b9050801561287f575f612849846001600160601b03166128347f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b61283e9190616a75565b845161ffff166140f3565b6001600160601b031690505f6301e133806128648484616a88565b61286e9190616ab3565b905061287a81866169ba565b945050505b505090565b61288c613ebd565b7f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d86128b6816140e9565b6128be614352565b6048546201000090046001600160601b03168015612909576128e083826144b1565b604880547fffffffffffffffffffffffffffffffffffff000000000000000000000000ffff1690555b604754600160701b90046001600160601b031680156129565761292d3085836142be565b604780547fffffffffffff000000000000000000000000ffffffffffffffffffffffffffff1690555b60408051838152602081018390527fd9787bf70d3926a4a81c52cba8799d18903ce0132aaa4b7de9e92dc893303a7f91015b60405180910390a150505050565b61299e613ebd565b7f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b4516129c8816140e9565b67ffffffffffffffff82165f9081526005602052604090205460ff16612a015760405163194fdc7f60e31b815260040160405180910390fd5b5f612a0b8361521a565b8054909150600160a01b90046001600160601b03165f819003612a415760405163a88ee57760e01b815260040160405180910390fd5b612a5484826001600160601b0316615299565b505080546001600160a01b031690555050565b5f612a70613ebd565b335f908152604d602052604081208054909190829086908110612a9557612a95616947565b5f91825260208083206040805160808101825293909101546001600160601b038082168552600160601b82041684840152600160c01b810464ffffffffff16848301819052600160e81b90910461ffff1660608501528452604a825280842081518083019092525467ffffffffffffffff808216808452600160401b9092041692820192909252919350909103612b58576040517ffc08f5f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f612b61615368565b509050612b6c6153d4565b60ff168260200151612b7e9190616ac6565b67ffffffffffffffff168167ffffffffffffffff161015612bcb576040517fba9bead700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612bd58488614124565b826020015194505f866001600160a01b0316866001600160601b03166040515f6040518083038185875af1925050503d805f8114612c2e576040519150601f19603f3d011682016040523d82523d5f602084013e612c33565b606091505b5050905080612c6e576040517f90b8ec1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080518981526001600160601b038816602082015233917f53a80b7fa2025e3acb298abd7e222b36ce5d6a1425e7a6e53b451aac0c6e5a219101611cb8565b7ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb612cd8816140e9565b61201b615407565b7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa612d0a816140e9565b60c88261ffff161115612d49576040517ffc5bee1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60485461ffff90811690831603612d735760405163a88ee57760e01b815260040160405180910390fd5b612d7b614352565b6048805461ffff191661ffff84169081179091556040519081527f756367c310578acc96b78fcf4141ddb3cf532982d1342ec193f34a3600b9ae65906020015b60405180910390a15050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060917f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00916112da90616915565b612e20613ebd565b6001600160601b03341115612e61576040517f1132981b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6046546001600160601b031669010f0cf064dd59200000811015612eb1576040517f500625f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ebb34826169ba565b604680546bffffffffffffffffffffffff19166001600160601b039283161790819055600160601b900464ffffffffff165f908152604b6020526040812080543493919291612f0c918591166169ba565b92506101000a8154816001600160601b0302191690836001600160601b031602179055507f04e75fda068b8e114d7658bdff74280a0fd65586b7e026a034eae29dd5a9e68b3483604051612dbb9291909182526001600160a01b0316602082015260400190565b612f7b615462565b600454815f5b8181101561331757848482818110612f9b57612f9b616947565b9050606002016040016020810190612fb39190616ae6565b1561314e575f612fe9868684818110612fce57612fce616947565b612fe49260206060909202019081019150616564565b61521a565b805467ffffffffffffffff165f9081526005602052604090205490915060ff1615613040576040517f1db1d0c400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054600160401b90046001600160601b03165f87878581811061306557613065616947565b905060600201602001602081019061307d9190616645565b61308790836169ba565b835473ffffffffffffffffffffffff00000000000000001916600160401b6001600160601b038381169182029290921786559192506130c8908416886169d9565b6130d29190616a75565b95508787858181106130e6576130e6616947565b6130fc9260206060909202019081019150616564565b6040516001600160601b038316815267ffffffffffffffff91909116907fcfaa637aecf1e60e723842980c95e1f0a7ca0a264e46647e4656b98f7293e33b9060200160405180910390a250505061330f565b5f60025f87878581811061316457613164616947565b61317a9260206060909202019081019150616564565b67ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f20549050805f036131ab575061330f565b5f60036131b96001846169d9565b815481106131c9576131c9616947565b5f91825260208220018054909250600160401b90046001600160601b0316908181036131f8575050505061330f565b5f89898781811061320b5761320b616947565b90506060020160200160208101906132239190616645565b9050826001600160601b0316816001600160601b0316101561324c57613249818461699b565b91505b83546001600160601b03808416600160401b810273ffffffffffffffffffffffff00000000000000001990931692909217865561328b9085168a6169d9565b6132959190616a75565b97508989878181106132a9576132a9616947565b6132bf9260206060909202019081019150616564565b6040516001600160601b038416815267ffffffffffffffff91909116907fcfaa637aecf1e60e723842980c95e1f0a7ca0a264e46647e4656b98f7293e33b9060200160405180910390a250505050505b600101612f81565b50506004555050565b5f336113698185856142be565b6133368161548c565b67ffffffffffffffff81165f9081526002602052604081205490819003613389576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60036133976001846169d9565b815481106133a7576133a7616947565b5f91825260209182902060408051606081018252929091015467ffffffffffffffff811683526001600160601b03600160401b82048116948401859052600160a01b90910416908201529150156134115760405163194fdc7f60e31b815260040160405180910390fd5b60408101516001600160601b03161561343d5760405163194fdc7f60e31b815260040160405180910390fd5b600380545f9190613450906001906169d9565b8154811061346057613460616947565b5f9182526020808320909101805467ffffffffffffffff1683526002909152604090912084905590508060036134976001866169d9565b815481106134a7576134a7616947565b5f918252602080832084549201805467ffffffffffffffff93841667ffffffffffffffff19821681178355865473ffffffffffffffffffffffffffffffffffffffff1990921617600160401b918290046001600160601b039081169092021780835595546001600160a01b03909616600160a01b96879004909116909502949094179093558616815260029091526040812055600380548061354b5761354b616b01565b5f8281526020812082015f199081018290559091019091556135779067ffffffffffffffff86166155a0565b5067ffffffffffffffff84165f81815260056020908152604091829020805460ff1916905590519182527f8712d9d347359238729023dc8640e38f0d4f8ad25d0e079c2208a885a51a023f9101612988565b5f6135d26155ab565b805490915060ff600160401b820416159067ffffffffffffffff165f811580156135f95750825b90505f8267ffffffffffffffff1660011480156136155750303b155b905081158015613623575080155b1561365a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561368957845468ff00000000000000001916600160401b1785555b6136916155d3565b6136996155d3565b61370d6040518060400160405280601381526020017f4b696e747375205374616b6564204d6f6e6164000000000000000000000000008152506040518060400160405280600481526020017f734d4f4e000000000000000000000000000000000000000000000000000000008152506155db565b6137156155d3565b61371d6155d3565b6137275f876145ac565b506137527f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d8876145ac565b5061377d7fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c876145ac565b506137a87fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c876145ac565b506137d37f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b451876145ac565b506137fe7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa876145ac565b506138297f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa806155ed565b6138537f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d8876145ac565b5061387e7f359946d964cb1f92e24841dd25d0e8706f1ab6dd13500522367deddd927658d8806155ed565b6138a87f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f538876145ac565b506138d37f78a7a80e95d53cedc2e84890fb7aaf754249c544050913a3263a2abf9d66f538806155ed565b6138fd7f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8876145ac565b506139287f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8806155ed565b6139527ff146182d150a5b368b6d283f87aeae1f25c21b02ff55cf16848704ade176a5cb876145ac565b50604680547fffffffffffffffffffffffffffffff0000000000ffffffffffffffffffffffff16600160601b1790556040805160608101825260c88082525f60208301524264ffffffffff169190920181905260488054600160701b9092027fffffffffffffffffffffffffff000000000000000000000000000000000000009092169190911790911790556047805461ffff191660051790558315613a3757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b613a47613ebd565b805147905f5b818167ffffffffffffffff161015613a9b57613a8b848267ffffffffffffffff1681518110613a7e57613a7e616947565b602002602001015161568e565b613a948161696f565b9050613a4d565b505f613aa783476169d9565b9050805f03613ac95760405163a88ee57760e01b815260040160405180910390fd5b604680548291905f90613ae69084906001600160601b03166169ba565b82546101009290920a6001600160601b03818102199093169183160217909155604654600160601b900464ffffffffff165f908152604b60205260408120805485945090926120c5918591166169ba565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154613b70816140e9565b6113ce83836146ad565b613b82615733565b67ffffffffffffffff81165f9081526005602052604090205460ff1615613bbc5760405163a88ee57760e01b815260040160405180910390fd5b5f613bc68261521a565b805460048054929350600160401b9091046001600160601b0316915f90613bee9084906169d9565b9091555050805473ffffffffffffffffffffffff00000000000000001916815567ffffffffffffffff82165f81815260056020908152604091829020805460ff1916600117905590519182527fa46b2e9bd92f27216c46d5a9772c39431f3f381285ee1dacb1f1034fe603b10b9101612dbb565b6046545f906001600160601b0316808203613c7f57829150613cb2565b80613c88611eb5565b6001600160601b0316846001600160601b0316613ca59190616a88565b613caf9190616ab3565b91505b50919050565b60606003805480602002602001604051908101604052809291908181526020015f905b82821015613d38575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b9091041690820152825260019092019101613cdb565b50505050905090565b7f13172b8201242833f26d88301b6e27aa2235ec2d9b2c92a1ed33678f0ee068fa613d6b816140e9565b60328261ffff161115613daa576040517ffc5bee1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60475461ffff90811690831603613dd45760405163a88ee57760e01b815260040160405180910390fd5b6047805461ffff191661ffff84169081179091556040519081527f0531f91c02fe1dc8b306233f5edba5c1b65a79a064d26a40b6082bc9d887ecba90602001612dbb565b5f5f613e22611eb5565b6001600160601b03169050805f03613e3c57829150613cb2565b6046548190613ca5906001600160601b03908116908616616a88565b604d602052815f5260405f208181548110613e71575f80fd5b5f918252602090912001546001600160601b038082169350600160601b8204169150600160c01b810464ffffffffff1690600160e81b900461ffff1684565b611eb0838383600161575d565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff1615613f19576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60067ffffffffffffffff84165f9081526020828152604080832081518083019092525460ff8082168352610100909104811692820183905293945092851610613f89578160200151613f8b565b835b90508060ff165f03613f9e575050505050565b5f5b8160ff16811015614076575f613fbb845f01518360ff614751565b6040517faed2ee7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8916600482015260ff821660248201529091505f906110009063aed2ee73906044016020604051808303815f875af1158015614028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061404c9190616b15565b90508061406c57604051633f48ffd960e21b815260040160405180910390fd5b5050600101613fa0565b508151614085908260ff614751565b60ff16825260208201805182919061409e908390616b30565b60ff90811690915267ffffffffffffffff9096165f90815260209485526040902083518154959094015187166101000261ffff19909516939096169290921792909217909355505050565b61201b8133615886565b5f612710614102600182616b49565b61ffff166141108486616a88565b61411a9190616a75565b6119459190616ab3565b81545f90614134906001906169d9565b90508082146142715782818154811061414f5761414f616947565b905f5260205f200183838154811061416957614169616947565b5f91825260209091208254910180546bffffffffffffffffffffffff1981166001600160601b0393841690811783558454600160601b908190049094169093027fffffffffffffffff00000000000000000000000000000000000000000000000090911690921791909117808255825464ffffffffff600160c01b9182900416027fffffff0000000000ffffffffffffffffffffffffffffffffffffffffffffffff821681178355925461ffff600160e81b9182900416027fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093167fff00000000000000ffffffffffffffffffffffffffffffffffffffffffffffff909116179190911790555b8280548061428157614281616b01565b5f8281526020902081015f1990810180547fff00000000000000000000000000000000000000000000000000000000000000169055019055505050565b6001600160a01b038316614305576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b6001600160a01b038216614347576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b611eb0838383615912565b6040805160608101825260485461ffff811682526201000081046001600160601b03166020830152600160701b900464ffffffffff16918101829052905f9061439b90426169d9565b90508015612659575f6143dd83602001516001600160601b03166128347f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace025490565b6001600160601b031690505f6301e133806143f88484616a88565b6144029190616ab3565b90508084602001516001600160601b031661441d9190616a75565b6001600160601b0316602085018190524264ffffffffff166040860181905294516048805461ffff9092167fffffffffffffffffffffffffffffffffffff00000000000000000000000000009092169190911762010000909202919091177fffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff16600160701b90950294909417909355505050565b6001600160a01b0382166144f3576040517fec442f050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6126595f8383615912565b6001600160a01b038381165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0160209081526040808320938616835292905220545f198110156113ce578181101561459e576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101829052604481018390526064016142fc565b6113ce84848484035f61575d565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff1661466f575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556146253390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611283565b5f915050611283565b7f902b1971fb3d9217703fb59d9a8bf53ee64da1be6756f20cebc090dd4c37f7d861201b816140e9565b5f6119458383615a77565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602081815260408084206001600160a01b038616855290915282205460ff161561466f575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611283565b5f8160ff168360ff168560ff166147689190616a75565b6147729190616b63565b949350505050565b60605f61194583615ac3565b61478e615b1c565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b67ffffffffffffffff81165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60160205260409020547fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6009060ff1661488b576040517f78297a8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517faed2ee7300000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8316600482015260ff60248201525f906110009063aed2ee73906044016020604051808303815f875af11580156148f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149179190616b15565b90508061493757604051633f48ffd960e21b815260040160405180910390fd5b5067ffffffffffffffff9091165f908152600190910160205260409020805460ff19169055565b5f5f5f5f61496a615368565b915091508193508061498657614981846001616ac6565b614991565b614991846002616ac6565b925050509091565b6004545f908082036149d7576040517f098404de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6003805480602002602001604051908101604052809291908181526020015f905b82821015614a56575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b90910416908201528252600190920191016149f9565b5050505090505f5f614a7c838888614a6e919061699b565b6001600160601b0316614dde565b9350509250505f8789614a8f919061699b565b6001600160601b031690505f845190505f5b81811015614bac575f856001600160601b0316858381518110614ac657614ac6616947565b60200260200101516001600160601b031685614ae29190616a88565b614aec9190616ab3565b90506001600160601b03811615614ba35780878381518110614b1057614b10616947565b602002602001015160400151614b2691906169ba565b60038381548110614b3957614b39616947565b905f5260205f20015f0160146101000a8154816001600160601b0302191690836001600160601b03160217905550614b96878381518110614b7c57614b7c616947565b60200260200101515f0151826001600160601b0316615b77565b614ba0818a6169ba565b98505b50600101614aa1565b505050505050509392505050565b5f5f6003805480602002602001604051908101604052809291908181526020015f905b82821015614c3a575f848152602090819020604080516060810182529185015467ffffffffffffffff811683526001600160601b03600160401b8204811684860152600160a01b9091041690820152825260019092019101614bdd565b5050505090505f5f614c52838887614a6e919061699b565b5092505091505f8688614c65919061699b565b6001600160601b031690505f845190505f5b81811015614d84575f856001600160601b0316858381518110614c9c57614c9c616947565b60200260200101516001600160601b031685614cb89190616a88565b614cc29190616ab3565b90506001600160601b03811615614d7b5780878381518110614ce657614ce6616947565b602002602001015160400151614cfc919061699b565b60038381548110614d0f57614d0f616947565b5f91825260209091200180546001600160601b0392909216600160a01b026001600160a01b03909216919091179055614d4881896169ba565b9750614d79878381518110614d5f57614d5f616947565b60200260200101515f0151826001600160601b0316615c1f565b505b50600101614c77565b5050505050509392505050565b6001600160a01b038216614dd3576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b612659825f83615912565b60045482515f91829160609182918067ffffffffffffffff811115614e0557614e05616289565b604051908082528060200260200182016040528015614e2e578160200160208202803683370190505b5093508067ffffffffffffffff811115614e4a57614e4a616289565b604051908082528060200260200182016040528015614e73578160200160208202803683370190505b5092505f5b81811015614fb1575f898281518110614e9357614e93616947565b6020026020010151604001516001600160601b031690505f5f8511614eb8575f614ef5565b848b8481518110614ecb57614ecb616947565b6020026020010151602001516001600160601b03168b614eeb9190616a88565b614ef59190616ab3565b905080821115614f51575f614f0a82846169d9565b9050614f16818b6169ba565b995080888581518110614f2b57614f2b616947565b60200260200101906001600160601b031690816001600160601b03168152505050614fa7565b81811115614fa7575f614f6483836169d9565b9050614f70818a6169ba565b985080878581518110614f8557614f85616947565b60200260200101906001600160601b031690816001600160601b031681525050505b5050600101614e78565b50505092959194509250565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061505657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661504a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614155b15613f19576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1ea2b19b7ab22acb68ebeb58b5cb9eab43e3e119ebbd3159fdcddfc5b8c538b8612659816140e9565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015615111575060408051601f3d908101601f1916820190925261510e91810190616b76565b60015b615152576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016142fc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146151ae576040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600481018290526024016142fc565b611eb08383615d3d565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614613f19576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff81165f9081526002602052604081205480820361526c576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60036152796001836169d9565b8154811061528957615289616947565b905f5260205f2001915050919050565b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed60160205260408120547fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6009060ff161561532d576040517f500389a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60ff915061533c848484615d92565b67ffffffffffffffff9093165f908152600193840160205260409020805460ff19169093179092555090565b5f5f6110006001600160a01b031663757991a86040518163ffffffff1660e01b815260040160408051808303815f875af11580156153a8573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906153cc9190616b8d565b915091509091565b5f46608f036153e35750600190565b4661279f036153f25750600190565b466175bf036154015750600190565b50600190565b61540f613ebd565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336147da565b7fe1777bd22f637fc57eadcf9d877079117b44537a53059b1670036696018f564c61201b816140e9565b7f1d770361ad1ba5c90793f5d8711778cd963118207b8b46db0f36c72a65b0b4516154b6816140e9565b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed6006020526040812054610100900460ff16111561552e576040517f4d078c7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed601602052604090205460ff1615612659576040517f4d078c7100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6119458383615e47565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00611283565b613f19615f21565b6155e3615f21565b6126598282615f5f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268005f615646845f9081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b5f85815260208490526040808220600101869055519192508491839187917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a450505050565b6040517fa76e2ca500000000000000000000000000000000000000000000000000000000815267ffffffffffffffff821660048201525f906110009063a76e2ca5906024016020604051808303815f875af11580156156ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906157139190616b15565b90508061265957604051633f48ffd960e21b815260040160405180910390fd5b7fbb12ed6b435a5fce787412ceb233935082e39147d977bc587eb74d0f97f48d2c61201b816140e9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b0385166157c0576040517fe602df050000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6001600160a01b038416615802576040517f94280d620000000000000000000000000000000000000000000000000000000081525f60048201526024016142fc565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561587f57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161587691815260200190565b60405180910390a35b5050505050565b5f8281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602090815260408083206001600160a01b038516845290915290205460ff16612659576040517fe2517d3f0000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602481018390526044016142fc565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace006001600160a01b03841661595f5781816002015f8282546159549190616a75565b909155506159e89050565b6001600160a01b0384165f90815260208290526040902054828110156159ca576040517fe450d38c0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018490526064016142fc565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316615a06576002810180548390039055615a24565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051615a6991815260200190565b60405180910390a350505050565b5f818152600183016020526040812054615abc57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155611283565b505f611283565b6060815f01805480602002602001604051908101604052809291908181526020018280548015615b1057602002820191905f5260205f20905b815481526020019060010190808311615afc575b50505050509050919050565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033005460ff16613f19576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f84994fec00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff831660048201525f90611000906384994fec90849060240160206040518083038185885af1158015615bda573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190615bff9190616b15565b905080611eb057604051633f48ffd960e21b815260040160405180910390fd5b67ffffffffffffffff82165f9081527fd5d321e774be746819c1749e69f27b3f3e063f791b56826404d788d5a63ed600602081815260408084208151808301909252805460ff808216845261010090910416928201839052917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0101615cd0576040517f500389a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b615ce3815f0151826020015160ff614751565b935080602001516001615cf69190616bba565b825460ff91909116610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116178255615d34868686615d92565b50505092915050565b615d4682615fc2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115615d8a57611eb0828261605e565b6126596160d0565b6040517f5cf4151400000000000000000000000000000000000000000000000000000000815267ffffffffffffffff841660048201526024810183905260ff821660448201525f9061100090635cf41514906064016020604051808303815f875af1158015615e03573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190615e279190616b15565b9050806113ce57604051633f48ffd960e21b815260040160405180910390fd5b5f818152600183016020526040812054801561466f575f615e696001836169d9565b85549091505f90615e7c906001906169d9565b9050808214615edb575f865f018281548110615e9a57615e9a616947565b905f5260205f200154905080875f018481548110615eba57615eba616947565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080615eec57615eec616b01565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050611283565b615f29616108565b613f19576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b615f67615f21565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace007f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03615fb38482616c17565b50600481016113ce8382616c17565b806001600160a01b03163b5f03616010576040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201526024016142fc565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161607a9190616cd2565b5f60405180830381855af49150503d805f81146160b2576040519150601f19603f3d011682016040523d82523d5f602084013e6160b7565b606091505b50915091506160c7858383616121565b95945050505050565b3415613f19576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6161116155ab565b54600160401b900460ff16919050565b6060826161365761613182616196565b611945565b815115801561614d57506001600160a01b0384163b155b1561618f576040517f9996b3150000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016142fc565b5080611945565b8051156161a557805160208201fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f602082840312156161e7575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611945575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b038116811461201b575f5ffd5b5f5f60408385031215616270575f5ffd5b823561627b8161624b565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156162c6576162c6616289565b604052919050565b67ffffffffffffffff8116811461201b575f5ffd5b5f82601f8301126162f2575f5ffd5b813567ffffffffffffffff81111561630c5761630c616289565b8060051b61631c6020820161629d565b91825260208185018101929081019086841115616337575f5ffd5b6020860192505b83831015616362578235616351816162ce565b82526020928301929091019061633e565b9695505050505050565b5f5f6040838503121561637d575f5ffd5b823567ffffffffffffffff811115616393575f5ffd5b61639f858286016162e3565b925050602083013560ff811681146163b5575f5ffd5b809150509250929050565b5f602082840312156163d0575f5ffd5b81356119458161624b565b602080825282518282018190525f918401906040840190835b818110156164555783516001600160601b0381511684526001600160601b03602082015116602085015264ffffffffff604082015116604085015261ffff6060820151166060850152506080830192506020840193506001810190506163f4565b509095945050505050565b801515811461201b575f5ffd5b5f5f6040838503121561647e575f5ffd5b82356164898161624b565b915060208301356163b581616460565b5f602082840312156164a9575f5ffd5b5035919050565b80356001600160601b03811681146164c6575f5ffd5b919050565b5f5f604083850312156164dc575f5ffd5b6164e5836164b0565b915060208301356163b58161624b565b5f5f5f60608486031215616507575f5ffd5b83356165128161624b565b925060208401356165228161624b565b929592945050506040919091013590565b5f5f60408385031215616544575f5ffd5b61654d836164b0565b915061655b602084016164b0565b90509250929050565b5f60208284031215616574575f5ffd5b8135611945816162ce565b5f5f60408385031215616590575f5ffd5b8235915060208301356163b58161624b565b602080825282518282018190525f918401906040840190835b8181101561645557835160ff168352602093840193909201916001016165bb565b602080825282518282018190525f918401906040840190835b818110156164555783518352602093840193909201916001016165f5565b5f60208284031215616623575f5ffd5b813567ffffffffffffffff811115616639575f5ffd5b614772848285016162e3565b5f60208284031215616655575f5ffd5b611945826164b0565b5f8151808452602084019350602083015f5b828110156166975781516001600160601b0316865260209586019590910190600101616670565b5093949350505050565b6001600160601b03851681526001600160601b0384166020820152608060408201525f6166d1608083018561665e565b82810360608401526166e3818561665e565b979650505050505050565b5f5f604083850312156166ff575f5ffd5b823561670a8161624b565b9150602083013567ffffffffffffffff811115616725575f5ffd5b8301601f81018513616735575f5ffd5b803567ffffffffffffffff81111561674f5761674f616289565b6167626020601f19601f8401160161629d565b818152866020838501011115616776575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b60608101611283828467ffffffffffffffff81511682526001600160601b0360208201511660208301526001600160601b0360408201511660408301525050565b5f5f604083850312156167e7575f5ffd5b82356164e5816162ce565b5f60208284031215616802575f5ffd5b813561ffff81168114611945575f5ffd5b5f5f60208385031215616824575f5ffd5b823567ffffffffffffffff81111561683a575f5ffd5b8301601f8101851361684a575f5ffd5b803567ffffffffffffffff811115616860575f5ffd5b856020606083028401011115616874575f5ffd5b6020919091019590945092505050565b5f5f60408385031215616895575f5ffd5b82356164e58161624b565b602080825282518282018190525f918401906040840190835b81811015616455576168ff83855167ffffffffffffffff81511682526001600160601b0360208201511660208301526001600160601b0360408201511660408301525050565b60209390930192606092909201916001016168b9565b600181811c9082168061692957607f821691505b602082108103613cb257634e487b7160e01b5f52602260045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f67ffffffffffffffff821667ffffffffffffffff81036169925761699261695b565b60010192915050565b6001600160601b0382811682821603908111156112835761128361695b565b6001600160601b0381811683821601908111156112835761128361695b565b818103818111156112835761128361695b565b64ffffffffff82811682821603908111156112835761128361695b565b64ffffffffff81811683821601908111156112835761128361695b565b5f5f5f5f5f5f5f60e0888a031215616a3c575f5ffd5b5050855160208701516040880151606089015160808a015160a08b015160c0909b0151949c939b50919990985090965094509092509050565b808201808211156112835761128361695b565b80820281158282048414176112835761128361695b565b634e487b7160e01b5f52601260045260245ffd5b5f82616ac157616ac1616a9f565b500490565b67ffffffffffffffff81811683821601908111156112835761128361695b565b5f60208284031215616af6575f5ffd5b813561194581616460565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215616b25575f5ffd5b815161194581616460565b60ff82811682821603908111156112835761128361695b565b61ffff82811682821603908111156112835761128361695b565b5f82616b7157616b71616a9f565b500690565b5f60208284031215616b86575f5ffd5b5051919050565b5f5f60408385031215616b9e575f5ffd5b8251616ba9816162ce565b60208401519092506163b581616460565b60ff81811683821601908111156112835761128361695b565b601f821115611eb057805f5260205f20601f840160051c81016020851015616bf85750805b601f840160051c820191505b8181101561587f575f8155600101616c04565b815167ffffffffffffffff811115616c3157616c31616289565b616c4581616c3f8454616915565b84616bd3565b6020601f821160018114616c77575f8315616c605750848201515b5f19600385901b1c1916600184901b17845561587f565b5f84815260208120601f198516915b82811015616ca65787850151825560209485019460019092019101616c86565b5084821015616cc357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f82518060208501845e5f92019182525091905056fea2646970667358221220dd077e4d557bb135eaf8ca467f61cce23be8e96af577cc7a810e99a63aadd08964736f6c634300081e0033",
        "sourceMap": "901:32297:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:202:21;;;;;;;;;;-1:-1:-1;3491:202:21;;;;;:::i;:::-;;:::i;:::-;;;516:14:57;;509:22;491:41;;479:2;464:18;3491:202:21;;;;;;;;3591:72:52;;;;;;;;;;;;3634:29;3591:72;;;;;689:25:57;;;677:2;662:18;3591:72:52;543:177:57;2697:144:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5114:186::-;;;;;;;;;;-1:-1:-1;5114:186:24;;;;;:::i;:::-;;:::i;4217:28:52:-;;;;;;;;;;-1:-1:-1;4217:28:52;;;;-1:-1:-1;;;4217:28:52;;;;;;;;;1912:12:57;1900:25;;;1882:44;;1870:2;1855:18;4217:28:52;1738:194:57;21715:257:52;;;;;;;;;;-1:-1:-1;21715:257:52;;;;;:::i;:::-;;:::i;:::-;;9141:143;;;;;;;;;;-1:-1:-1;9141:143:52;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4323:47::-;;;;;;;;;;-1:-1:-1;4323:47:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;25586:145;;;;;;;;;;-1:-1:-1;25586:145:52;;;;;:::i;:::-;;:::i;13683:1548::-;;;;;;;;;;-1:-1:-1;13683:1548:52;;;;;:::i;:::-;;:::i;3850:152:24:-;;;;;;;;;;-1:-1:-1;3981:14:24;;3850:152;;3515:70:52;;;;;;;;;;;;3557:28;3515:70;;10827:531;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6726:39:57;;;6708:58;;6696:2;6681:18;10827:531:52;6564:208:57;1023:19:51;;;;;;;;;;-1:-1:-1;1023:19:51;;;;;:::i;:::-;;:::i;:::-;;;;7003:18:57;6991:31;;;6973:50;;-1:-1:-1;;;;;7059:39:57;;;7054:2;7039:18;;7032:67;7135:39;;7115:18;;;7108:67;6961:2;6946:18;1023:19:51;6777:404:57;3175:66:52;;;;;;;;;;;;3215:26;3175:66;;5892:244:24;;;;;;;;;;-1:-1:-1;5892:244:24;;;;;:::i;:::-;;:::i;4807:191:21:-;;;;;;;;;;-1:-1:-1;4807:191:21;;;;;:::i;:::-;4872:7;4967:14;;;3001:28;4967:14;;;;;:24;;;;4807:191;11598:1742:52;;;;;;;;;;-1:-1:-1;11598:1742:52;;;;;:::i;:::-;;:::i;11455:185:53:-;;;;;;;;;;-1:-1:-1;11455:185:53;;;;;:::i;:::-;11601:32;;11523:4;11601:32;;;:24;:32;;;;;;;;;11455:185;3781:64:52;;;;;;;;;;;;3820:25;3781:64;;5294:136:21;;;;;;;;;;-1:-1:-1;5294:136:21;;;;;:::i;:::-;;:::i;3735:82:24:-;;;;;;;;;;-1:-1:-1;3735:82:24;;3808:2;8955:36:57;;8943:2;8928:18;3735:82:24;8813:184:57;2429:482:51;;;;;;;;;;-1:-1:-1;2429:482:51;;;;;:::i;:::-;;:::i;6396:245:21:-;;;;;;;;;;-1:-1:-1;6396:245:21;;;;;:::i;:::-;;:::i;8991:144:52:-;;;;;;;;;;;;;:::i;10772:493:53:-;;;;;;;;;;-1:-1:-1;10772:493:53;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1802:104:51:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25835:96:52:-;;;;;;;;;;;;;:::i;22298:484::-;;;;;;;;;;-1:-1:-1;22298:484:52;;;;;:::i;:::-;;:::i;17460:3008::-;;;;;;;;;;;;;:::i;10153:292::-;;;;;;;;;;-1:-1:-1;10153:292:52;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;4500:54::-;;;;;;;;;;-1:-1:-1;4500:54:52;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4500:54:52;;;;-1:-1:-1;;;4500:54:52;;;;;;;;;-1:-1:-1;;;;;12096:39:57;;;12078:58;;12172:39;;;;12167:2;12152:18;;12145:67;12051:18;4500:54:52;11908:310:57;4161:214:23;;;;;;:::i;:::-;;:::i;3879:60:52:-;;;;;;;;;;;;3916:23;3879:60;;3708:134:23;;;;;;;;;;;;;:::i;2197:129:51:-;;;;;;;;;;-1:-1:-1;2197:129:51;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10225:369:53:-;;;;;;;;;;-1:-1:-1;10225:369:53;;;;;:::i;:::-;;:::i;:::-;;;;14434:25:57;;;14490:2;14475:18;;14468:34;;;;14518:18;;;14511:34;;;;14576:2;14561:18;;14554:34;;;;14619:3;14604:19;;14597:35;14663:3;14648:19;;14641:35;14707:3;14692:19;;14685:35;14421:3;14406:19;10225:369:53;14119:607:57;3411:72:52;;;;;;;;;;;;3454:29;3411:72;;2496:145:26;;;;;;;;;;-1:-1:-1;1270:23:26;2625:9;;;2496:145;;9591:556:52;;;;;;;;;;;;;:::i;3247:78::-;;;;;;;;;;;;3293:32;3247:78;;24386:637;;;;;;;;;;-1:-1:-1;24386:637:52;;;;;:::i;:::-;;:::i;4113:25::-;;;;;;;;;;-1:-1:-1;4113:25:52;;;;-1:-1:-1;;;;;4113:25:52;;;4035:171:24;;;;;;;;;;-1:-1:-1;4035:171:24;;;;;:::i;:::-;-1:-1:-1;;;;;4179:20:24;4100:7;4179:20;;;2064;4179;;;;;;;4035:171;20893:517:52;;;;;;;;;;-1:-1:-1;20893:517:52;;;;;:::i;:::-;;:::i;4441:53::-;;;;;;;;;;-1:-1:-1;4441:53:52;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;4441:53:52;;;;-1:-1:-1;;;4441:53:52;;;;;4376:59;;;;;;;;;;-1:-1:-1;4376:59:52;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;;;4376:59:52;;;;;;;;;14931:18:57;14919:31;;;14901:50;;14987:31;;;;14982:2;14967:18;;14960:59;14874:18;4376:59:52;14731:294:57;11271:178:53;;;;;;;;;;-1:-1:-1;11271:178:53;;;;;:::i;:::-;11416:21;;11335:7;11416:21;;;2359;11416;;;;;:26;;;;;;;11271:178;15521:1071:52;;;;;;;;;;-1:-1:-1;15521:1071:52;;;;;:::i;:::-;;:::i;25737:92::-;;;;;;;;;;;;;:::i;3946:66::-;;;;;;;;;;;;4001:11;3946:66;;25029:297;;;;;;;;;;-1:-1:-1;25029:297:52;;;;;:::i;:::-;;:::i;3780:207:21:-;;;;;;;;;;-1:-1:-1;3780:207:21;;;;;:::i;:::-;3857:4;3949:14;;;3001:28;3949:14;;;;;;;;-1:-1:-1;;;;;3949:31:21;;;;;;;;;;;;;;;3780:207;2954:148:24;;;;;;;;;;;;;:::i;1094:26:51:-;;;;;;;;;;;;;;;;23747:479:52;;;;;;:::i;:::-;;:::i;2398:49:21:-;;;;;;;;;;-1:-1:-1;2398:49:21;2443:4;2398:49;;3669:76:52;;;;;;;;;;;;3714:31;3669:76;;3310:1726:51;;;;;;;;;;-1:-1:-1;3310:1726:51;;;;;:::i;:::-;;:::i;4401:178:24:-;;;;;;;;;;-1:-1:-1;4401:178:24;;;;;:::i;:::-;;:::i;1819:58:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5688:877:51;;;;;;;;;;-1:-1:-1;5688:877:51;;;;;:::i;:::-;;:::i;9389:105:52:-;;;;;;;;;;-1:-1:-1;9469:13:52;:18;;;9389:105;;;16511:6:57;16499:19;;;16481:38;;16469:2;16454:18;9389:105:52;16337:188:57;5150:1845:52;;;;;;:::i;:::-;;:::i;22934:524::-;;;;;;;;;;-1:-1:-1;22934:524:52;;;;;:::i;:::-;;:::i;5710:138:21:-;;;;;;;;;;-1:-1:-1;5710:138:21;;;;;:::i;:::-;;:::i;1175:45:51:-;;;;;;;;;;-1:-1:-1;1175:45:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;5245:332;;;;;;;;;;-1:-1:-1;5245:332:51;;;;;:::i;:::-;;:::i;4612:195:24:-;;;;;;;;;;-1:-1:-1;4612:195:24;;;;;:::i;:::-;-1:-1:-1;;;;;4771:20:24;;;4692:7;4771:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4612:195;7826:409:52;;;;;;;;;;-1:-1:-1;7826:409:52;;;;;:::i;:::-;;:::i;2054:87:51:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3331:74:52:-;;;;;;;;;;;;3375:30;3331:74;;25332:248;;;;;;;;;;-1:-1:-1;25332:248:52;;;;;:::i;:::-;;:::i;8444:399::-;;;;;;;;;;-1:-1:-1;8444:399:52;;;;;:::i;:::-;;:::i;4560:61::-;;;;;;;;;;-1:-1:-1;4560:61:52;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;17844:39:57;;;17826:58;;17920:39;;;;17915:2;17900:18;;17893:67;18008:12;17996:25;;;17976:18;;;17969:53;;;;18070:6;18058:19;18053:2;18038:18;;18031:47;17813:3;17798:19;4560:61:52;17603:481:57;9290:93:52;;;;;;;;;;-1:-1:-1;9364:7:52;:12;;;9290:93;;3491:202:21;3576:4;3599:47;;;3614:32;3599:47;;:87;;-1:-1:-1;1116:25:27;1101:40;;;;3650:36:21;3592:94;3491:202;-1:-1:-1;;3491:202:21:o;2697:144:24:-;2827:7;2820:14;;2742:13;;2064:20;;2820:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2697:144;:::o;5114:186::-;5187:4;966:10:25;5241:31:24;966:10:25;5257:7:24;5266:5;5241:8;:31::i;:::-;-1:-1:-1;5289:4:24;;5114:186;-1:-1:-1;;;5114:186:24:o;21715:257:52:-;1979:19:26;:17;:19::i;:::-;21829:14:52;;21815:11:::1;21853:113;21872:3;21868:1;:7;;;21853:113;;;21896:59;21923:7;21931:1;21923:10;;;;;;;;;;:::i;:::-;;;;;;;21935:19;21896:26;:59::i;:::-;21877:3;::::0;::::1;:::i;:::-;;;21853:113;;;;21805:167;21715:257:::0;;:::o;9141:143::-;-1:-1:-1;;;;;9253:24:52;;;;;;:18;:24;;;;;;;;9246:31;;;;;;;;;;;;;;;;;9212:22;;9246:31;;9253:24;;9246:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9246:31:52;;;;;-1:-1:-1;;;9246:31:52;;;;;;;-1:-1:-1;;;9246:31:52;;;;;;;;;;;-1:-1:-1;;;9246:31:52;;;;;;;;;;;;;;;;;;;;;;;;;9141:143;;;:::o;25586:145::-;3714:31;3272:16:21;3283:4;3272:10;:16::i;:::-;-1:-1:-1;;;;;;25692:21:52;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:32;;-1:-1:-1;;25692:32:52::1;::::0;::::1;;::::0;;;::::1;::::0;;25586:145::o;13683:1548::-;1979:19:26;:17;:19::i;:::-;13945:10:52::1;13877:46;13926:30:::0;;;:18:::1;:30;::::0;;;;14007:35;;13926:30;;13877:46;13926:30;;14030:11;;14007:35;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;13966:76:::1;::::0;;::::1;::::0;::::1;::::0;;14007:35;;;::::1;13966:76:::0;-1:-1:-1;;;;;13966:76:52;;::::1;::::0;;-1:-1:-1;;;13966:76:52;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;;;13966:76:52;::::1;;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;13966:76:52;;::::1;;;::::0;;;;14110:14:::1;::::0;13966:76;;-1:-1:-1;14110:14:52;;;::::1;::::0;;::::1;14081:43;14077:82;;14133:26;;;;;;;;;;;;;;14077:82;14245:18;14266:72;14280:17;:24;;;-1:-1:-1::0;;;;;14266:72:52::1;14306:17;:31;;;14266:72;;:13;:72::i;:::-;14245:93;;14348:21;14399:11;14372:17;:24;;;:38;;;;:::i;:::-;14539:25;::::0;;::::1;::::0;14517:48:::1;;14480:34;14517:48:::0;;;:21:::1;:48;::::0;;;;;;;14480:85;;;;::::1;::::0;;;;-1:-1:-1;;;;;14480:85:52;;::::1;::::0;;;-1:-1:-1;;;14480:85:52;;::::1;;::::0;;::::1;::::0;14632:27;;::::1;::::0;14348:62;;-1:-1:-1;14480:85:52;;14632:27;14480:85;;14600:59:::1;::::0;14632:27;;14600:59:::1;:::i;:::-;-1:-1:-1::0;;;;;14600:59:52::1;::::0;;-1:-1:-1;14669:28:52::1;::::0;::::1;:46:::0;;14701:14;;14669:28;:46:::1;::::0;14701:14;;14669:46:::1;:::i;:::-;-1:-1:-1::0;;;;;14669:46:52;;::::1;::::0;;;14747:25:::1;::::0;;::::1;::::0;14725:48:::1;;;::::0;;;:21:::1;:48;::::0;;;;;;:72;;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;;14725:72:52::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;14849:15;::::1;::::0;;-1:-1:-1;14845:81:52::1;;14880:7;:35:::0;;14904:11;;14880:7;:20:::1;::::0;:35:::1;::::0;14904:11;;14880:35;;::::1;-1:-1:-1::0;;;;;14880:35:52::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;14880:35:52::1;;;;;-1:-1:-1::0;;;;;14880:35:52::1;;;;;;14845:81;14986:57;15007:22;15031:11;14986:20;:57::i;:::-;15089:79;15124:4;15131:10;15143:17;:24;;;-1:-1:-1::0;;;;;15089:79:52::1;:26;:79::i;:::-;15184:40;::::0;689:25:57;;;15200:10:52::1;::::0;15184:40:::1;::::0;677:2:57;662:18;15184:40:52::1;;;;;;;13756:1475;;;;;13683:1548:::0;:::o;10827:531::-;10920:13;1979:19:26;:17;:19::i;:::-;-1:-1:-1;;;;;10949:9:52::1;:28;10945:58;;;10986:17;;;;;;;;;;;;;;10945:58;11014:13;:11;:13::i;:::-;11047:34;11070:9;11047:15;:34::i;:::-;11038:43;;11095:6;-1:-1:-1::0;;;;;11095:11:52::1;11105:1;11095:11:::0;11091:34:::1;;11115:10;;-1:-1:-1::0;;;11115:10:52::1;;;;;;;;;;;11091:34;11148:9;-1:-1:-1::0;;;;;11139:18:52::1;:6;-1:-1:-1::0;;;;;11139:18:52::1;;11135:47;;;11166:16;;;;;;;;;;;;;;11135:47;11193:40;11216:8;11226:6;-1:-1:-1::0;;;;;11193:40:52::1;:22;:40::i;:::-;11244:11;:32:::0;;11266:9:::1;::::0;11244:11;::::1;::::0;:32:::1;::::0;11266:9;;-1:-1:-1;;;;;11244:32:52::1;;:::i;:::-;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;11244:32:52;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;11308:14:::1;::::0;-1:-1:-1;;;11308:14:52;::::1;;;-1:-1:-1::0;11287:36:52;;;:20:::1;:36;::::0;;;;:64;;11341:9:::1;::::0;-1:-1:-1;11287:36:52;;:64:::1;::::0;11341:9;;11287:64:::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;11287:64:52::1;;;;;-1:-1:-1::0;;;;;11287:64:52::1;;;;;;10827:531:::0;;;;:::o;1023:19:51:-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;1023:19:51;;;;;-1:-1:-1;;;1023:19:51;;;;:::o;5892:244:24:-;5979:4;966:10:25;6035:37:24;6051:4;966:10:25;6066:5:24;6035:15;:37::i;:::-;6082:26;6092:4;6098:2;6102:5;6082:9;:26::i;:::-;6125:4;6118:11;;;5892:244;;;;;;:::o;11598:1742:52:-;11689:16;1979:19:26;:17;:19::i;:::-;11717:13:52::1;:11;:13::i;:::-;11860:10;11781:20;11844:27:::0;;;:15:::1;:27;::::0;;;;;11781:20;;11844:27:::1;;11839:151;;11903:7;:12:::0;::::1;;::::0;-1:-1:-1;11943:36:52::1;-1:-1:-1::0;;;;;11943:36:52;::::1;11903:12:::0;11943:13:::1;:36::i;:::-;11929:50;;11839:151;12000:21;12024:20;12033:11:::0;12024:6;:20:::1;:::i;:::-;12000:44;;12066:31;12082:14;12066:15;:31::i;:::-;12054:43;;12111:9;-1:-1:-1::0;;;;;12111:14:52::1;12124:1;12111:14:::0;12107:37:::1;;12134:10;;-1:-1:-1::0;;;12134:10:52::1;;;;;;;;;;;12107:37;12170:12;-1:-1:-1::0;;;;;12158:24:52::1;:9;-1:-1:-1::0;;;;;12158:24:52::1;;12154:52;;;12191:15;;;;;;;;;;;;;;12154:52;12242:14;::::0;12337:10:::1;12217:22;12318:30:::0;;;:18:::1;:30;::::0;;;;;;;12354:167;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;12354:167:52;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;12242:14:::1;-1:-1:-1::0;;;12242:14:52;;;::::1;::::0;::::1;12354:167:::0;;;;;;::::1;::::0;;::::1;::::0;;;;;;12318:204;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;::::1;::::0;;;;;;;;;;::::1;-1:-1:-1::0;;;12318:204:52::1;::::0;;;;::::1;-1:-1:-1::0;;;12318:204:52::1;::::0;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;12602:38;;;:21:::1;:38:::0;;;;;;12565:75;;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;;::::0;;::::1;::::0;;;;12242:14;;12421:9;;12565:75;;12675:41:::1;::::0;12421:9;;12675:41:::1;:::i;:::-;-1:-1:-1::0;;;;;12675:41:52::1;::::0;;-1:-1:-1;12726:28:52::1;::::0;::::1;:46:::0;;12758:14;;12726:28;:46:::1;::::0;12758:14;;12726:46:::1;:::i;:::-;-1:-1:-1::0;;;;;12726:46:52;;::::1;::::0;;;12782:38:::1;::::0;::::1;;::::0;;;:21:::1;:38;::::0;;;;;;;:62;;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;;12782:62:52::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;12891:15;::::1;::::0;;-1:-1:-1;12887:81:52::1;;12922:7;:35:::0;;12946:11;;12922:7;:20:::1;::::0;:35:::1;::::0;12946:11;;12922:35;;::::1;-1:-1:-1::0;;;;;12922:35:52::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;12922:35:52::1;;;;;-1:-1:-1::0;;;;;12922:35:52::1;;;;;;12887:81;13076:61;13103:10;13123:4;13130:6;-1:-1:-1::0;;;;;13076:61:52::1;:26;:61::i;:::-;13182:10;13206:30;::::0;;;:18:::1;:30;::::0;;;;:37;13153:180:::1;::::0;13206:41:::1;::::0;13246:1:::1;::::0;13206:41:::1;:::i;:::-;13153:180;::::0;;19922:25:57;;;-1:-1:-1;;;;;19983:39:57;;;19978:2;19963:18;;19956:67;20059:39;;;20039:18;;;20032:67;;;;20135:39;;20130:2;20115:18;;20108:67;19909:3;19894:19;13153:180:52::1;;;;;;;;11707:1633;;;;;11598:1742:::0;;;;:::o;5294:136:21:-;4872:7;4967:14;;;3001:28;4967:14;;;;;:24;;;3272:16;3283:4;3272:10;:16::i;:::-;5398:25:::1;5409:4;5415:7;5398:10;:25::i;2429:482:51:-:0;2480:19;:17;:19::i;:::-;2514:20;:8;:20;;;:12;:20::i;:::-;:29;;2538:5;2514:29;2510:57;;2552:15;;;;;;;;;;;;;;2510:57;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;2630:19:51;;;;;;;2659:5;:19;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2659:19:51;;;;;;;-1:-1:-1;;;;;;;;2659:19:51;;;;;-1:-1:-1;;;;;2659:19:51;-1:-1:-1;;;2659:19:51;;;;;;;;;;;;;;2771:12;2816:28;;;:20;:28;;;;;;:42;;;2874:30;;20358:50:57;;;20424:18;;;20417:34;;;2874:30:51;;-1:-1:-1;;2771:12:51;;2874:30;;;;;;;;;;;2470:441;;2429:482;:::o;6396:245:21:-;-1:-1:-1;;;;;6489:34:21;;966:10:25;6489:34:21;6485:102;;6546:30;;;;;;;;;;;;;;6485:102;6597:37;6609:4;6615:18;6597:11;:37::i;:::-;;6396:245;;:::o;8991:144:52:-;9035:6;9101:27;:25;:27::i;:::-;3981:14:24;;9060:68:52;;;;:::i;:::-;9053:75;;8991:144;:::o;10772:493:53:-;10832:14;10858:23;2359:21;10958;;;;10913:42;10958:21;;;;;;;;;;;10913:66;;;;;;;;;;;;;;;;;;;;;;;;;;10858:45;;-1:-1:-1;10913:42:53;;11018:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11018:35:53;;10989:64;;11068:9;11063:168;11083:17;:22;;;11079:26;;:1;:26;11063:168;;;11155:24;;11143:77;;11187:1;1720:3;11143:11;:77::i;:::-;11126:11;11138:1;11126:14;;;;;;;;:::i;:::-;:94;;;;:14;;;;;;;;;;;:94;11107:3;;11063:168;;;-1:-1:-1;11247:11:53;10772:493;-1:-1:-1;;;;10772:493:53:o;1802:104:51:-;1847:16;1882:17;:8;:15;:17::i;25835:96:52:-;3916:23;3272:16:21;3283:4;3272:10;:16::i;:::-;25894:30:52::1;:28;:30::i;:::-;25835:96:::0;:::o;22298:484::-;1979:19:26;:17;:19::i;:::-;22449:14:52;;22403:21:::1;::::0;22377:23:::1;22473:98;22492:3;22488:1;:7;;;22473:98;;;22516:44;22549:7;22557:1;22549:10;;;;;;;;;;:::i;:::-;;;;;;;22516:32;:44::i;:::-;22497:3;::::0;::::1;:::i;:::-;;;22473:98;;;-1:-1:-1::0;22581:23:52::1;22607:39;22631:15:::0;22607:21:::1;:39;:::i;:::-;22581:65:::0;-1:-1:-1;22660:19:52;;22656:120:::1;;22716:14;::::0;-1:-1:-1;;;22716:14:52;::::1;;;22695:36;::::0;;;:20:::1;:36;::::0;;;;:70;;22749:15;;22695:36;:70:::1;::::0;22749:15;;-1:-1:-1;;;;;22695:70:52::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;22695:70:52::1;;;;;-1:-1:-1::0;;;;;22695:70:52::1;;;;;;22367:415;;;22298:484:::0;:::o;17460:3008::-;1979:19:26;:17;:19::i;:::-;17516:13:52::1;:11;:13::i;:::-;17562:11;::::0;-1:-1:-1;;;;;17562:11:52;::::1;::::0;-1:-1:-1;;;17618:14:52;::::1;;;17540:19;::::0;17699::::1;:17;:19::i;:::-;17653:65:::0;;-1:-1:-1;17653:65:52;-1:-1:-1;17896:38:52::1;17937:16;17896:38:::0;17954:19:::1;17972:1;17954:15:::0;:19:::1;:::i;:::-;17937:37;;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;17937:37:52;17896:78;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;17896:78:52;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;-1:-1:-1;17989:46:52;::::1;;17985:78;;;18044:19;;;;;;;;;;;;;;17985:78;18109:37;::::0;::::1;18074:32;18109:37:::0;;;:20:::1;:37;::::0;;;;;;;18074:72;;;;::::1;::::0;;;;-1:-1:-1;;;;;18074:72:52;;::::1;::::0;;-1:-1:-1;;;18074:72:52;;;::::1;::::0;::::1;::::0;;::::1;::::0;18192:38;;;:21:::1;:38:::0;;;;;;18156:74;;;;::::1;::::0;;;;;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;18245:26;;18074:72;;18156:74;;18245:56;::::1;;18241:1246;;;18380:26:::0;;18408:27;;18344:22:::1;::::0;18369:81:::1;::::0;18437:12;18369:10:::1;:81::i;:::-;18507:27:::0;;18478:26;;18344:106;;-1:-1:-1;18464:11:52::1;::::0;18344:106;;18478:56:::1;::::0;::::1;:::i;:::-;:74;;;;:::i;:::-;18464:88:::0;-1:-1:-1;;;;;;18570:8:52;::::1;::::0;18566:102:::1;;18649:4:::0;18598:20:::1;:41;18619:19;:15:::0;18637:1:::1;18619:19;:::i;:::-;18598:41;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18598:41:52;:55;;-1:-1:-1;;18598:55:52::1;-1:-1:-1::0;;;;;18598:55:52;;;::::1;::::0;;;::::1;::::0;;18566:102:::1;-1:-1:-1::0;;18681:47:52::1;::::0;::::1;:31;::::0;::::1;:47:::0;18241:1246:::1;;;18779:26:::0;;18749:27;;-1:-1:-1;;;;;18749:56:52;;::::1;::::0;::::1;;18745:742;;;18887:27:::0;;18916:26;;18847:24:::1;::::0;18874:83:::1;::::0;18944:12;18874::::1;:83::i;:::-;19015:26:::0;;18985:27;;18847:110;;-1:-1:-1;18971:11:52::1;::::0;18847:110;;18985:56:::1;::::0;::::1;:::i;:::-;:76;;;;:::i;:::-;18971:90:::0;-1:-1:-1;;;;;;19079:8:52;::::1;::::0;19075:141:::1;;19159:4:::0;19107:21:::1;:42;19129:19;:15:::0;19147:1:::1;19129:19;:::i;:::-;19107:42;;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19107:42:52;:56;;-1:-1:-1;;19107:56:52::1;-1:-1:-1::0;;;;;19107:56:52;;;::::1;::::0;;;::::1;::::0;;19181:20:::1;19197:4:::0;19181:20;::::1;:::i;:::-;;;-1:-1:-1::0;;19229:47:52::1;::::0;::::1;:31;::::0;::::1;:47:::0;18745:742:::1;;;19364:26:::0;;-1:-1:-1;;;;;19364:31:52::1;:26;:31:::0;19360:56:::1;;19404:12;;;;;;;;;;;;;;19360:56;19430:46;::::0;::::1;:31;::::0;::::1;:46:::0;18745:742:::1;19501:27;::::0;::::1;::::0;-1:-1:-1;;;;;19501:31:52::1;::::0;19497:128:::1;;19548:66;19579:4;19586:20;:27;;;-1:-1:-1::0;;;;;19548:66:52::1;:22;:66::i;:::-;19639:27:::0;;-1:-1:-1;;;;;19639:31:52::1;::::0;19635:275:::1;;19872:27:::0;;19857:42:::1;::::0;:12;:42:::1;:::i;:::-;19843:11;:56:::0;;-1:-1:-1;;19843:56:52::1;-1:-1:-1::0;;;;;19843:56:52;;;::::1;::::0;;;::::1;::::0;;19635:275:::1;19974:33;::::0;;::::1;::::0;::::1;::::0;;20000:7:::1;19974:33:::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;19974:33:52;;::::1;::::0;::::1;;::::0;::::1;::::0;;;-1:-1:-1;;;19974:33:52;;::::1;;::::0;;;;;;;;20046:25;20042:175:::1;;20114:8;:21;;;20087:8;:23;;:48;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20087:48:52;;::::1;::::0;;;20173:1:::1;20149:21;::::0;::::1;:25:::0;20188:18;;:7:::1;:18:::0;;::::1;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;20188:18:52::1;::::0;;;;::::1;::::0;;::::1;::::0;;;;;;;::::1;::::0;;-1:-1:-1;20042:175:52::1;20277:46;::::0;;::::1;::::0;;20333:33:::1;::::0;::::1;20277:31;20333:33:::0;;;:16:::1;:33;::::0;;;;;;;:51;;;;;;::::1;::::0;;::::1;-1:-1:-1::0;;;20333:51:52::1;::::0;;;;;::::1;::::0;;;;::::1;::::0;;20442:19:::1;20350:15:::0;20333:51;20442:19:::1;:::i;:::-;20425:14;;:36;;;;;;;;;;;;;;;;;;17506:2962;;;;;;;;17460:3008::o:0;10153:292::-;10238:18;10266:19;10295:28;10333;10385:53;10407:14;10385:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;10385:53:52;;;;;;;;-1:-1:-1;;;10385:53:52;;;;;;;;;;;;;;;;;;;;;;;10423:14;-1:-1:-1;;;;;10385:53:52;:21;:53::i;:::-;10378:60;;;;;;;;10153:292;;;;;:::o;4161:214:23:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;3708:134::-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;811:66:5::1;3708:134:23::0;:::o;2197:129:51:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;2296:23:51;2312:6;2296:15;:23::i;:::-;2289:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2289:30:51;;;;;;;;-1:-1:-1;;;2289:30:51;;;;;;;;;2197:129;-1:-1:-1;;2197:129:51:o;10225:369:53:-;10532:55;;;;;21023:18:57;21011:31;;10532:55:53;;;20993:50:57;-1:-1:-1;;;;;21079:55:57;;21059:18;;;21052:83;10306:13:53;;;;;;;;;;;;;;1617:42;;10532:36;;20966:18:57;;10532:55:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10525:62;;;;-1:-1:-1;10525:62:53;;-1:-1:-1;10525:62:53;;-1:-1:-1;10525:62:53;-1:-1:-1;10525:62:53;-1:-1:-1;10525:62:53;;-1:-1:-1;10225:369:53;-1:-1:-1;;;10225:369:53:o;9591:556:52:-;9674:51;;;;;;;;9712:13;9674:51;;;;;;;;;-1:-1:-1;;;;;9674:51:52;;;;;;;-1:-1:-1;;;9674:51:52;;;;;;;;;;;;-1:-1:-1;;9832:43:52;;:15;:43;:::i;:::-;9817:58;-1:-1:-1;9889:8:52;;9885:256;;9913:17;9933:75;9980:6;-1:-1:-1;;;;;9947:39:52;:30;3981:14:24;;;3850:152;9947:30:52;:39;;;;:::i;:::-;9988:19;;9933:75;;:13;:75::i;:::-;-1:-1:-1;;;;;9913:95:52;;-1:-1:-1;10022:29:52;1129:8;10054:16;10066:4;9913:95;10054:16;:::i;:::-;:23;;;;:::i;:::-;10022:55;-1:-1:-1;10091:39:52;10022:55;10091:39;;:::i;:::-;;;9899:242;;9885:256;9664:483;;9591:556;:::o;24386:637::-;1979:19:26;:17;:19::i;:::-;3634:29:52::1;3272:16:21;3283:4;3272:10;:16::i;:::-;24485:13:52::2;:11;:13::i;:::-;24539;:35:::0;;;::::2;-1:-1:-1::0;;;;;24539:35:52::2;24588:23:::0;;24584:154:::2;;24627:47;24650:2;24654:19;24627:22;:47::i;:::-;24688:13;:39:::0;;;::::2;::::0;;24584:154:::2;24772:7;:22:::0;-1:-1:-1;;;24772:22:52;::::2;-1:-1:-1::0;;;;;24772:22:52::2;24808:17:::0;;24804:148:::2;;24841:60;24876:4;24883:2;24887:13;24841:26;:60::i;:::-;24915:7;:26:::0;;;::::2;::::0;;24804:148:::2;24967:49;::::0;;22854:25:57;;;22910:2;22895:18;;22888:34;;;24967:49:52::2;::::0;22827:18:57;24967:49:52::2;;;;;;;;24475:548;;2008:1:26::1;24386:637:52::0;:::o;20893:517::-;1979:19:26;:17;:19::i;:::-;3454:29:52::1;3272:16:21;3283:4;3272:10;:16::i;:::-;21000:22:52::2;::::0;::::2;;::::0;;;:14:::2;:22;::::0;;;;;::::2;;20995:48;;21031:12;;-1:-1:-1::0;;;21031:12:52::2;;;;;;;;;;;20995:48;21054:17;21074:32;21099:6;21074:24;:32::i;:::-;21133:11:::0;;;;-1:-1:-1;;;;21133:11:52;::::2;-1:-1:-1::0;;;;;21133:11:52::2;21116:14;21158:12:::0;;;21154:35:::2;;21179:10;;-1:-1:-1::0;;;21179:10:52::2;;;;;;;;;;;21154:35;21262:51;21297:6;21305:7;-1:-1:-1::0;;;;;21262:51:52::2;:34;:51::i;:::-;-1:-1:-1::0;;21388:15:52;;-1:-1:-1;;;;;21388:15:52::2;::::0;;-1:-1:-1;;20893:517:52:o;15521:1071::-;15616:13;1979:19:26;:17;:19::i;:::-;15709:10:52::1;15641:46;15690:30:::0;;;:18:::1;:30;::::0;;;;15771:35;;15690:30;;15641:46;15690:30;;15794:11;;15771:35;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;15730:76:::1;::::0;;::::1;::::0;::::1;::::0;;15771:35;;;::::1;15730:76:::0;-1:-1:-1;;;;;15730:76:52;;::::1;::::0;;-1:-1:-1;;;15730:76:52;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;15730:76:52;::::1;;;::::0;;;;;;-1:-1:-1;;;15730:76:52;;::::1;;;::::0;;;;15882:43;;:16:::1;:43:::0;;;;;15841:84;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;15841:84:52;;::::1;;::::0;;::::1;::::0;;;;15730:76;;-1:-1:-1;15841:84:52;;15964:36;15960:68:::1;;16009:19;;;;;;;;;;;;;;15960:68;16040:19;16064:28;:26;:28::i;:::-;16039:53;;;16155:36;:34;:36::i;:::-;16121:70;;:15;:31;;;:70;;;;:::i;:::-;16106:85;;:12;:85;;;16102:113;;;16200:15;;;;;;;;;;;;;;16102:113;16274:57;16295:22;16319:11;16274:20;:57::i;:::-;16388:17;:27;;;16379:36;;16426:12;16443:8;-1:-1:-1::0;;;;;16443:13:52::1;16464:6;-1:-1:-1::0;;;;;16443:32:52::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16425:50;;;16490:7;16485:37;;16506:16;;;;;;;;;;;;;;16485:37;16538:47;::::0;;23512:25:57;;;-1:-1:-1;;;;;23573:39:57;;23568:2;23553:18;;23546:67;16553:10:52::1;::::0;16538:47:::1;::::0;23485:18:57;16538:47:52::1;23339:280:57::0;25737:92:52;3916:23;3272:16:21;3283:4;3272:10;:16::i;:::-;25794:28:52::1;:26;:28::i;25029:297::-:0;3557:28;3272:16:21;3283:4;3272:10;:16::i;:::-;25128:4:52::1;25119:6;:13;;;25115:39;;;25141:13;;;;;;;;;;;;;;25115:39;25178:13;:18:::0;::::1;::::0;;::::1;25168:28:::0;;::::1;::::0;25164:51:::1;;25205:10;;-1:-1:-1::0;;;25205:10:52::1;;;;;;;;;;;25164:51;25225:13;:11;:13::i;:::-;25248;:27:::0;;-1:-1:-1;;25248:27:52::1;;::::0;::::1;::::0;;::::1;::::0;;;25290:29:::1;::::0;16481:38:57;;;25290:29:52::1;::::0;16469:2:57;16454:18;25290:29:52::1;;;;;;;;25029:297:::0;;:::o;2954:148:24:-;3086:9;3079:16;;3001:13;;2064:20;;3079:16;;;:::i;23747:479:52:-;1979:19:26;:17;:19::i;:::-;-1:-1:-1;;;;;23838:9:52::1;:28;23834:58;;;23875:17;;;;;;;;;;;;;;23834:58;23924:11;::::0;-1:-1:-1;;;;;23924:11:52::1;4001;23959:43:::0;::::1;23955:84;;;24011:28;;;;;;;;;;;;;;23955:84;24063:32;24085:9;24063:12:::0;:32:::1;:::i;:::-;24049:11;:46:::0;;-1:-1:-1;;24049:46:52::1;-1:-1:-1::0;;;;;24049:46:52;;::::1;;::::0;;;;-1:-1:-1;;;24126:14:52;::::1;;;-1:-1:-1::0;24105:36:52;;;:20:::1;:36;::::0;;;;:64;;24159:9:::1;::::0;24105:36;;-1:-1:-1;24105:64:52::1;::::0;24159:9;;24105:64:::1;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;;;24105:64:52::1;;;;;-1:-1:-1::0;;;;;24105:64:52::1;;;;;;24184:35;24197:9;24208:10;24184:35;;;;;;23992:25:57::0;;;-1:-1:-1;;;;;24053:55:57;24048:2;24033:18;;24026:83;23980:2;23965:18;;23818:297;3310:1726:51;3389:24;:22;:24::i;:::-;3447:11;;3493:12;3424:20;3522:1471;3542:3;3538:1;:7;3522:1471;;;3570:12;;3583:1;3570:15;;;;;;;:::i;:::-;;;;;;:28;;;;;;;;;;:::i;:::-;3566:1417;;;3618:17;3638:39;3654:12;;3667:1;3654:15;;;;;;;:::i;:::-;:22;;;:15;;;;;:22;;;;-1:-1:-1;3654:22:51;:::i;:::-;3638:15;:39::i;:::-;3714:7;;;;3699:23;;;;:14;:23;;;;;;3618:59;;-1:-1:-1;3699:23:51;;3695:50;;;3731:14;;;;;;;;;;;;;;3695:50;3782:11;;-1:-1:-1;;;3782:11:51;;-1:-1:-1;;;;;3782:11:51;3763:16;3842:12;;3855:1;3842:15;;;;;;;:::i;:::-;;;;;;:21;;;;;;;;;;:::i;:::-;3830:33;;:9;:33;:::i;:::-;3882:23;;-1:-1:-1;;3882:23:51;-1:-1:-1;;;;;;;;3882:23:51;;;;;;;;;;;;;;-1:-1:-1;3938:24:51;;;;:12;:24;:::i;:::-;:36;;;;:::i;:::-;3923:51;;4009:12;;4022:1;4009:15;;;;;;;:::i;:::-;:22;;;:15;;;;;:22;;;;-1:-1:-1;4009:22:51;:::i;:::-;3997:46;;-1:-1:-1;;;;;6726:39:57;;6708:58;;3997:46:51;;;;;;;;6696:2:57;6681:18;3997:46:51;;;;;;;3600:458;;;3566:1417;;;4141:19;4163:20;:44;4184:12;;4197:1;4184:15;;;;;;;:::i;:::-;:22;;;:15;;;;;:22;;;;-1:-1:-1;4184:22:51;:::i;:::-;4163:44;;;;;;;;;;;;;;;;4141:66;;4229:11;4244:1;4229:16;4225:30;;4247:8;;;4225:30;4303:17;4323:5;4329:15;4343:1;4329:11;:15;:::i;:::-;4323:22;;;;;;;;:::i;:::-;;;;;;;;;4382:11;;4323:22;;-1:-1:-1;;;;4382:11:51;;-1:-1:-1;;;;;4382:11:51;;4460:14;;;4456:28;;4476:8;;;;;;4456:28;4549:18;4570:12;;4583:1;4570:15;;;;;;;:::i;:::-;;;;;;:21;;;;;;;;;;:::i;:::-;4549:42;;4702:9;-1:-1:-1;;;;;4688:23:51;:11;-1:-1:-1;;;;;4688:23:51;;4684:105;;;4747:23;4759:11;4747:9;:23;:::i;:::-;4735:35;;4684:105;4807:23;;-1:-1:-1;;;;;4807:23:51;;;-1:-1:-1;;;4807:23:51;;-1:-1:-1;;4807:23:51;;;;;;;;;4863:24;;;;:12;:24;:::i;:::-;:36;;;;:::i;:::-;4848:51;;4934:12;;4947:1;4934:15;;;;;;;:::i;:::-;:22;;;:15;;;;;:22;;;;-1:-1:-1;4934:22:51;:::i;:::-;4922:46;;-1:-1:-1;;;;;6726:39:57;;6708:58;;4922:46:51;;;;;;;;6696:2:57;6681:18;4922:46:51;;;;;;;4064:919;;;;;3566:1417;3547:3;;3522:1471;;;-1:-1:-1;;5003:11:51;:26;-1:-1:-1;;3310:1726:51:o;4401:178:24:-;4470:4;966:10:25;4524:27:24;966:10:25;4541:2:24;4545:5;4524:9;:27::i;5688:877:51:-;5742:28;5763:6;5742:20;:28::i;:::-;5803;;;5781:19;5803:28;;;:20;:28;;;;;;;5845:16;;;5841:42;;5870:13;;;;;;;;;;;;;;5841:42;5894:16;5913:5;5919:15;5933:1;5919:11;:15;:::i;:::-;5913:22;;;;;;;;:::i;:::-;;;;;;;;;;5894:41;;;;;;;;5913:22;;;;5894:41;;;;;;-1:-1:-1;;;;;;;;5894:41:51;;;;;;;;;;-1:-1:-1;;;5894:41:51;;;;;;;;;-1:-1:-1;5974:15:51;5970:40;;5998:12;;-1:-1:-1;;;5998:12:51;;;;;;;;;;;5970:40;6024:11;;;;-1:-1:-1;;;;;6024:15:51;;6020:40;;6048:12;;-1:-1:-1;;;6048:12:51;;;;;;;;;;;6020:40;6095:5;6101:12;;6071:21;;6095:5;6101:16;;6116:1;;6101:16;:::i;:::-;6095:23;;;;;;;;:::i;:::-;;;;;;;;;;;;6217:11;;;;6196:33;;:20;:33;;;;;;;:47;;;6095:23;-1:-1:-1;6095:23:51;6253:5;6259:15;6217:11;6232;6259:15;:::i;:::-;6253:22;;;;;;;;:::i;:::-;;;;;;;;;:33;;:22;;:33;;;;;;-1:-1:-1;;6253:33:51;;;;;;;;-1:-1:-1;;6253:33:51;;;;-1:-1:-1;;;6253:33:51;;;;-1:-1:-1;;;;;6253:33:51;;;;;;;;;;;;-1:-1:-1;;;;;6253:33:51;;;-1:-1:-1;;;6253:33:51;;;;;;;;;;;;;;;;;6339:28;;;;:20;:28;;;;;;6332:35;6377:5;:11;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;6377:11:51;;;;;;;;;;;;6460:23;;6377:11;6460:23;;:15;:23::i;:::-;-1:-1:-1;6493:22:51;;;6518:5;6493:22;;;:14;:22;;;;;;;;;:30;;-1:-1:-1;;6493:30:51;;;6539:19;;24913:50:57;;;6539:19:51;;24886:18:57;6539:19:51;24769:200:57;5150:1845:52;4158:30:22;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:22;-1:-1:-1;;;4302:15:22;;;4301:16;;4348:14;;4279:19;4724:16;;:34;;;;;4744:14;4724:34;4704:54;;4768:17;4788:11;:16;;4803:1;4788:16;:50;;;;-1:-1:-1;4816:4:22;4808:25;:30;4788:50;4768:70;;4854:12;4853:13;:30;;;;;4871:12;4870:13;4853:30;4849:91;;;4906:23;;;;;;;;;;;;;;4849:91;4949:18;;-1:-1:-1;;4949:18:22;4966:1;4949:18;;;4977:67;;;;5011:22;;-1:-1:-1;;5011:22:22;-1:-1:-1;;;5011:22:22;;;4977:67;5224:40:52::1;:38;:40::i;:::-;5274:33;:31;:33::i;:::-;5317:60;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;::::0;:29:::1;:60::i;:::-;5387:47;:45;:47::i;:::-;5444:37;:35;:37::i;:::-;5492:87;2443:4:21;5573:5:52::0;5492:35:::1;:87::i;:::-;;5648:57;3215:26;5699:5;5648:35;:57::i;:::-;;5715:63;3293:32;5772:5;5715:35;:63::i;:::-;;5788:61;3375:30;5843:5;5788:35;:61::i;:::-;;5859:60;3454:29;5913:5;5859:35;:60::i;:::-;;5966:59;3557:28;6019:5;5966:35;:59::i;:::-;;6035:72;3557:28;::::0;6035:38:::1;:72::i;:::-;6117:60;3634:29;6171:5;6117:35;:60::i;:::-;;6187:74;3634:29;::::0;6187:38:::1;:74::i;:::-;6271:62;3714:31;6327:5;6271:35;:62::i;:::-;;6343:78;3714:31;::::0;6343:38:::1;:78::i;:::-;6472:56;3820:25;6522:5;6472:35;:56::i;:::-;;6538:66;3820:25;::::0;6538:38:::1;:66::i;:::-;6668:54;3916:23;6716:5;6668:35;:54::i;:::-;-1:-1:-1::0;6733:14:52::1;:18:::0;;;::::1;-1:-1:-1::0;;;6733:18:52::1;::::0;;6778:160:::1;::::0;;::::1;::::0;::::1;::::0;;6812:4:::1;6778:160:::0;;;-1:-1:-1;6778:160:52::1;::::0;::::1;::::0;6911:15:::1;6733:18;6778:160;::::0;;;;;;;6762:13:::1;:176:::0;;-1:-1:-1;;;6762:176:52;;::::1;::::0;;;;;;;;;;;;;6948:7:::1;:16:::0;;-1:-1:-1;;6948:16:52::1;6963:1;6948:16;::::0;;5064:101:22;;;;5098:23;;-1:-1:-1;;5098:23:22;;;5140:14;;-1:-1:-1;24913:50:57;;5140:14:22;;24901:2:57;24886:18;5140:14:22;;;;;;;5064:101;4092:1079;;;;;5150:1845:52;:::o;22934:524::-;1979:19:26;:17;:19::i;:::-;23080:14:52;;23034:21:::1;::::0;23010::::1;23104:96;23123:3;23119:1;:7;;;23104:96;;;23147:42;23178:7;23186:1;23178:10;;;;;;;;;;:::i;:::-;;;;;;;23147:30;:42::i;:::-;23128:3;::::0;::::1;:::i;:::-;;;23104:96;;;-1:-1:-1::0;23210:22:52::1;23235:37;23259:13:::0;23235:21:::1;:37;:::i;:::-;23210:62;;23286:14;23304:1;23286:19:::0;23282:42:::1;;23314:10;;-1:-1:-1::0;;;23314:10:52::1;;;;;;;;;;;23282:42;23335:11;:37:::0;;23357:14;;23335:11;::::1;::::0;:37:::1;::::0;23357:14;;-1:-1:-1;;;;;23335:37:52::1;;:::i;:::-;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;23335:37:52;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;23403:14:::1;::::0;-1:-1:-1;;;23403:14:52;::::1;;;-1:-1:-1::0;23382:36:52;;;:20:::1;:36;::::0;;;;:69;;23436:14;;-1:-1:-1;23382:36:52;;:69:::1;::::0;23436:14;;23382:69:::1;;:::i;5710:138:21:-:0;4872:7;4967:14;;;3001:28;4967:14;;;;;:24;;;3272:16;3283:4;3272:10;:16::i;:::-;5815:26:::1;5827:4;5833:7;5815:11;:26::i;5245:332:51:-:0;5300:23;:21;:23::i;:::-;5338:22;;;;;;;:14;:22;;;;;;;;5334:45;;;5369:10;;-1:-1:-1;;;5369:10:51;;;;;;;;;;;5334:45;5390:17;5410:23;5426:6;5410:15;:23::i;:::-;5458:11;;5443;:26;;5458:11;;-1:-1:-1;;;;5458:11:51;;;-1:-1:-1;;;;;5458:11:51;;;;5443:26;;5458:11;;5443:26;:::i;:::-;;;;-1:-1:-1;;5479:15:51;;-1:-1:-1;;5479:15:51;;;5505:22;;;-1:-1:-1;5505:22:51;;;:14;:22;;;;;;;;;:29;;-1:-1:-1;;5505:29:51;-1:-1:-1;5505:29:51;;;5550:20;;24913:50:57;;;5550:20:51;;24886:18:57;5550:20:51;24769:200:57;7826:409:52;7935:11;;7887:13;;-1:-1:-1;;;;;7935:11:52;7970:17;;;7966:263;;8109:6;8100:15;;7966:263;;;8205:12;8188:13;:11;:13::i;:::-;-1:-1:-1;;;;;8180:22:52;8170:6;-1:-1:-1;;;;;8162:15:52;:40;;;;:::i;:::-;:55;;;;:::i;:::-;8146:72;;7966:263;7902:333;7826:409;;;:::o;2054:87:51:-;2097:13;2129:5;2122:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;2122:12:51;;;;;;;;-1:-1:-1;;;2122:12:51;;;;;;;;;;;;;;;;;;;;;;;;;2054:87;:::o;25332:248:52:-;3557:28;3272:16:21;3283:4;3272:10;:16::i;:::-;25425:2:52::1;25416:6;:11;;;25412:37;;;25436:13;;;;;;;;;;;;;;25412:37;25473:7;:12:::0;::::1;::::0;;::::1;25463:22:::0;;::::1;::::0;25459:45:::1;;25494:10;;-1:-1:-1::0;;;25494:10:52::1;;;;;;;;;;;25459:45;25514:7;:21:::0;;-1:-1:-1;;25514:21:52::1;;::::0;::::1;::::0;;::::1;::::0;;;25550:23:::1;::::0;16481:38:57;;;25550:23:52::1;::::0;16469:2:57;16454:18;25550:23:52::1;16337:188:57::0;8444:399:52;8505:13;8530:20;8553:13;:11;:13::i;:::-;-1:-1:-1;;;;;8530:36:52;;;8580:12;8596:1;8580:17;8576:261;;8719:6;8710:15;;8576:261;;;8798:11;;8813:12;;8772:38;;-1:-1:-1;;;;;8798:11:52;;;;8772:15;;:38;:::i;4560:61::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4560:61:52;;;;-1:-1:-1;;;;4560:61:52;;;;-1:-1:-1;;;;4560:61:52;;;;;-1:-1:-1;;;4560:61:52;;;;;:::o;9905:128:24:-;9989:37;9998:5;10005:7;10014:5;10021:4;9989:8;:37::i;2709:128:26:-;1270:23;2625:9;;;2770:61;;;2805:15;;;;;;;;;;;;;;2770:61;2709:128::o;7980:978:53:-;8052:23;2359:21;8152;;;8107:42;8152:21;;;;;;;;;;;8107:66;;;;;;;;;;;;;;;;;;;;;;;;;;;8052:45;;-1:-1:-1;8107:66:53;8230:37;;-1:-1:-1;8230:77:53;;8285:17;:22;;;8230:77;;;8270:12;8230:77;8208:99;;8396:13;:18;;8413:1;8396:18;8392:31;;8416:7;;;7980:978;;:::o;8392:31::-;8438:9;8433:299;8453:13;8449:17;;:1;:17;8433:299;;;8487:16;8506:77;8518:17;:24;;;8550:1;1720:3;8506:11;:77::i;:::-;8612:52;;;;;25386:18:57;25374:31;;8612:52:53;;;25356:50:57;25454:4;25442:17;;25422:18;;;25415:45;8487:96:53;;-1:-1:-1;8597:12:53;;1617:42;;8612:32;;25329:18:57;;8612:52:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8597:67;;8683:7;8678:43;;8699:22;;-1:-1:-1;;;8699:22:53;;;;;;;;;;;8678:43;-1:-1:-1;;8468:3:53;;8433:299;;;-1:-1:-1;8781:24:53;;8769:82;;8807:13;1720:3;8769:11;:82::i;:::-;8742:109;;;;8861:22;;;:39;;8887:13;;8861:22;:39;;8887:13;;8861:39;:::i;:::-;;;;;;;;8910:21;;;;:13;:21;;;;;;;;;;:41;;;;;;;;;;;;;-1:-1:-1;;8910:41:53;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7980:978:53:o;4196:103:21:-;4262:30;4273:4;966:10:25;4262::21;:30::i;26461:172:52:-;26541:6;1086;26596:8;26603:1;1086:6;26596:8;:::i;:::-;26574:31;;:18;26583:9;26574:6;:18;:::i;:::-;:31;;;;:::i;:::-;26573:40;;;;:::i;31846:431::-;31961:12;;31940:18;;31961:16;;31976:1;;31961:16;:::i;:::-;31940:37;;32000:10;31991:5;:19;31987:228;;32187:5;32193:10;32187:17;;;;;;;;:::i;:::-;;;;;;;;32172:5;32178;32172:12;;;;;;;;:::i;:::-;;;;;;;;;:32;;:12;;:32;;-1:-1:-1;;32172:32:52;;-1:-1:-1;;;;;32172:32:52;;;;;;;;;;-1:-1:-1;;;32172:32:52;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32172:32:52;;;;;;;;;;;;;;;;-1:-1:-1;;;32172:32:52;;;;;;;;;;;;;;;;;;;;;31987:228;32259:5;:11;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;32259:11:52;;;;;;;;;;;;-1:-1:-1;;;31846:431:52:o;6509:300:24:-;-1:-1:-1;;;;;6592:18:24;;6588:86;;6633:30;;;;;6660:1;6633:30;;;26186:74:57;26159:18;;6633:30:24;;;;;;;;6588:86;-1:-1:-1;;;;;6687:16:24;;6683:86;;6726:32;;;;;6755:1;6726:32;;;26186:74:57;26159:18;;6726:32:24;26040:226:57;6683:86:24;6778:24;6786:4;6792:2;6796:5;6778:7;:24::i;32532:664:52:-;32573:51;;;;;;;;32611:13;32573:51;;;;;;;;;-1:-1:-1;;;;;32573:51:52;;;;;-1:-1:-1;;;32573:51:52;;;;;;;;;;;-1:-1:-1;;32674:43:52;;:15;:43;:::i;:::-;32659:58;-1:-1:-1;32731:8:52;;32727:463;;32755:17;32775:105;32822:14;:36;;;-1:-1:-1;;;;;32789:69:52;:30;3981:14:24;;;3850:152;32775:105:52;-1:-1:-1;;;;;32755:125:52;;-1:-1:-1;32894:29:52;1129:8;32926:16;32938:4;32755:125;32926:16;:::i;:::-;:23;;;;:::i;:::-;32894:55;;33048:21;33009:14;:36;;;-1:-1:-1;;;;;33009:60:52;;;;;:::i;:::-;-1:-1:-1;;;;;32963:107:52;:36;;;:107;;;33119:15;33084:51;;:25;;;:51;;;33149:30;;:13;:30;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;33149:30:52;;;;;;;;;;-1:-1:-1;;;32532:664:52:o;8637:208:24:-;-1:-1:-1;;;;;8707:21:24;;8703:91;;8751:32;;;;;8780:1;8751:32;;;26186:74:57;26159:18;;8751:32:24;26040:226:57;8703:91:24;8803:35;8819:1;8823:7;8832:5;8803:7;:35::i;11649:476::-;-1:-1:-1;;;;;4771:20:24;;;11748:24;4771:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;-1:-1:-1;;11814:36:24;;11810:309;;;11889:5;11870:16;:24;11866:130;;;11921:60;;;;;-1:-1:-1;;;;;26491:55:57;;11921:60:24;;;26473:74:57;26563:18;;;26556:34;;;26606:18;;;26599:34;;;26446:18;;11921:60:24;26271:368:57;11866:130:24;12037:57;12046:5;12053:7;12081:5;12062:16;:24;12088:5;12037:8;:57::i;7318:387:21:-;7395:4;3949:14;;;3001:28;3949:14;;;;;;;;-1:-1:-1;;;;;3949:31:21;;;;;;;;;;;;7480:219;;7523:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7523:31:21;;;;;;;;;:38;;-1:-1:-1;;7523:38:21;7557:4;7523:38;;;7607:12;966:10:25;;887:96;7607:12:21;-1:-1:-1;;;;;7580:40:21;7598:7;-1:-1:-1;;;;;7580:40:21;7592:4;7580:40;;;;;;;;;;7641:4;7634:11;;;;;7480:219;7683:5;7676:12;;;;;7104:78:52;3215:26;3272:16:21;3283:4;3272:10;:16::i;15133:129:20:-;15200:4;15223:32;15228:3;15248:5;15223:4;:32::i;7942:388:21:-;8020:4;3949:14;;;3001:28;3949:14;;;;;;;;-1:-1:-1;;;;;3949:31:21;;;;;;;;;;;;8105:219;;;8181:5;8147:14;;;;;;;;;;;-1:-1:-1;;;;;8147:31:21;;;;;;;;;;:39;;-1:-1:-1;;8147:39:21;;;8205:40;966:10:25;;8147:14:21;;8205:40;;8181:5;8205:40;8266:4;8259:11;;;;;11646:150:53;11718:5;11784:3;11776:12;;11770:1;11762:10;;11757:1;11749:10;;:23;;;;:::i;:::-;11748:40;;;;:::i;:::-;11735:54;11646:150;-1:-1:-1;;;;11646:150:53:o;17394:270:20:-;17454:16;17482:22;17507:19;17515:3;17507:7;:19::i;3478:178:26:-;2226:16;:14;:16::i;:::-;1270:23;3595:17;;-1:-1:-1;;3595:17:26::1;::::0;;3627:22:::1;966:10:25::0;3636:12:26::1;3627:22;::::0;-1:-1:-1;;;;;26204:55:57;;;26186:74;;26174:2;26159:18;3627:22:26::1;;;;;;;3526:130;3478:178::o:0;9144:388:53:-;9262:32;;;9202:23;9262:32;;;:24;:32;;;;;;2359:21;;9262:32;;9257:78;;9303:32;;;;;;;;;;;;;;9257:78;9361:60;;;;;25386:18:57;25374:31;;9361:60:53;;;25356:50:57;1785:3:53;25422:18:57;;;25415:45;9346:12:53;;1617:42;;9361:32;;25329:18:57;;9361:60:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9346:75;;9436:7;9431:43;;9452:22;;-1:-1:-1;;;9452:22:53;;;;;;;;;;;9431:43;-1:-1:-1;9485:32:53;;;;9520:5;9485:32;;;:24;;;;:32;;;;;:40;;-1:-1:-1;;9485:40:53;;;9144:388::o;25937:310:52:-;25983:19;26004:20;26037;26059:26;26089:28;:26;:28::i;:::-;26036:81;;;;26142:13;26127:28;;26181:21;:59;;26224:16;:12;26239:1;26224:16;:::i;:::-;26181:59;;;26205:16;:12;26220:1;26205:16;:::i;:::-;26165:75;;26026:221;;25937:310;;:::o;29086:1006::-;29246:20;;29191;;29290:17;;;29286:47;;29316:17;;;;;;;;;;;;;;29286:47;29344:20;29367:14;29344:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;29344:37:52;;;;;;;;-1:-1:-1;;;29344:37:52;;;;;;;;;;;;;;;;;;;;;;;;;29426:19;29448:28;29480:122;29515:6;29550:16;29535:12;:31;;;;:::i;:::-;-1:-1:-1;;;;;29480:122:52;:21;:122::i;:::-;29423:179;;;;;;29613:24;29656:16;29640:13;:32;;;;:::i;:::-;-1:-1:-1;;;;;29613:59:52;;;29683:9;29695:6;:13;29683:25;;29723:9;29718:368;29738:1;29734;:5;29718:368;;;29760:17;29824:12;-1:-1:-1;;;;;29787:49:52;29806:12;29819:1;29806:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;29787:34:52;:16;:34;;;;:::i;:::-;:49;;;;:::i;:::-;29760:77;-1:-1:-1;;;;;;29856:14:52;;;29852:224;;29936:10;29917:6;29924:1;29917:9;;;;;;;;:::i;:::-;;;;;;;:16;;;:29;;;;:::i;:::-;29890:14;29905:1;29890:17;;;;;;;;:::i;:::-;;;;;;;;:24;;;:56;;;;;-1:-1:-1;;;;;29890:56:52;;;;;-1:-1:-1;;;;;29890:56:52;;;;;;29964:52;29991:6;29998:1;29991:9;;;;;;;;:::i;:::-;;;;;;;:12;;;30005:10;-1:-1:-1;;;;;29964:52:52;:26;:52::i;:::-;30034:27;30051:10;30034:27;;:::i;:::-;;;29852:224;-1:-1:-1;29741:3:52;;29718:368;;;;29213:879;;;;;;29086:1006;;;;;:::o;30793:904::-;30900:22;30934:20;30957:14;30934:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;30934:37:52;;;;;;;;-1:-1:-1;;;30934:37:52;;;;;;;;;;;;;;;;;;;;;;;;;31014:18;31035:28;31068:122;31103:6;31138:16;31123:12;:31;;;;:::i;31068:122::-;31013:177;;;;;;31201:26;31249:13;31230:16;:32;;;;:::i;:::-;-1:-1:-1;;;;;31201:61:52;;;31273:9;31285:6;:13;31273:25;;31313:9;31308:383;31328:1;31324;:5;31308:383;;;31350:19;31418:11;-1:-1:-1;;;;;31379:50:52;31400:12;31413:1;31400:15;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;31379:36:52;:18;:36;;;;:::i;:::-;:50;;;;:::i;:::-;31350:80;-1:-1:-1;;;;;;31449:16:52;;;31445:236;;31531:12;31512:6;31519:1;31512:9;;;;;;;;:::i;:::-;;;;;;;:16;;;:31;;;;:::i;:::-;31485:14;31500:1;31485:17;;;;;;;;:::i;:::-;;;;;;;;;;:58;;-1:-1:-1;;;;;31485:58:52;;;;-1:-1:-1;;;31485:58:52;-1:-1:-1;;;;;31485:58:52;;;;;;;;;31561:31;31580:12;31561:31;;:::i;:::-;;;31610:56;31639:6;31646:1;31639:9;;;;;;;;:::i;:::-;;;;;;;:12;;;31653;-1:-1:-1;;;;;31610:56:52;:28;:56::i;:::-;;31445:236;-1:-1:-1;31331:3:52;;31308:383;;;;30924:773;;;;;30793:904;;;;;:::o;9163:206:24:-;-1:-1:-1;;;;;9233:21:24;;9229:89;;9277:30;;;;;9304:1;9277:30;;;26186:74:57;26159:18;;9277:30:24;26040:226:57;9229:89:24;9327:35;9335:7;9352:1;9356:5;9327:7;:35::i;27135:1258:52:-;27430:20;;27485:12;;27267:18;;;;27324:28;;;;27485:12;27522:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27522:17:52;;27507:32;;27577:3;27564:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27564:17:52;;27549:32;;27597:9;27592:795;27612:3;27608:1;:7;27592:795;;;27636:27;27666:5;27672:1;27666:8;;;;;;;;:::i;:::-;;;;;;;:15;;;-1:-1:-1;;;;;27636:45:52;;;27695:27;27740:1;27725:12;:16;:82;;27806:1;27725:82;;;27791:12;27772:5;27778:1;27772:8;;;;;;;;:::i;:::-;;;;;;;:15;;;-1:-1:-1;;;;;27764:24:52;27744:17;:44;;;;:::i;:::-;:59;;;;:::i;:::-;27695:112;;27848:19;27826;:41;27822:555;;;27931:12;27946:41;27968:19;27946;:41;:::i;:::-;27931:56;-1:-1:-1;28005:27:52;27931:56;28005:27;;:::i;:::-;;;28075:4;28050:12;28063:1;28050:15;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;28050:30:52;;;-1:-1:-1;;;;;28050:30:52;;;;;27869:226;27822:555;;;28127:19;28105;:41;28101:276;;;28212:12;28227:41;28249:19;28227;:41;:::i;:::-;28212:56;-1:-1:-1;28286:28:52;28212:56;28286:28;;:::i;:::-;;;28357:4;28332:12;28345:1;28332:15;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;28332:30:52;;;-1:-1:-1;;;;;28332:30:52;;;;;28148:229;28101:276;-1:-1:-1;;27617:3:52;;27592:795;;;;27397:996;;27135:1258;;;;;;;:::o;4578:312:23:-;4658:4;-1:-1:-1;;;;;4667:6:23;4650:23;;;:120;;;4764:6;-1:-1:-1;;;;;4728:42:23;:32;811:66:5;1519:53;-1:-1:-1;;;;;1519:53:5;;1441:138;4728:32:23;-1:-1:-1;;;;;4728:42:23;;;4650:120;4633:251;;;4844:29;;;;;;;;;;;;;;7001:97:52;3820:25;3272:16:21;3283:4;3272:10;:16::i;6032:538:23:-;6149:17;-1:-1:-1;;;;;6131:50:23;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6131:52:23;;;;;;;;-1:-1:-1;;6131:52:23;;;;;;;;;;;;:::i;:::-;;;6127:437;;6493:60;;;;;-1:-1:-1;;;;;26204:55:57;;6493:60:23;;;26186:74:57;26159:18;;6493:60:23;26040:226:57;6127:437:23;811:66:5;6225:40:23;;6221:120;;6292:34;;;;;;;;689:25:57;;;662:18;;6292:34:23;543:177:57;6221:120:23;6354:54;6384:17;6403:4;6354:29;:54::i;5007:213::-;5081:4;-1:-1:-1;;;;;5090:6:23;5073:23;;5069:145;;5174:29;;;;;;;;;;;;;;6722:210:51;6826:28;;;6785:17;6826:28;;;:20;:28;;;;;;6868:6;;;6864:32;;6883:13;;;;;;;;;;;;;;6864:32;6913:5;6919;6923:1;6919;:5;:::i;:::-;6913:12;;;;;;;;:::i;:::-;;;;;;;;6906:19;;6804:128;6722:210;;;:::o;5865:372:53:-;6027:32;;;5940:16;6027:32;;;:24;:32;;;;;;2359:21;;6027:32;;6023:68;;;6068:23;;;;;;;;;;;;;;6023:68;1785:3;6101:31;;6142:39;6154:6;6162;6170:10;6142:11;:39::i;:::-;6191:32;;;;;;;;6226:4;6191:24;;;:32;;;;;:39;;-1:-1:-1;;6191:39:53;;;;;;;-1:-1:-1;5865:372:53;:::o;3132:138::-;3170:12;3184:26;1617:42;-1:-1:-1;;;;;3229:32:53;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3222:41;;;;3132:138;;:::o;3499:304::-;3550:5;3596:13;3613:3;3596:20;3592:34;;-1:-1:-1;3625:1:53;;3499:304::o;3592:34::-;3672:13;3689:5;3672:22;3668:36;;-1:-1:-1;3703:1:53;;3499:304::o;3668:36::-;3745:13;3762:5;3745:22;3741:36;;-1:-1:-1;3776:1:53;;3499:304::o;3741:36::-;-1:-1:-1;3795:1:53;;3499:304::o;3170:176:26:-;1979:19;:17;:19::i;:::-;1270:23;3288:16;;-1:-1:-1;;3288:16:26::1;3300:4;3288:16;::::0;;3319:20:::1;966:10:25::0;3326:12:26::1;887:96:25::0;7187:89:52;3293:32;3272:16:21;3283:4;3272:10;:16::i;7372:284:52:-;3454:29;3272:16:21;3283:4;3272:10;:16::i;:::-;11416:21:53;;;7528:1:52::1;11416:21:53::0;;;2359;11416;;;;;:26;;;;;;7481:48:52::1;7477:81;;;7538:20;;;;;;;;;;;;;;7477:81;11601:32:53::0;;;11523:4;11601:32;;;:24;:32;;;;;;;;7568:81:52::1;;;7629:20;;;;;;;;;;;;;;15430:135:20::0;15500:4;15523:35;15531:3;15551:5;15523:7;:35::i;9071:205:22:-;9129:30;;3147:66;9186:27;8819:122;2970:67:23;6929:20:22;:18;:20::i;2263:147:24:-;6929:20:22;:18;:20::i;:::-;2365:38:24::1;2388:5;2395:7;2365:22;:38::i;6766:318:21:-:0;3001:28;6849:30;6946:18;6959:4;4872:7;4967:14;;;3001:28;4967:14;;;;;:24;;;;4807:191;6946:18;6974:8;:14;;;;;;;;;;;:24;;:36;;;7025:52;6918:46;;-1:-1:-1;7001:9:21;;6918:46;;6983:4;;7025:52;;6974:8;7025:52;6839:245;;6766:318;;:::o;9919:175:53:-;9990:44;;;;;24943:18:57;24931:31;;9990:44:53;;;24913:50:57;9975:12:53;;1617:42;;9990:36;;24886:18:57;;9990:44:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9975:59;;10049:7;10044:43;;10065:22;;-1:-1:-1;;;10065:22:53;;;;;;;;;;;7281:86:52;3375:30;3272:16:21;3283:4;3272:10;:16::i;10880:487:24:-;2064:20;-1:-1:-1;;;;;11045:19:24;;11041:89;;11087:32;;;;;11116:1;11087:32;;;26186:74:57;26159:18;;11087:32:24;26040:226:57;11041:89:24;-1:-1:-1;;;;;11143:21:24;;11139:90;;11187:31;;;;;11215:1;11187:31;;;26186:74:57;26159:18;;11187:31:24;26040:226:57;11139:90:24;-1:-1:-1;;;;;11238:20:24;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11285:76;;;;11335:7;-1:-1:-1;;;;;11319:31:24;11328:5;-1:-1:-1;;;;;11319:31:24;;11344:5;11319:31;;;;689:25:57;;677:2;662:18;;543:177;11319:31:24;;;;;;;;11285:76;10978:389;10880:487;;;;:::o;4429:197:21:-;3857:4;3949:14;;;3001:28;3949:14;;;;;;;;-1:-1:-1;;;;;3949:31:21;;;;;;;;;;;;4512:108;;4562:47;;;;;-1:-1:-1;;;;;27524:55:57;;4562:47:21;;;27506:74:57;27596:18;;;27589:34;;;27479:18;;4562:47:21;27332:297:57;7124:1170:24;2064:20;-1:-1:-1;;;;;7266:18:24;;7262:546;;7420:5;7402:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7262:546:24;;-1:-1:-1;7262:546:24;;-1:-1:-1;;;;;7478:17:24;;7456:19;7478:17;;;;;;;;;;;7513:19;;;7509:115;;;7559:50;;;;;-1:-1:-1;;;;;26491:55:57;;7559:50:24;;;26473:74:57;26563:18;;;26556:34;;;26606:18;;;26599:34;;;26446:18;;7559:50:24;26271:368:57;7509:115:24;-1:-1:-1;;;;;7744:17:24;;:11;:17;;;;;;;;;;7764:19;;;;7744:39;;7262:546;-1:-1:-1;;;;;7822:16:24;;7818:429;;7985:14;;;:23;;;;;;;7818:429;;;-1:-1:-1;;;;;8198:15:24;;:11;:15;;;;;;;;;;:24;;;;;;7818:429;8277:2;-1:-1:-1;;;;;8262:25:24;8271:4;-1:-1:-1;;;;;8262:25:24;;8281:5;8262:25;;;;689::57;;677:2;662:18;;543:177;8262:25:24;;;;;;;;7199:1095;7124:1170;;;:::o;2497:406:20:-;2560:4;5197:21;;;:14;;;:21;;;;;;2576:321;;-1:-1:-1;2618:23:20;;;;;;;;:11;:23;;;;;;;;;;;;;2800:18;;2776:21;;;:14;;;:21;;;;;;:42;;;;2832:11;;2576:321;-1:-1:-1;2881:5:20;2874:12;;6418:109;6474:16;6509:3;:11;;6502:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6418:109;;;:::o;2909:126:26:-;1270:23;2625:9;;;2967:62;;3003:15;;;;;;;;;;;;;;4214:198:53;4297:55;;;;;24943:18:57;24931:31;;4297:55:53;;;24913:50:57;4282:12:53;;1617:42;;4297:32;;4337:6;;24886:18:57;;4297:55:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4282:70;;4367:7;4362:43;;4383:22;;-1:-1:-1;;;4383:22:53;;;;;;;;;;;4792:770;4990:21;;;4861:16;4990:21;;;2359;4990;;;;;;;;5021:63;;;;;;;;;;;;;;;;;;;;;;;;;;;4990:21;5124:55;;5120:91;;5188:23;;;;;;;;;;;;;;5120:91;5315:93;5327:18;:25;;;5354:18;:23;;;1720:3;5315:11;:93::i;:::-;5302:106;;5478:18;:23;;;5504:1;5478:27;;;;:::i;:::-;5453:52;;;;;;;;;;;;;;;;5516:39;5528:6;5536;5544:10;5516:11;:39::i;:::-;4879:683;;;4792:770;;;;:::o;2264:344:5:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:5;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;6995:225:53:-;7098:62;;;;;28013:18:57;28001:31;;7098:62:53;;;27983:50:57;28049:18;;;28042:34;;;28124:4;28112:17;;28092:18;;;28085:45;7083:12:53;;1617:42;;7098:34;;27956:18:57;;7098:62:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7083:77;;7175:7;7170:43;;7191:22;;-1:-1:-1;;;7191:22:53;;;;;;;;;;;3071:1368:20;3137:4;3266:21;;;:14;;;:21;;;;;;3302:13;;3298:1135;;3669:18;3690:12;3701:1;3690:8;:12;:::i;:::-;3736:18;;3669:33;;-1:-1:-1;3716:17:20;;3736:22;;3757:1;;3736:22;:::i;:::-;3716:42;;3791:9;3777:10;:23;3773:378;;3820:17;3840:3;:11;;3852:9;3840:22;;;;;;;;:::i;:::-;;;;;;;;;3820:42;;3987:9;3961:3;:11;;3973:10;3961:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;4100:25;;;:14;;;:25;;;;;:36;;;3773:378;4229:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4332:3;:14;;:21;4347:5;4332:21;;;;;;;;;;;4325:28;;;4375:4;4368:11;;;;;;;7082:141:22;7149:17;:15;:17::i;:::-;7144:73;;7189:17;;;;;;;;;;;;;;2416:216:24;6929:20:22;:18;:20::i;:::-;2064::24;2581:7;:15:::1;2591:5:::0;2581:7;:15:::1;:::i;:::-;-1:-1:-1::0;2606:9:24::1;::::0;::::1;:19;2618:7:::0;2606:9;:19:::1;:::i;1671:281:5:-:0;1748:17;-1:-1:-1;;;;;1748:29:5;;1781:1;1748:34;1744:119;;1805:47;;;;;-1:-1:-1;;;;;26204:55:57;;1805:47:5;;;26186:74:57;26159:18;;1805:47:5;26040:226:57;1744:119:5;811:66;1872:73;;-1:-1:-1;;1872:73:5;-1:-1:-1;;;;;1872:73:5;;;;;;;;;;1671:281::o;3916:253:10:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:10;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:10:o;6113:122:5:-;6163:9;:13;6159:70;;6199:19;;;;;;;;;;;;;;8485:120:22;8535:4;8558:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8558:40:22;;;;;;-1:-1:-1;8485:120:22:o;4437:582:10:-;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:10;;;:23;4857:49;4853:119;;;4933:24;;;;;-1:-1:-1;;;;;26204:55:57;;4933:24:10;;;26186:74:57;26159:18;;4933:24:10;26040:226:57;4853:119:10;-1:-1:-1;4992:10:10;4985:17;;5559:434;5690:17;;:21;5686:301;;5894:10;5888:17;5881:4;5869:10;5865:21;5858:48;5686:301;5957:19;;;;;;;;;;;;;;14:332:57;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;725:477;874:2;863:9;856:21;837:4;906:6;900:13;949:6;944:2;933:9;929:18;922:34;1008:6;1003:2;995:6;991:15;986:2;975:9;971:18;965:50;1064:1;1059:2;1050:6;1039:9;1035:22;1031:31;1024:42;1193:2;-1:-1:-1;;1118:2:57;1110:6;1106:15;1102:88;1091:9;1087:104;1083:113;1075:121;;;725:477;;;;:::o;1207:154::-;-1:-1:-1;;;;;1286:5:57;1282:54;1275:5;1272:65;1262:93;;1351:1;1348;1341:12;1366:367;1434:6;1442;1495:2;1483:9;1474:7;1470:23;1466:32;1463:52;;;1511:1;1508;1501:12;1463:52;1550:9;1537:23;1569:31;1594:5;1569:31;:::i;:::-;1619:5;1697:2;1682:18;;;;1669:32;;-1:-1:-1;;;1366:367:57:o;1937:184::-;-1:-1:-1;;;1986:1:57;1979:88;2086:4;2083:1;2076:15;2110:4;2107:1;2100:15;2126:334;2197:2;2191:9;2253:2;2243:13;;-1:-1:-1;;2239:86:57;2227:99;;2356:18;2341:34;;2377:22;;;2338:62;2335:88;;;2403:18;;:::i;:::-;2439:2;2432:22;2126:334;;-1:-1:-1;2126:334:57:o;2465:129::-;2550:18;2543:5;2539:30;2532:5;2529:41;2519:69;;2584:1;2581;2574:12;2599:794;2652:5;2705:3;2698:4;2690:6;2686:17;2682:27;2672:55;;2723:1;2720;2713:12;2672:55;2763:6;2750:20;2793:18;2785:6;2782:30;2779:56;;;2815:18;;:::i;:::-;2861:6;2858:1;2854:14;2888:30;2912:4;2908:2;2904:13;2888:30;:::i;:::-;2954:19;;;2998:4;3030:15;;;3026:26;;;2989:14;;;;3064:15;;;3061:35;;;3092:1;3089;3082:12;3061:35;3128:4;3120:6;3116:17;3105:28;;3142:220;3158:6;3153:3;3150:15;3142:220;;;3240:3;3227:17;3257:30;3281:5;3257:30;:::i;:::-;3300:18;;3347:4;3175:14;;;;3338;;;;3142:220;;;3380:7;2599:794;-1:-1:-1;;;;;;2599:794:57:o;3398:503::-;3488:6;3496;3549:2;3537:9;3528:7;3524:23;3520:32;3517:52;;;3565:1;3562;3555:12;3517:52;3605:9;3592:23;3638:18;3630:6;3627:30;3624:50;;;3670:1;3667;3660:12;3624:50;3693:60;3745:7;3736:6;3725:9;3721:22;3693:60;:::i;:::-;3683:70;;;3803:2;3792:9;3788:18;3775:32;3847:4;3840:5;3836:16;3829:5;3826:27;3816:55;;3867:1;3864;3857:12;3816:55;3890:5;3880:15;;;3398:503;;;;;:::o;3906:247::-;3965:6;4018:2;4006:9;3997:7;3993:23;3989:32;3986:52;;;4034:1;4031;4024:12;3986:52;4073:9;4060:23;4092:31;4117:5;4092:31;:::i;4158:970::-;4412:2;4424:21;;;4494:13;;4397:18;;;4516:22;;;4364:4;;4595:15;;;4569:2;4554:18;;;4364:4;4638:464;4652:6;4649:1;4646:13;4638:464;;;4717:6;4711:13;-1:-1:-1;;;;;4759:2:57;4753:9;4749:42;4744:3;4737:55;-1:-1:-1;;;;;4844:2:57;4840;4836:11;4830:18;4826:51;4821:2;4816:3;4812:12;4805:73;4936:12;4930:2;4926;4922:11;4916:18;4912:37;4907:2;4902:3;4898:12;4891:59;5012:6;5004:4;5000:2;4996:13;4990:20;4986:33;4979:4;4974:3;4970:14;4963:57;;5049:4;5044:3;5040:14;5033:21;;5089:2;5081:6;5077:15;5067:25;;4674:1;4671;4667:9;4662:14;;4638:464;;;-1:-1:-1;5119:3:57;;4158:970;-1:-1:-1;;;;;4158:970:57:o;5133:118::-;5219:5;5212:13;5205:21;5198:5;5195:32;5185:60;;5241:1;5238;5231:12;5256:382;5321:6;5329;5382:2;5370:9;5361:7;5357:23;5353:32;5350:52;;;5398:1;5395;5388:12;5350:52;5437:9;5424:23;5456:31;5481:5;5456:31;:::i;:::-;5506:5;-1:-1:-1;5563:2:57;5548:18;;5535:32;5576:30;5535:32;5576:30;:::i;5643:226::-;5702:6;5755:2;5743:9;5734:7;5730:23;5726:32;5723:52;;;5771:1;5768;5761:12;5723:52;-1:-1:-1;5816:23:57;;5643:226;-1:-1:-1;5643:226:57:o;6056:179::-;6123:20;;-1:-1:-1;;;;;6172:38:57;;6162:49;;6152:77;;6225:1;6222;6215:12;6152:77;6056:179;;;:::o;6240:319::-;6307:6;6315;6368:2;6356:9;6347:7;6343:23;6339:32;6336:52;;;6384:1;6381;6374:12;6336:52;6407:28;6425:9;6407:28;:::i;:::-;6397:38;;6485:2;6474:9;6470:18;6457:32;6498:31;6523:5;6498:31;:::i;7186:508::-;7263:6;7271;7279;7332:2;7320:9;7311:7;7307:23;7303:32;7300:52;;;7348:1;7345;7338:12;7300:52;7387:9;7374:23;7406:31;7431:5;7406:31;:::i;:::-;7456:5;-1:-1:-1;7513:2:57;7498:18;;7485:32;7526:33;7485:32;7526:33;:::i;:::-;7186:508;;7578:7;;-1:-1:-1;;;7658:2:57;7643:18;;;;7630:32;;7186:508::o;7930:256::-;7996:6;8004;8057:2;8045:9;8036:7;8032:23;8028:32;8025:52;;;8073:1;8070;8063:12;8025:52;8096:28;8114:9;8096:28;:::i;:::-;8086:38;;8143:37;8176:2;8165:9;8161:18;8143:37;:::i;:::-;8133:47;;7930:256;;;;;:::o;8191:245::-;8249:6;8302:2;8290:9;8281:7;8277:23;8273:32;8270:52;;;8318:1;8315;8308:12;8270:52;8357:9;8344:23;8376:30;8400:5;8376:30;:::i;8441:367::-;8509:6;8517;8570:2;8558:9;8549:7;8545:23;8541:32;8538:52;;;8586:1;8583;8576:12;8538:52;8631:23;;;-1:-1:-1;8730:2:57;8715:18;;8702:32;8743:33;8702:32;8743:33;:::i;9002:618::-;9188:2;9200:21;;;9270:13;;9173:18;;;9292:22;;;9140:4;;9371:15;;;9345:2;9330:18;;;9140:4;9414:180;9428:6;9425:1;9422:13;9414:180;;;9493:13;;9508:4;9489:24;9477:37;;9543:2;9569:15;;;;9534:12;;;;9450:1;9443:9;9414:180;;9625:611;9815:2;9827:21;;;9897:13;;9800:18;;;9919:22;;;9767:4;;9998:15;;;9972:2;9957:18;;;9767:4;10041:169;10055:6;10052:1;10049:13;10041:169;;;10116:13;;10104:26;;10159:2;10185:15;;;;10150:12;;;;10077:1;10070:9;10041:169;;10241:346;10324:6;10377:2;10365:9;10356:7;10352:23;10348:32;10345:52;;;10393:1;10390;10383:12;10345:52;10433:9;10420:23;10466:18;10458:6;10455:30;10452:50;;;10498:1;10495;10488:12;10452:50;10521:60;10573:7;10564:6;10553:9;10549:22;10521:60;:::i;10592:184::-;10650:6;10703:2;10691:9;10682:7;10678:23;10674:32;10671:52;;;10719:1;10716;10709:12;10671:52;10742:28;10760:9;10742:28;:::i;10781:452::-;10833:3;10871:5;10865:12;10898:6;10893:3;10886:19;10930:4;10925:3;10921:14;10914:21;;10969:4;10962:5;10958:16;10992:1;11002:206;11016:6;11013:1;11010:13;11002:206;;;11081:13;;-1:-1:-1;;;;;11077:46:57;11065:59;;11153:4;11144:14;;;;11181:17;;;;11038:1;11031:9;11002:206;;;-1:-1:-1;11224:3:57;;10781:452;-1:-1:-1;;;;10781:452:57:o;11238:665::-;-1:-1:-1;;;;;11547:6:57;11543:39;11532:9;11525:58;-1:-1:-1;;;;;11623:6:57;11619:39;11614:2;11603:9;11599:18;11592:67;11695:3;11690:2;11679:9;11675:18;11668:31;11506:4;11722:56;11773:3;11762:9;11758:19;11750:6;11722:56;:::i;:::-;11826:9;11818:6;11814:22;11809:2;11798:9;11794:18;11787:50;11854:43;11890:6;11882;11854:43;:::i;:::-;11846:51;11238:665;-1:-1:-1;;;;;;;11238:665:57:o;12223:959::-;12300:6;12308;12361:2;12349:9;12340:7;12336:23;12332:32;12329:52;;;12377:1;12374;12367:12;12329:52;12416:9;12403:23;12435:31;12460:5;12435:31;:::i;:::-;12485:5;-1:-1:-1;12541:2:57;12526:18;;12513:32;12568:18;12557:30;;12554:50;;;12600:1;12597;12590:12;12554:50;12623:22;;12676:4;12668:13;;12664:27;-1:-1:-1;12654:55:57;;12705:1;12702;12695:12;12654:55;12745:2;12732:16;12771:18;12763:6;12760:30;12757:56;;;12793:18;;:::i;:::-;12835:116;12947:2;-1:-1:-1;;12871:4:57;12863:6;12859:17;12855:90;12851:99;12835:116;:::i;:::-;12974:6;12967:5;12960:21;13022:7;13017:2;13008:6;13004:2;13000:15;12996:24;12993:37;12990:57;;;13043:1;13040;13033:12;12990:57;13098:6;13093:2;13089;13085:11;13080:2;13073:5;13069:14;13056:49;13150:1;13145:2;13136:6;13129:5;13125:18;13121:27;13114:38;13171:5;13161:15;;;;;12223:959;;;;;:::o;13484:239::-;13664:2;13649:18;;13676:41;13653:9;13699:6;13275:18;13267:5;13261:12;13257:37;13252:3;13245:50;-1:-1:-1;;;;;13348:4:57;13341:5;13337:16;13331:23;13327:56;13320:4;13315:3;13311:14;13304:80;-1:-1:-1;;;;;13437:4:57;13430:5;13426:16;13420:23;13416:56;13409:4;13404:3;13400:14;13393:80;;;13187:292;13728:386;13795:6;13803;13856:2;13844:9;13835:7;13831:23;13827:32;13824:52;;;13872:1;13869;13862:12;13824:52;13911:9;13898:23;13930:30;13954:5;13930:30;:::i;15410:272::-;15468:6;15521:2;15509:9;15500:7;15496:23;15492:32;15489:52;;;15537:1;15534;15527:12;15489:52;15576:9;15563:23;15626:6;15619:5;15615:18;15608:5;15605:29;15595:57;;15648:1;15645;15638:12;15687:645;15805:6;15813;15866:2;15854:9;15845:7;15841:23;15837:32;15834:52;;;15882:1;15879;15872:12;15834:52;15922:9;15909:23;15955:18;15947:6;15944:30;15941:50;;;15987:1;15984;15977:12;15941:50;16010:22;;16063:4;16055:13;;16051:27;-1:-1:-1;16041:55:57;;16092:1;16089;16082:12;16041:55;16132:2;16119:16;16158:18;16150:6;16147:30;16144:50;;;16190:1;16187;16180:12;16144:50;16246:7;16241:2;16233:4;16225:6;16221:17;16217:2;16213:26;16209:35;16206:48;16203:68;;;16267:1;16264;16257:12;16203:68;16298:2;16290:11;;;;;16320:6;;-1:-1:-1;15687:645:57;-1:-1:-1;;;15687:645:57:o;16530:388::-;16598:6;16606;16659:2;16647:9;16638:7;16634:23;16630:32;16627:52;;;16675:1;16672;16665:12;16627:52;16714:9;16701:23;16733:31;16758:5;16733:31;:::i;16923:675::-;17159:2;17171:21;;;17241:13;;17144:18;;;17263:22;;;17111:4;;17342:15;;;17316:2;17301:18;;;17111:4;17385:187;17399:6;17396:1;17393:13;17385:187;;;17448:42;17486:3;17477:6;17471:13;13275:18;13267:5;13261:12;13257:37;13252:3;13245:50;-1:-1:-1;;;;;13348:4:57;13341:5;13337:16;13331:23;13327:56;13320:4;13315:3;13311:14;13304:80;-1:-1:-1;;;;;13437:4:57;13430:5;13426:16;13420:23;13416:56;13409:4;13404:3;13400:14;13393:80;;;13187:292;17448:42;17559:2;17547:15;;;;;17519:4;17510:14;;;;;17421:1;17414:9;17385:187;;18089:437;18168:1;18164:12;;;;18211;;;18232:61;;18286:4;18278:6;18274:17;18264:27;;18232:61;18339:2;18331:6;18328:14;18308:18;18305:38;18302:218;;-1:-1:-1;;;18373:1:57;18366:88;18477:4;18474:1;18467:15;18505:4;18502:1;18495:15;18531:184;-1:-1:-1;;;18580:1:57;18573:88;18680:4;18677:1;18670:15;18704:4;18701:1;18694:15;18720:184;-1:-1:-1;;;18769:1:57;18762:88;18869:4;18866:1;18859:15;18893:4;18890:1;18883:15;18909:204;18947:3;18991:18;18984:5;18980:30;19034:18;19025:7;19022:31;19019:57;;19056:18;;:::i;:::-;19105:1;19092:15;;18909:204;-1:-1:-1;;18909:204:57:o;19118:218::-;-1:-1:-1;;;;;19224:34:57;;;19188;;;19184:75;;19271:36;;19268:62;;;19310:18;;:::i;19341:215::-;-1:-1:-1;;;;;19409:34:57;;;19445;;;19405:75;;19492:35;;19489:61;;;19530:18;;:::i;19561:128::-;19628:9;;;19649:11;;;19646:37;;;19663:18;;:::i;20462:176::-;20561:12;20554:20;;;20532;;;20528:47;;20587:22;;20584:48;;;20612:18;;:::i;20643:173::-;20740:12;20711:20;;;20733;;;20707:47;;20766:21;;20763:47;;;20790:18;;:::i;21146:912::-;21270:6;21278;21286;21294;21302;21310;21318;21371:3;21359:9;21350:7;21346:23;21342:33;21339:53;;;21388:1;21385;21378:12;21339:53;-1:-1:-1;;21433:16:57;;21539:2;21524:18;;21518:25;21635:2;21620:18;;21614:25;21731:2;21716:18;;21710:25;21827:3;21812:19;;21806:26;21924:3;21909:19;;21903:26;22021:3;22006:19;;;22000:26;21433:16;;21518:25;;-1:-1:-1;21614:25:57;;21710;;-1:-1:-1;21806:26:57;;-1:-1:-1;21903:26:57;-1:-1:-1;22000:26:57;;-1:-1:-1;21146:912:57;-1:-1:-1;21146:912:57:o;22063:125::-;22128:9;;;22149:10;;;22146:36;;;22162:18;;:::i;22193:168::-;22266:9;;;22297;;22314:15;;;22308:22;;22294:37;22284:71;;22335:18;;:::i;22366:184::-;-1:-1:-1;;;22415:1:57;22408:88;22515:4;22512:1;22505:15;22539:4;22536:1;22529:15;22555:120;22595:1;22621;22611:35;;22626:18;;:::i;:::-;-1:-1:-1;22660:9:57;;22555:120::o;22933:191::-;23036:18;23001:26;;;23029;;;22997:59;;23068:27;;23065:53;;;23098:18;;:::i;24120:241::-;24176:6;24229:2;24217:9;24208:7;24204:23;24200:32;24197:52;;;24245:1;24242;24235:12;24197:52;24284:9;24271:23;24303:28;24325:5;24303:28;:::i;24580:184::-;-1:-1:-1;;;24629:1:57;24622:88;24729:4;24726:1;24719:15;24753:4;24750:1;24743:15;25471:245;25538:6;25591:2;25579:9;25570:7;25566:23;25562:32;25559:52;;;25607:1;25604;25597:12;25559:52;25639:9;25633:16;25658:28;25680:5;25658:28;:::i;25721:151::-;25811:4;25804:12;;;25790;;;25786:31;;25829:14;;25826:40;;;25846:18;;:::i;25877:158::-;25970:6;25963:14;;;25947;;;25943:35;;25990:16;;25987:42;;;26009:18;;:::i;26644:112::-;26676:1;26702;26692:35;;26707:18;;:::i;:::-;-1:-1:-1;26741:9:57;;26644:112::o;26761:184::-;26831:6;26884:2;26872:9;26863:7;26859:23;26855:32;26852:52;;;26900:1;26897;26890:12;26852:52;-1:-1:-1;26923:16:57;;26761:184;-1:-1:-1;26761:184:57:o;26950:377::-;27025:6;27033;27086:2;27074:9;27065:7;27061:23;27057:32;27054:52;;;27102:1;27099;27092:12;27054:52;27134:9;27128:16;27153:30;27177:5;27153:30;:::i;:::-;27252:2;27237:18;;27231:25;27202:5;;-1:-1:-1;27265:30:57;27231:25;27265:30;:::i;27634:148::-;27722:4;27701:12;;;27715;;;27697:31;;27740:13;;27737:39;;;27756:18;;:::i;28267:518::-;28369:2;28364:3;28361:11;28358:421;;;28405:5;28402:1;28395:16;28449:4;28446:1;28436:18;28519:2;28507:10;28503:19;28500:1;28496:27;28490:4;28486:38;28555:4;28543:10;28540:20;28537:47;;;-1:-1:-1;28578:4:57;28537:47;28633:2;28628:3;28624:12;28621:1;28617:20;28611:4;28607:31;28597:41;;28688:81;28706:2;28699:5;28696:13;28688:81;;;28765:1;28751:16;;28732:1;28721:13;28688:81;;28961:1358;29087:3;29081:10;29114:18;29106:6;29103:30;29100:56;;;29136:18;;:::i;:::-;29165:97;29255:6;29215:38;29247:4;29241:11;29215:38;:::i;:::-;29209:4;29165:97;:::i;:::-;29311:4;29342:2;29331:14;;29359:1;29354:708;;;;30106:1;30123:6;30120:89;;;-1:-1:-1;30175:19:57;;;30169:26;30120:89;-1:-1:-1;;28918:1:57;28914:11;;;28910:24;28906:29;28896:40;28942:1;28938:11;;;28893:57;30222:81;;29324:989;;29354:708;28214:1;28207:14;;;28251:4;28238:18;;-1:-1:-1;;29390:79:57;;;29567:222;29581:7;29578:1;29575:14;29567:222;;;29663:19;;;29657:26;29642:42;;29770:4;29755:20;;;;29723:1;29711:14;;;;29597:12;29567:222;;;29571:3;29817:6;29808:7;29805:19;29802:201;;;29878:19;;;29872:26;-1:-1:-1;;29961:1:57;29957:14;;;29973:3;29953:24;29949:37;29945:42;29930:58;29915:74;;29802:201;-1:-1:-1;;;;30049:1:57;30033:14;;;30029:22;30016:36;;-1:-1:-1;28961:1358:57:o;30324:301::-;30453:3;30491:6;30485:13;30537:6;30530:4;30522:6;30518:17;30513:3;30507:37;30599:1;30563:16;;30588:13;;;-1:-1:-1;30563:16:57;30324:301;-1:-1:-1;30324:301:57:o",
        "linkReferences": {},
        "immutableReferences": {
            "7907": [
                {
                    "start": 20424,
                    "length": 32
                },
                {
                    "start": 20465,
                    "length": 32
                },
                {
                    "start": 20931,
                    "length": 32
                }
            ]
        }
    },
    "methodIdentifiers": {
        "DEFAULT_ADMIN_ROLE()": "a217fddf",
        "MINIMUM_CONTRIBUTE_THRESHOLD()": "86bb1d6e",
        "ROLE_ADD_NODE()": "22fd4ad5",
        "ROLE_DISABLE_NODE()": "e8ce8922",
        "ROLE_FEE_CLAIMER()": "06c7dbc4",
        "ROLE_FEE_EXEMPTION()": "a30fefe1",
        "ROLE_FEE_SETTER()": "1b8e0db6",
        "ROLE_PAUSE()": "4ff0241a",
        "ROLE_REMOVE_NODE()": "5838b2fe",
        "ROLE_UPDATE_WEIGHTS()": "63311d3d",
        "ROLE_UPGRADE()": "2a7d8acb",
        "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc",
        "addNode(uint64)": "337b2b6e",
        "allowance(address,address)": "dd62ed3e",
        "approve(address,uint256)": "095ea7b3",
        "balanceOf(address)": "70a08231",
        "batchDepositRequests(uint256)": "77654f34",
        "batchSubmissions(uint256)": "78f908e1",
        "batchWithdrawRequests(uint256)": "4beae6e3",
        "calculateStakeDeltas(uint96)": "4a797bd5",
        "cancelUnlockRequest(uint256)": "1610247b",
        "claimProtocolFees(address)": "69ce6d47",
        "compound(uint64[])": "cf5e2743",
        "contributeToPool(address)": "a0e3cdd6",
        "convertToAssets(uint96)": "fb9848e4",
        "convertToShares(uint96)": "df235fe6",
        "currentBatchId()": "0a763da1",
        "decimals()": "313ce567",
        "deposit(uint96,address)": "1c3477dd",
        "disableNode(uint64)": "d8a9fe50",
        "getAllUserUnlockRequests(address)": "0b52f7b1",
        "getDelegator(uint64,address)": "573c1ce0",
        "getExitFeeBips()": "fde73f7d",
        "getManagementFeeBips()": "bf7df8e0",
        "getMintableProtocolShares()": "615bfc45",
        "getNodeIds()": "3e367afa",
        "getNodes()": "e29581aa",
        "getRoleAdmin(bytes32)": "248a9ca3",
        "getWithdrawIds(uint64)": "3b5b4765",
        "getWithdrawIdsSize(uint64)": "7a6d59d5",
        "grantRole(bytes32,address)": "2f2ff15d",
        "hasRole(bytes32,address)": "91d14854",
        "initialize(address)": "c4d66de8",
        "isExitFeeExempt(address)": "0bf14d9b",
        "isForceWithdrawPending(uint64)": "2584601f",
        "isNodeDisabled(uint64)": "d6531de5",
        "name()": "06fdde03",
        "nodes(uint256)": "1c53c280",
        "pause()": "8456cb59",
        "paused()": "5c975abb",
        "proxiableUUID()": "52d1902d",
        "redeem(uint256,address)": "7bde82f2",
        "removeNode(uint64)": "aedf6d51",
        "renounceRole(bytes32,address)": "36568abe",
        "requestUnlock(uint96,uint96)": "24f67e18",
        "revokeRole(bytes32,address)": "d547741f",
        "setExitFee(uint16)": "f75b0404",
        "setExitFeeExemption(address,bool)": "15230e80",
        "setManagementFee(uint16)": "8dd09af3",
        "submitBatch()": "46115383",
        "supportsInterface(bytes4)": "01ffc9a7",
        "sweep(uint64[],uint8)": "0a9f9ee2",
        "sweepForced(uint64[])": "43abcf32",
        "symbol()": "95d89b41",
        "totalPooled()": "6ec21cc8",
        "totalShares()": "3a98ef39",
        "totalSupply()": "18160ddd",
        "totalWeight()": "96c82e57",
        "transfer(address,uint256)": "a9059cbb",
        "transferFrom(address,address,uint256)": "23b872dd",
        "unbondDisableNode(uint64)": "733897b7",
        "unpause()": "3f4ba83a",
        "updateWeights((uint64,uint96,bool)[])": "a4b0b5a3",
        "upgradeToAndCall(address,bytes)": "4f1ef286",
        "userUnlockRequests(address,uint256)": "fd012e34",
        "viewNodeByNodeId(uint64)": "540a26f3"
    },
    "rawMetadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ActiveNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BatchNotSubmitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CancellationWindowClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DepositOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DisabledNode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DuplicateNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyBatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientPendingWithdrawals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxPendingWithdrawals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumBatchDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumContributeThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MinimumUnlock\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoChange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingWithdrawals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PrecompileCallFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawDelay\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroTotalWeight\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"}],\"name\":\"Contribution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"ExitFeeAdjusted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"managementFeeShares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"exitFeeShares\",\"type\":\"uint256\"}],\"name\":\"FeesWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"ManagementFeeAdjusted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"NodeDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newWeight\",\"type\":\"uint256\"}],\"name\":\"NodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockId\",\"type\":\"uint256\"}],\"name\":\"UnlockCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnlockRedeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unlockId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"spotValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"toll\",\"type\":\"uint256\"}],\"name\":\"UnlockRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_CONTRIBUTE_THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_ADD_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_DISABLE_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_FEE_CLAIMER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_FEE_EXEMPTION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_FEE_SETTER\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_PAUSE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_REMOVE_NODE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_UPDATE_WEIGHTS\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ROLE_UPGRADE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"addNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchDepositRequests\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"assets\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchSubmissions\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"submissionEpoch\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"activationEpoch\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"batchWithdrawRequests\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"assets\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"newTotalStaked\",\"type\":\"uint96\"}],\"name\":\"calculateStakeDeltas\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"totalExcess\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"totalDeficit\",\"type\":\"uint96\"},{\"internalType\":\"uint96[]\",\"name\":\"nodeExcesses\",\"type\":\"uint96[]\"},{\"internalType\":\"uint96[]\",\"name\":\"nodeDeficits\",\"type\":\"uint96[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"unlockIndex\",\"type\":\"uint256\"}],\"name\":\"cancelUnlockRequest\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"claimProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"nodeIds\",\"type\":\"uint64[]\"}],\"name\":\"compound\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"benefactor\",\"type\":\"address\"}],\"name\":\"contributeToPool\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"assets\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"assets\",\"type\":\"uint96\"}],\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentBatchId\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"minShares\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"disableNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getAllUserUnlockRequests\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"spotValue\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"batchId\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"exitFeeInBips\",\"type\":\"uint16\"}],\"internalType\":\"struct StakedMonad.UnlockRequest[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"val_id\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\"}],\"name\":\"getDelegator\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"acc_reward_per_token\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delta_stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"next_delta_stake\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"delta_epoch\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"next_delta_epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExitFeeBips\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagementFeeBips\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMintableProtocolShares\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodeIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"weight\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"staked\",\"type\":\"uint96\"}],\"internalType\":\"struct Registry.Node[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"val_id\",\"type\":\"uint64\"}],\"name\":\"getWithdrawIds\",\"outputs\":[{\"internalType\":\"uint8[]\",\"name\":\"\",\"type\":\"uint8[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"val_id\",\"type\":\"uint64\"}],\"name\":\"getWithdrawIdsSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isExitFeeExempt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"val_id\",\"type\":\"uint64\"}],\"name\":\"isForceWithdrawPending\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"isNodeDisabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nodes\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"weight\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"staked\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"unlockIndex\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"assets\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"removeNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"minSpotValue\",\"type\":\"uint96\"}],\"name\":\"requestUnlock\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"spotValue\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newFee\",\"type\":\"uint16\"}],\"name\":\"setExitFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"name\":\"setExitFeeExemption\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"newFee\",\"type\":\"uint16\"}],\"name\":\"setManagementFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"submitBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"nodeIds\",\"type\":\"uint64[]\"},{\"internalType\":\"uint8\",\"name\":\"maxWithdrawsPerNode\",\"type\":\"uint8\"}],\"name\":\"sweep\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64[]\",\"name\":\"nodeIds\",\"type\":\"uint64[]\"}],\"name\":\"sweepForced\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalPooled\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalWeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"unbondDisableNode\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"delta\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"isIncreasing\",\"type\":\"bool\"}],\"internalType\":\"struct Registry.WeightDelta[]\",\"name\":\"weightDeltas\",\"type\":\"tuple[]\"}],\"name\":\"updateWeights\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"userUnlockRequests\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"shares\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"spotValue\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"batchId\",\"type\":\"uint40\"},{\"internalType\":\"uint16\",\"name\":\"exitFeeInBips\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nodeId\",\"type\":\"uint64\"}],\"name\":\"viewNodeByNodeId\",\"outputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"id\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"weight\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"staked\",\"type\":\"uint96\"}],\"internalType\":\"struct Registry.Node\",\"name\":\"node\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"Brandon Mino <https://github.com/bmino>\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call:   - if using `revokeRole`, it is the admin role bearer   - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addNode(uint64)\":{\"details\":\"Cannot add a node that already exists\"},\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"cancelUnlockRequest(uint256)\":{\"details\":\"Order of unlock requests is not guaranteed between cancellations\"},\"compound(uint64[])\":{\"details\":\"Specifying an invalid node id will revert\"},\"contributeToPool(address)\":{\"details\":\"Restricts usage when total pooled is below a threshold to prevent share inflation attacks\",\"params\":{\"benefactor\":\"- Address used for tracking who is responsible for the contribution\"}},\"convertToAssets(uint96)\":{\"details\":\"`totalShares()` accounts for both minted and mintable shares\"},\"convertToShares(uint96)\":{\"details\":\"`totalShares()` accounts for both minted and mintable shares\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"deposit(uint96,address)\":{\"params\":{\"minShares\":\"- Minimum quantity of shares that must be minted to prevent front running\",\"receiver\":\"- Recipient of the minted shares\"},\"returns\":{\"shares\":\"- Quantity of shares minted\"}},\"disableNode(uint64)\":{\"details\":\"Intended to prepare a node for removal via `Registry.removeNode()`Once disabled, node cannot be assigned a weight\"},\"getNodeIds()\":{\"details\":\"The order is not guaranteed to remain constant between callsThe order is not guaranteed to correlate to a position in `getNodes()`\"},\"getNodes()\":{\"details\":\"The order is not guaranteed to remain constant between calls\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getWithdrawIds(uint64)\":{\"details\":\"Will not include FORCED_WITHDRAW_ID even if present\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"details\":\"It is recommended to transfer a small amount of MON when initializing to mitigate a rare DOS when:      1) All users make unlock requests      2) Batch is submitted, withdraw delay completes, and all sweep() calls are performed      3) Some dust is still pending undelegation      4) All unlock requests are redeemed\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"redeem(uint256,address)\":{\"details\":\"Might need to first call `sweep()` to make funds availableDeletes the caller's unlock request\"},\"removeNode(uint64)\":{\"details\":\"Intended to prevent storage bloat\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"submitBatch()\":{\"details\":\"Might need to first call `sweep()`For a net ingress batch, the amount bonded may be less than the requested amount due to integer arithmetic.      The remaining amount, or 'dust' is scheduled to be bonded in the next batch.For a net egress batch, the amount unbonded may be less than the requested amount due to integer arithmetic.      The remaining amount, or 'dust' is scheduled to be unbonded in the next batch.      In this scenario, `totalPooled` is temporarily increased by this dust amount to account for the assets      that were requested to be unbonded but were not unbonded from nodes, ensuring they remain trackable      in the pool for the next attempt.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"sweep(uint64[],uint8)\":{\"details\":\"Required number of epochs must have passed since calling `undelegate`All withdrawals must be valid and complete or none will\"},\"sweepForced(uint64[])\":{\"details\":\"Required number of epochs must have passed since calling `undelegate`All withdrawals must be valid and complete or none will\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"unbondDisableNode(uint64)\":{\"details\":\"This function is for emergency/cleanup purposes and does not depend on the standard batching processDoes NOT decrease `totalPooled` because funds never leave the protocol's custodyFunds will be scheduled for redelegation during `sweepForced()`\",\"params\":{\"nodeId\":\"- ID of the disabled node to unbond from\"}},\"updateWeights((uint64,uint96,bool)[])\":{\"details\":\"Cannot increase weight of a node that has been disabledDecreasing weight below 0 will not underflow and instead remains at 0Decreasing weight of a node that has been disabled is effectively a no-opUpdating a deleted or non-existent node is effectively a no-op\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"currentBatchId\":{\"details\":\"Tracks the current batch being populated. Initialized to 1\"}},\"title\":\"StakedMonad\",\"version\":1},\"userdoc\":{\"errors\":{\"ActiveNode()\":[{\"notice\":\"Thrown when trying to interact with a node that is still active (not disabled)\"}],\"BatchNotSubmitted()\":[{\"notice\":\"Thrown when trying to redeem from a batch that hasn't been submitted\"}],\"CancellationWindowClosed()\":[{\"notice\":\"Thrown when trying to cancel an unlock request outside the cancellation window\"}],\"DepositOverflow()\":[{\"notice\":\"Thrown when deposit amount exceeds uint96 maximum value\"}],\"DisabledNode()\":[{\"notice\":\"Thrown when trying to interact with a node that is disabled\"}],\"DuplicateNode()\":[{\"notice\":\"Thrown when trying to duplicate a currently existing node\"}],\"EmptyBatch()\":[{\"notice\":\"Thrown when trying to submit an empty batch (no deposits or withdrawals)\"}],\"FeeTooLarge()\":[{\"notice\":\"Thrown when trying to set a fee percentage above the maximum allowed\"}],\"InvalidNode()\":[{\"notice\":\"Thrown when trying to interact or lookup a node that does not currently exist\"}],\"MinimumBatchDelay()\":[{\"notice\":\"Thrown when trying to submit a batch before the minimum submission delay\"}],\"MinimumContributeThreshold()\":[{\"notice\":\"Thrown when trying to contribute to the protocol when sufficient TVL has not been reached\"}],\"MinimumDeposit()\":[{\"notice\":\"Thrown when minted shares would not meet the user provided threshold\"}],\"MinimumUnlock()\":[{\"notice\":\"Thrown when unlock amount would not meet the user provided threshold\"}],\"NoChange()\":[{\"notice\":\"Thrown when an action will have no effect and should fail fast\"}],\"PendingWithdrawals()\":[{\"notice\":\"Thrown when trying to remove a node while withdrawals are still pending\"}],\"TransferFailed()\":[{\"notice\":\"Thrown when a transfer of ETH fails\"}],\"WithdrawDelay()\":[{\"notice\":\"Thrown when trying to redeem from a batch that hasn't completed its withdraw delay\"}],\"ZeroTotalWeight()\":[{\"notice\":\"Thrown when total weight is zero during bonding operations\"}]},\"kind\":\"user\",\"methods\":{\"addNode(uint64)\":{\"notice\":\"Adds a new node\"},\"cancelUnlockRequest(uint256)\":{\"notice\":\"Allow user to cancel their unlock requestMost users will have 1 concurrent unlock request (`unlockIndex` == 0) but advanced users may have moreMust be done before the associated batch is submitted\"},\"compound(uint64[])\":{\"notice\":\"Claims all claimable rewards and adds them to the next batch\"},\"contributeToPool(address)\":{\"notice\":\"Allows external funds to be added without minting shares\"},\"convertToAssets(uint96)\":{\"notice\":\"Converts LST shares into MON at the current block timestampDoes not apply exit fee\"},\"convertToShares(uint96)\":{\"notice\":\"Converts MON into LST shares at the current block timestamp\"},\"deposit(uint96,address)\":{\"notice\":\"Deposit asset into the protocol and receive shares to represent your positionDeposit amount must be specified by `msg.value`\"},\"disableNode(uint64)\":{\"notice\":\"Permanently set node weight to 0\"},\"getDelegator(uint64,address)\":{\"notice\":\"Provides a view of the delegator\\u2019s stake across execution, consensus, and snapshot contexts\"},\"getMintableProtocolShares()\":{\"notice\":\"Shares that could be minted by the protocol at the current block timestamp\"},\"getNodeIds()\":{\"notice\":\"View all unique node ids in their current order\"},\"getNodes()\":{\"notice\":\"View all nodes in their current order\"},\"getWithdrawIds(uint64)\":{\"notice\":\"Converts the WithdrawIdSummary for a validator into an array of withdraw ids\"},\"nodes(uint256)\":{\"notice\":\"List of currently managed nodes. Order is NOT guaranteed to remain constant\"},\"redeem(uint256,address)\":{\"notice\":\"Step 2 of 2 in process of withdrawing assetsAssociated batch must have been submitted and the cooldown period elapsed\"},\"removeNode(uint64)\":{\"notice\":\"Removes a node from storage\"},\"submitBatch()\":{\"notice\":\"Processes deposit and withdrawal requests and allocates MON according to Registry weights\"},\"sweep(uint64[],uint8)\":{\"notice\":\"Withdraws MON from completed un-delegationsStores withdrawn funds in the contract to fund redemptions\"},\"sweepForced(uint64[])\":{\"notice\":\"Withdraws MON from completed un-delegations of disabled nodesAdds withdrawn funds into the current batch to be redelegated\"},\"totalShares()\":{\"notice\":\"Shares that could exist at the current block timestampIncludes both minted and mintable shares\"},\"totalWeight()\":{\"notice\":\"Sum of node relative weights\"},\"unbondDisableNode(uint64)\":{\"notice\":\"Forcibly unbonds funds from a disabled node\"},\"updateWeights((uint64,uint96,bool)[])\":{\"notice\":\"Modifies node weights by incrementing/decrementing\"},\"viewNodeByNodeId(uint64)\":{\"notice\":\"View a node by its unique node id\"}},\"notice\":\"Core liquid staking contract for MON, allowing users to deposit MON to receive sMON shares         Manages the lifecycle of staking, un-staking, and rewards distribution         Facilitates batch processing of deposits and withdrawals         Dynamically adjusts bonding/unbonding node allocation based on Registry weights\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/StakedMonad.sol\":\"StakedMonad\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[\":@openzeppelin-contracts-5.4.0/=dependencies/@openzeppelin-contracts-5.4.0/\",\":@openzeppelin-contracts-upgradeable-5.4.0/=dependencies/@openzeppelin-contracts-upgradeable-5.4.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.4.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.4.0/\",\":forge-std-1.10.0/=dependencies/forge-std-1.10.0/src/\",\":forge-std/=dependencies/forge-std-1.10.0/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.4.0/access/IAccessControl.sol\":{\"keccak256\":\"0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d\",\"dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL\"]},\"dependencies/@openzeppelin-contracts-5.4.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c\",\"dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz\"]},\"dependencies/@openzeppelin-contracts-5.4.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422\",\"dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza\"]},\"dependencies/@openzeppelin-contracts-5.4.0/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23\",\"dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR\"]},\"dependencies/@openzeppelin-contracts-5.4.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a\",\"dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ\"]},\"dependencies/@openzeppelin-contracts-5.4.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d\",\"dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye\"]},\"dependencies/@openzeppelin-contracts-5.4.0/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303\",\"dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV\"]},\"dependencies/@openzeppelin-contracts-5.4.0/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e\",\"dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/Address.sol\":{\"keccak256\":\"0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f\",\"dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/Arrays.sol\":{\"keccak256\":\"0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d\",\"dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/Comparators.sol\":{\"keccak256\":\"0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd\",\"dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/SlotDerivation.sol\":{\"keccak256\":\"0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2\",\"dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/math/Math.sol\":{\"keccak256\":\"0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3\",\"dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.4.0/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b\",\"dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059\",\"dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec\",\"dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0\",\"dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb\",\"dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a\",\"dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX\"]},\"src/CustomErrors.sol\":{\"keccak256\":\"0x1ba383b9bef5e696f656063cab035fb4ab64aa8897058dcf18e18d31fd6ded59\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b5a381b74add6e325972095ae4f285af900a7d014e3e01859428f11a319f631d\",\"dweb:/ipfs/QmRyADdcNPeZoupt5c2nWUj6NzRsKs7QeUCQXmVfKbXRaG\"]},\"src/Registry.sol\":{\"keccak256\":\"0x4806200e21dfc07a3c62e852f27a36098cc9fab7555d251ef80b7ea2ee011ebb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://fa94b3bdaa65513441392965f05642734d66879e589f5cfb152f83444787c8f4\",\"dweb:/ipfs/QmZ2AWdFVMFC3aDLUJywHry4Q5wUSi9Rj7WGcj8zexJJbW\"]},\"src/StakedMonad.sol\":{\"keccak256\":\"0xb8e2feafad1aae8101cc5af581388c79c1aa24ce649861ad235ae6ce8367e0d0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://472a4ffac54601615650773b6015ade125cbc916b370c71da09b78edb9e49307\",\"dweb:/ipfs/QmdLui2TnKV17sjgU5K4UgCMXBgCqZEzg2KD7LX4oppjgJ\"]},\"src/precompile/StakerUpgradeable.sol\":{\"keccak256\":\"0xf4bc7283a25072476bf615ef54decc539ea0bec2eb487bbacdab6372e53cb8bb\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a688b754762541652f7a66229db78d0bf334e7ebcceab4db64d0f41827856181\",\"dweb:/ipfs/QmWXxUCVWrXcG7qErrbuCsymUpZYVps6usNLLcYtxw5kJc\"]}},\"version\":1}",
    "metadata": {
        "compiler": {
            "version": "0.8.30+commit.73712a01"
        },
        "language": "Solidity",
        "output": {
            "abi": [
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "constructor"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "AccessControlBadConfirmation"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes32",
                            "name": "neededRole",
                            "type": "bytes32"
                        }
                    ],
                    "type": "error",
                    "name": "AccessControlUnauthorizedAccount"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ActiveNode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "target",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "AddressEmptyCode"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "BatchNotSubmitted"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "CancellationWindowClosed"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "DepositOverflow"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "DisabledNode"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "DuplicateNode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "implementation",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC1967InvalidImplementation"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ERC1967NonPayable"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "allowance",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "needed",
                            "type": "uint256"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InsufficientAllowance"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "balance",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "needed",
                            "type": "uint256"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InsufficientBalance"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "approver",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InvalidApprover"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InvalidReceiver"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InvalidSender"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        }
                    ],
                    "type": "error",
                    "name": "ERC20InvalidSpender"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "EmptyBatch"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "EnforcedPause"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ExpectedPause"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "FailedCall"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "FeeTooLarge"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "InsufficientPendingWithdrawals"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "InvalidInitialization"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "InvalidNode"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "MaxPendingWithdrawals"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "MinimumBatchDelay"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "MinimumContributeThreshold"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "MinimumDeposit"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "MinimumUnlock"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "NoChange"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "NotInitializing"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "PendingWithdrawals"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "PrecompileCallFailed"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "TransferFailed"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "UUPSUnauthorizedCallContext"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "slot",
                            "type": "bytes32"
                        }
                    ],
                    "type": "error",
                    "name": "UUPSUnsupportedProxiableUUID"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "WithdrawDelay"
                },
                {
                    "inputs": [],
                    "type": "error",
                    "name": "ZeroTotalWeight"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Approval",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "address",
                            "name": "benefactor",
                            "type": "address",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Contribution",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "newFee",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "ExitFeeAdjusted",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "managementFeeShares",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "exitFeeShares",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "FeesWithdrawn",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "version",
                            "type": "uint64",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Initialized",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "newFee",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "ManagementFeeAdjusted",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "index",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "NodeAdded",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "NodeDisabled",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "NodeRemoved",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "newWeight",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "NodeUpdated",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Paused",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "previousAdminRole",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "bytes32",
                            "name": "newAdminRole",
                            "type": "bytes32",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "RoleAdminChanged",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "RoleGranted",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "sender",
                            "type": "address",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "RoleRevoked",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "from",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Transfer",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "staker",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockId",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "UnlockCancelled",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "staker",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockId",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "amount",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "UnlockRedeemed",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "staker",
                            "type": "address",
                            "indexed": true
                        },
                        {
                            "internalType": "uint256",
                            "name": "unlockId",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "shares",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "spotValue",
                            "type": "uint256",
                            "indexed": false
                        },
                        {
                            "internalType": "uint256",
                            "name": "toll",
                            "type": "uint256",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "UnlockRequested",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address",
                            "indexed": false
                        }
                    ],
                    "type": "event",
                    "name": "Unpaused",
                    "anonymous": false
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "implementation",
                            "type": "address",
                            "indexed": true
                        }
                    ],
                    "type": "event",
                    "name": "Upgraded",
                    "anonymous": false
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "DEFAULT_ADMIN_ROLE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "MINIMUM_CONTRIBUTE_THRESHOLD",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_ADD_NODE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_DISABLE_NODE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_FEE_CLAIMER",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_FEE_EXEMPTION",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_FEE_SETTER",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_PAUSE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_REMOVE_NODE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_UPDATE_WEIGHTS",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "ROLE_UPGRADE",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "UPGRADE_INTERFACE_VERSION",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "addNode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "owner",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "allowance",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "spender",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "approve",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "balanceOf",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "batchDepositRequests",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "assets",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "batchSubmissions",
                    "outputs": [
                        {
                            "internalType": "uint64",
                            "name": "submissionEpoch",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint64",
                            "name": "activationEpoch",
                            "type": "uint64"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "batchWithdrawRequests",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "assets",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint96",
                            "name": "newTotalStaked",
                            "type": "uint96"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "calculateStakeDeltas",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "totalExcess",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "totalDeficit",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96[]",
                            "name": "nodeExcesses",
                            "type": "uint96[]"
                        },
                        {
                            "internalType": "uint96[]",
                            "name": "nodeDeficits",
                            "type": "uint96[]"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "unlockIndex",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "cancelUnlockRequest"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "claimProtocolFees"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64[]",
                            "name": "nodeIds",
                            "type": "uint64[]"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "compound"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "benefactor",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "contributeToPool"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "convertToAssets",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "assets",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint96",
                            "name": "assets",
                            "type": "uint96"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "convertToShares",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "currentBatchId",
                    "outputs": [
                        {
                            "internalType": "uint40",
                            "name": "",
                            "type": "uint40"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "decimals",
                    "outputs": [
                        {
                            "internalType": "uint8",
                            "name": "",
                            "type": "uint8"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint96",
                            "name": "minShares",
                            "type": "uint96"
                        },
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "deposit",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "disableNode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "user",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getAllUserUnlockRequests",
                    "outputs": [
                        {
                            "internalType": "struct StakedMonad.UnlockRequest[]",
                            "name": "",
                            "type": "tuple[]",
                            "components": [
                                {
                                    "internalType": "uint96",
                                    "name": "shares",
                                    "type": "uint96"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "spotValue",
                                    "type": "uint96"
                                },
                                {
                                    "internalType": "uint40",
                                    "name": "batchId",
                                    "type": "uint40"
                                },
                                {
                                    "internalType": "uint16",
                                    "name": "exitFeeInBips",
                                    "type": "uint16"
                                }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "val_id",
                            "type": "uint64"
                        },
                        {
                            "internalType": "address",
                            "name": "delegator",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "getDelegator",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "stake",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "acc_reward_per_token",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "rewards",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "delta_stake",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "next_delta_stake",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "delta_epoch",
                            "type": "uint256"
                        },
                        {
                            "internalType": "uint256",
                            "name": "next_delta_epoch",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getExitFeeBips",
                    "outputs": [
                        {
                            "internalType": "uint16",
                            "name": "",
                            "type": "uint16"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getManagementFeeBips",
                    "outputs": [
                        {
                            "internalType": "uint16",
                            "name": "",
                            "type": "uint16"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getMintableProtocolShares",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getNodeIds",
                    "outputs": [
                        {
                            "internalType": "uint256[]",
                            "name": "",
                            "type": "uint256[]"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getNodes",
                    "outputs": [
                        {
                            "internalType": "struct Registry.Node[]",
                            "name": "",
                            "type": "tuple[]",
                            "components": [
                                {
                                    "internalType": "uint64",
                                    "name": "id",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "weight",
                                    "type": "uint96"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "staked",
                                    "type": "uint96"
                                }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getRoleAdmin",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "val_id",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getWithdrawIds",
                    "outputs": [
                        {
                            "internalType": "uint8[]",
                            "name": "",
                            "type": "uint8[]"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "val_id",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "getWithdrawIdsSize",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "grantRole"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "hasRole",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "admin",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "initialize"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isExitFeeExempt",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "val_id",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isForceWithdrawPending",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "isNodeDisabled",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "name",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "nodes",
                    "outputs": [
                        {
                            "internalType": "uint64",
                            "name": "id",
                            "type": "uint64"
                        },
                        {
                            "internalType": "uint96",
                            "name": "weight",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "staked",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "pause"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "paused",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "proxiableUUID",
                    "outputs": [
                        {
                            "internalType": "bytes32",
                            "name": "",
                            "type": "bytes32"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint256",
                            "name": "unlockIndex",
                            "type": "uint256"
                        },
                        {
                            "internalType": "address payable",
                            "name": "receiver",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "redeem",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "assets",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "removeNode"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "address",
                            "name": "callerConfirmation",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "renounceRole"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "minSpotValue",
                            "type": "uint96"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "requestUnlock",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "spotValue",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes32",
                            "name": "role",
                            "type": "bytes32"
                        },
                        {
                            "internalType": "address",
                            "name": "account",
                            "type": "address"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "revokeRole"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint16",
                            "name": "newFee",
                            "type": "uint16"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setExitFee"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "user",
                            "type": "address"
                        },
                        {
                            "internalType": "bool",
                            "name": "isExempt",
                            "type": "bool"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setExitFeeExemption"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint16",
                            "name": "newFee",
                            "type": "uint16"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "setManagementFee"
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "submitBatch"
                },
                {
                    "inputs": [
                        {
                            "internalType": "bytes4",
                            "name": "interfaceId",
                            "type": "bytes4"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "supportsInterface",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64[]",
                            "name": "nodeIds",
                            "type": "uint64[]"
                        },
                        {
                            "internalType": "uint8",
                            "name": "maxWithdrawsPerNode",
                            "type": "uint8"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "sweep"
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64[]",
                            "name": "nodeIds",
                            "type": "uint64[]"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "sweepForced"
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "symbol",
                    "outputs": [
                        {
                            "internalType": "string",
                            "name": "",
                            "type": "string"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "totalPooled",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "totalShares",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "",
                            "type": "uint96"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "totalSupply",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "totalWeight",
                    "outputs": [
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "transfer",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "from",
                            "type": "address"
                        },
                        {
                            "internalType": "address",
                            "name": "to",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "value",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "transferFrom",
                    "outputs": [
                        {
                            "internalType": "bool",
                            "name": "",
                            "type": "bool"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "unbondDisableNode"
                },
                {
                    "inputs": [],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "unpause"
                },
                {
                    "inputs": [
                        {
                            "internalType": "struct Registry.WeightDelta[]",
                            "name": "weightDeltas",
                            "type": "tuple[]",
                            "components": [
                                {
                                    "internalType": "uint64",
                                    "name": "nodeId",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "delta",
                                    "type": "uint96"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "isIncreasing",
                                    "type": "bool"
                                }
                            ]
                        }
                    ],
                    "stateMutability": "nonpayable",
                    "type": "function",
                    "name": "updateWeights"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "newImplementation",
                            "type": "address"
                        },
                        {
                            "internalType": "bytes",
                            "name": "data",
                            "type": "bytes"
                        }
                    ],
                    "stateMutability": "payable",
                    "type": "function",
                    "name": "upgradeToAndCall"
                },
                {
                    "inputs": [
                        {
                            "internalType": "address",
                            "name": "",
                            "type": "address"
                        },
                        {
                            "internalType": "uint256",
                            "name": "",
                            "type": "uint256"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "userUnlockRequests",
                    "outputs": [
                        {
                            "internalType": "uint96",
                            "name": "shares",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint96",
                            "name": "spotValue",
                            "type": "uint96"
                        },
                        {
                            "internalType": "uint40",
                            "name": "batchId",
                            "type": "uint40"
                        },
                        {
                            "internalType": "uint16",
                            "name": "exitFeeInBips",
                            "type": "uint16"
                        }
                    ]
                },
                {
                    "inputs": [
                        {
                            "internalType": "uint64",
                            "name": "nodeId",
                            "type": "uint64"
                        }
                    ],
                    "stateMutability": "view",
                    "type": "function",
                    "name": "viewNodeByNodeId",
                    "outputs": [
                        {
                            "internalType": "struct Registry.Node",
                            "name": "node",
                            "type": "tuple",
                            "components": [
                                {
                                    "internalType": "uint64",
                                    "name": "id",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "weight",
                                    "type": "uint96"
                                },
                                {
                                    "internalType": "uint96",
                                    "name": "staked",
                                    "type": "uint96"
                                }
                            ]
                        }
                    ]
                },
                {
                    "inputs": [],
                    "stateMutability": "payable",
                    "type": "receive"
                }
            ],
            "devdoc": {
                "kind": "dev",
                "methods": {
                    "addNode(uint64)": {
                        "details": "Cannot add a node that already exists"
                    },
                    "allowance(address,address)": {
                        "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
                    },
                    "approve(address,uint256)": {
                        "details": "See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."
                    },
                    "balanceOf(address)": {
                        "details": "Returns the value of tokens owned by `account`."
                    },
                    "cancelUnlockRequest(uint256)": {
                        "details": "Order of unlock requests is not guaranteed between cancellations"
                    },
                    "compound(uint64[])": {
                        "details": "Specifying an invalid node id will revert"
                    },
                    "contributeToPool(address)": {
                        "details": "Restricts usage when total pooled is below a threshold to prevent share inflation attacks",
                        "params": {
                            "benefactor": "- Address used for tracking who is responsible for the contribution"
                        }
                    },
                    "convertToAssets(uint96)": {
                        "details": "`totalShares()` accounts for both minted and mintable shares"
                    },
                    "convertToShares(uint96)": {
                        "details": "`totalShares()` accounts for both minted and mintable shares"
                    },
                    "decimals()": {
                        "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
                    },
                    "deposit(uint96,address)": {
                        "params": {
                            "minShares": "- Minimum quantity of shares that must be minted to prevent front running",
                            "receiver": "- Recipient of the minted shares"
                        },
                        "returns": {
                            "shares": "- Quantity of shares minted"
                        }
                    },
                    "disableNode(uint64)": {
                        "details": "Intended to prepare a node for removal via `Registry.removeNode()`Once disabled, node cannot be assigned a weight"
                    },
                    "getNodeIds()": {
                        "details": "The order is not guaranteed to remain constant between callsThe order is not guaranteed to correlate to a position in `getNodes()`"
                    },
                    "getNodes()": {
                        "details": "The order is not guaranteed to remain constant between calls"
                    },
                    "getRoleAdmin(bytes32)": {
                        "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
                    },
                    "getWithdrawIds(uint64)": {
                        "details": "Will not include FORCED_WITHDRAW_ID even if present"
                    },
                    "grantRole(bytes32,address)": {
                        "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
                    },
                    "hasRole(bytes32,address)": {
                        "details": "Returns `true` if `account` has been granted `role`."
                    },
                    "initialize(address)": {
                        "details": "It is recommended to transfer a small amount of MON when initializing to mitigate a rare DOS when:      1) All users make unlock requests      2) Batch is submitted, withdraw delay completes, and all sweep() calls are performed      3) Some dust is still pending undelegation      4) All unlock requests are redeemed"
                    },
                    "name()": {
                        "details": "Returns the name of the token."
                    },
                    "paused()": {
                        "details": "Returns true if the contract is paused, and false otherwise."
                    },
                    "proxiableUUID()": {
                        "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."
                    },
                    "redeem(uint256,address)": {
                        "details": "Might need to first call `sweep()` to make funds availableDeletes the caller's unlock request"
                    },
                    "removeNode(uint64)": {
                        "details": "Intended to prevent storage bloat"
                    },
                    "renounceRole(bytes32,address)": {
                        "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."
                    },
                    "revokeRole(bytes32,address)": {
                        "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
                    },
                    "submitBatch()": {
                        "details": "Might need to first call `sweep()`For a net ingress batch, the amount bonded may be less than the requested amount due to integer arithmetic.      The remaining amount, or 'dust' is scheduled to be bonded in the next batch.For a net egress batch, the amount unbonded may be less than the requested amount due to integer arithmetic.      The remaining amount, or 'dust' is scheduled to be unbonded in the next batch.      In this scenario, `totalPooled` is temporarily increased by this dust amount to account for the assets      that were requested to be unbonded but were not unbonded from nodes, ensuring they remain trackable      in the pool for the next attempt."
                    },
                    "supportsInterface(bytes4)": {
                        "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
                    },
                    "sweep(uint64[],uint8)": {
                        "details": "Required number of epochs must have passed since calling `undelegate`All withdrawals must be valid and complete or none will"
                    },
                    "sweepForced(uint64[])": {
                        "details": "Required number of epochs must have passed since calling `undelegate`All withdrawals must be valid and complete or none will"
                    },
                    "symbol()": {
                        "details": "Returns the symbol of the token, usually a shorter version of the name."
                    },
                    "totalSupply()": {
                        "details": "Returns the value of tokens in existence."
                    },
                    "transfer(address,uint256)": {
                        "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."
                    },
                    "transferFrom(address,address,uint256)": {
                        "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."
                    },
                    "unbondDisableNode(uint64)": {
                        "details": "This function is for emergency/cleanup purposes and does not depend on the standard batching processDoes NOT decrease `totalPooled` because funds never leave the protocol's custodyFunds will be scheduled for redelegation during `sweepForced()`",
                        "params": {
                            "nodeId": "- ID of the disabled node to unbond from"
                        }
                    },
                    "updateWeights((uint64,uint96,bool)[])": {
                        "details": "Cannot increase weight of a node that has been disabledDecreasing weight below 0 will not underflow and instead remains at 0Decreasing weight of a node that has been disabled is effectively a no-opUpdating a deleted or non-existent node is effectively a no-op"
                    },
                    "upgradeToAndCall(address,bytes)": {
                        "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall",
                        "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."
                    }
                },
                "version": 1
            },
            "userdoc": {
                "kind": "user",
                "methods": {
                    "addNode(uint64)": {
                        "notice": "Adds a new node"
                    },
                    "cancelUnlockRequest(uint256)": {
                        "notice": "Allow user to cancel their unlock requestMost users will have 1 concurrent unlock request (`unlockIndex` == 0) but advanced users may have moreMust be done before the associated batch is submitted"
                    },
                    "compound(uint64[])": {
                        "notice": "Claims all claimable rewards and adds them to the next batch"
                    },
                    "contributeToPool(address)": {
                        "notice": "Allows external funds to be added without minting shares"
                    },
                    "convertToAssets(uint96)": {
                        "notice": "Converts LST shares into MON at the current block timestampDoes not apply exit fee"
                    },
                    "convertToShares(uint96)": {
                        "notice": "Converts MON into LST shares at the current block timestamp"
                    },
                    "deposit(uint96,address)": {
                        "notice": "Deposit asset into the protocol and receive shares to represent your positionDeposit amount must be specified by `msg.value`"
                    },
                    "disableNode(uint64)": {
                        "notice": "Permanently set node weight to 0"
                    },
                    "getDelegator(uint64,address)": {
                        "notice": "Provides a view of the delegator’s stake across execution, consensus, and snapshot contexts"
                    },
                    "getMintableProtocolShares()": {
                        "notice": "Shares that could be minted by the protocol at the current block timestamp"
                    },
                    "getNodeIds()": {
                        "notice": "View all unique node ids in their current order"
                    },
                    "getNodes()": {
                        "notice": "View all nodes in their current order"
                    },
                    "getWithdrawIds(uint64)": {
                        "notice": "Converts the WithdrawIdSummary for a validator into an array of withdraw ids"
                    },
                    "nodes(uint256)": {
                        "notice": "List of currently managed nodes. Order is NOT guaranteed to remain constant"
                    },
                    "redeem(uint256,address)": {
                        "notice": "Step 2 of 2 in process of withdrawing assetsAssociated batch must have been submitted and the cooldown period elapsed"
                    },
                    "removeNode(uint64)": {
                        "notice": "Removes a node from storage"
                    },
                    "submitBatch()": {
                        "notice": "Processes deposit and withdrawal requests and allocates MON according to Registry weights"
                    },
                    "sweep(uint64[],uint8)": {
                        "notice": "Withdraws MON from completed un-delegationsStores withdrawn funds in the contract to fund redemptions"
                    },
                    "sweepForced(uint64[])": {
                        "notice": "Withdraws MON from completed un-delegations of disabled nodesAdds withdrawn funds into the current batch to be redelegated"
                    },
                    "totalShares()": {
                        "notice": "Shares that could exist at the current block timestampIncludes both minted and mintable shares"
                    },
                    "totalWeight()": {
                        "notice": "Sum of node relative weights"
                    },
                    "unbondDisableNode(uint64)": {
                        "notice": "Forcibly unbonds funds from a disabled node"
                    },
                    "updateWeights((uint64,uint96,bool)[])": {
                        "notice": "Modifies node weights by incrementing/decrementing"
                    },
                    "viewNodeByNodeId(uint64)": {
                        "notice": "View a node by its unique node id"
                    }
                },
                "version": 1
            }
        },
        "settings": {
            "remappings": [
                "@openzeppelin-contracts-5.4.0/=dependencies/@openzeppelin-contracts-5.4.0/",
                "@openzeppelin-contracts-upgradeable-5.4.0/=dependencies/@openzeppelin-contracts-upgradeable-5.4.0/",
                "@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.4.0/",
                "@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.4.0/",
                "forge-std-1.10.0/=dependencies/forge-std-1.10.0/src/",
                "forge-std/=dependencies/forge-std-1.10.0/"
            ],
            "optimizer": {
                "enabled": true,
                "runs": 2000
            },
            "metadata": {
                "bytecodeHash": "ipfs"
            },
            "compilationTarget": {
                "src/StakedMonad.sol": "StakedMonad"
            },
            "evmVersion": "cancun",
            "libraries": {}
        },
        "sources": {
            "dependencies/@openzeppelin-contracts-5.4.0/access/IAccessControl.sol": {
                "keccak256": "0xbff9f59c84e5337689161ce7641c0ef8e872d6a7536fbc1f5133f128887aba3c",
                "urls": [
                    "bzz-raw://b308f882e796f7b79c9502deacb0a62983035c6f6f4e962b319ba6a1f4a77d3d",
                    "dweb:/ipfs/QmaWCW7ahEQqFjwhSUhV7Ae7WhfNvzSpE7DQ58hvEooqPL"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/interfaces/IERC1967.sol": {
                "keccak256": "0xbf2aefe54b76d7f7bcd4f6da1080b7b1662611937d870b880db584d09cea56b5",
                "urls": [
                    "bzz-raw://f5e7e2f12e0feec75296e57f51f82fdaa8bd1551f4b8cc6560442c0bf60f818c",
                    "dweb:/ipfs/QmcW9wDMaQ8RbQibMarfp17a3bABzY5KraWe2YDwuUrUoz"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/interfaces/draft-IERC1822.sol": {
                "keccak256": "0x82f757819bf2429a0d4db141b99a4bbe5039e4ef86dfb94e2e6d40577ed5b28b",
                "urls": [
                    "bzz-raw://37c30ed931e19fb71fdb806bb504cfdb9913b7127545001b64d4487783374422",
                    "dweb:/ipfs/QmUBHpv4hm3ZmwJ4GH8BeVzK4mv41Q6vBbWXxn8HExPXza"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/interfaces/draft-IERC6093.sol": {
                "keccak256": "0x19fdfb0f3b89a230e7dbd1cf416f1a6b531a3ee5db4da483f946320fc74afc0e",
                "urls": [
                    "bzz-raw://3490d794728f5bfecb46820431adaff71ba374141545ec20b650bb60353fac23",
                    "dweb:/ipfs/QmPsfxjVpMcZbpE7BH93DzTpEaktESigEw4SmDzkXuJ4WR"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/proxy/ERC1967/ERC1967Utils.sol": {
                "keccak256": "0xa1ad192cd45317c788618bef5cb1fb3ca4ce8b230f6433ac68cc1d850fb81618",
                "urls": [
                    "bzz-raw://b43447bb85a53679d269a403c693b9d88d6c74177dfb35eddca63abaf7cf110a",
                    "dweb:/ipfs/QmXSDmpd4bNZj1PDgegr6C4w1jDaWHXCconC3rYiw9TSkQ"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/proxy/beacon/IBeacon.sol": {
                "keccak256": "0x20462ddb2665e9521372c76b001d0ce196e59dbbd989de9af5576cad0bd5628b",
                "urls": [
                    "bzz-raw://f417fd12aeec8fbfaceaa30e3a08a0724c0bc39de363e2acf6773c897abbaf6d",
                    "dweb:/ipfs/QmU4Hko6sApdweVM92CsiuLKkCk8HfyBeutF89PCTz5Tye"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/token/ERC20/IERC20.sol": {
                "keccak256": "0x74ed01eb66b923d0d0cfe3be84604ac04b76482a55f9dd655e1ef4d367f95bc2",
                "urls": [
                    "bzz-raw://5282825a626cfe924e504274b864a652b0023591fa66f06a067b25b51ba9b303",
                    "dweb:/ipfs/QmeCfPykghhMc81VJTrHTC7sF6CRvaA1FXVq2pJhwYp1dV"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/token/ERC20/extensions/IERC20Metadata.sol": {
                "keccak256": "0xd6fa4088198f04eef10c5bce8a2f4d60554b7ec4b987f684393c01bf79b94d9f",
                "urls": [
                    "bzz-raw://f95ee0bbd4dd3ac730d066ba3e785ded4565e890dbec2fa7d3b9fe3bad9d0d6e",
                    "dweb:/ipfs/QmSLr6bHkPFWT7ntj34jmwfyskpwo97T9jZUrk5sz3sdtR"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/Address.sol": {
                "keccak256": "0x6d0ae6e206645341fd122d278c2cb643dea260c190531f2f3f6a0426e77b00c0",
                "urls": [
                    "bzz-raw://032d1201d839435be2c85b72e33206b3ea980c569d6ebf7fa57d811ab580a82f",
                    "dweb:/ipfs/QmeqQjAtMvdZT2tG7zm39itcRJkuwu8AEReK6WRnLJ18DD"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/Arrays.sol": {
                "keccak256": "0xa4b9958797e0e9cde82a090525e90f80d5745ba1c67ee72b488bd3087498a17e",
                "urls": [
                    "bzz-raw://c9344f7c2f80322c2e76d9d89bed03fd12f3e011e74fde7cf24ea21bdd2abe2d",
                    "dweb:/ipfs/QmPMAjF5x2fHUAee2FKMZDBbFVrbZbPCr3a9KHLZaSn1zY"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/Comparators.sol": {
                "keccak256": "0x302eecd8cf323b4690e3494a7d960b3cbce077032ab8ef655b323cdd136cec58",
                "urls": [
                    "bzz-raw://49ba706f1bc476d68fe6c1fad75517acea4e9e275be0989b548e292eb3a3eacd",
                    "dweb:/ipfs/QmeBpvcdGWzWMKTQESUCEhHgnEQYYATVwPxLMxa6vMT7jC"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/Errors.sol": {
                "keccak256": "0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123",
                "urls": [
                    "bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf",
                    "dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/Panic.sol": {
                "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a",
                "urls": [
                    "bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a",
                    "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/SlotDerivation.sol": {
                "keccak256": "0x67672e4ca1dafdcc661d4eba8475cfac631fa0933309258e3af7644b92e1fb26",
                "urls": [
                    "bzz-raw://30192451f05ea5ddb0c18bd0f9003f098505836ba19c08a9c365adf829454da2",
                    "dweb:/ipfs/QmfCuZSCTyCdFoSKn7MSaN6hZksnQn9ZhrZDAdRTCbwGu2"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/StorageSlot.sol": {
                "keccak256": "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97",
                "urls": [
                    "bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b",
                    "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/introspection/IERC165.sol": {
                "keccak256": "0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c",
                "urls": [
                    "bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617",
                    "dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/math/Math.sol": {
                "keccak256": "0x1225214420c83ebcca88f2ae2b50f053aaa7df7bd684c3e878d334627f2edfc6",
                "urls": [
                    "bzz-raw://6c5fab4970634f9ab9a620983dc1c8a30153981a0b1a521666e269d0a11399d3",
                    "dweb:/ipfs/QmVRnBC575MESGkEHndjujtR7qub2FzU9RWy9eKLp4hPZB"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/math/SafeCast.sol": {
                "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54",
                "urls": [
                    "bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8",
                    "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-5.4.0/utils/structs/EnumerableSet.sol": {
                "keccak256": "0x1fc283df727585919c3db301b948a3e827aee16917457ad7f916db9da2228e77",
                "urls": [
                    "bzz-raw://a4f4b5e2cd0ebc3b74e41e4e94771a0417eedd9b11cec3ef9f90b2ac2989264b",
                    "dweb:/ipfs/QmZmsEsvsXiwAyAe1YeoLSKezeFcvR1giUeEY6ex4zpsTS"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/access/AccessControlUpgradeable.sol": {
                "keccak256": "0x85a70e2b1b65e9ba456add364d22b97eb9944083df1c39c0b4bd6a4b5aa386a4",
                "urls": [
                    "bzz-raw://d32a33be6ca4d8e89b9e82e3f9cec7a6c4e040534152313ff55da85b8f193059",
                    "dweb:/ipfs/QmeR55L8t2A8xZ1nvT5y4yVWfFbbmpaGAtGBMz3GGNpuyP"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/proxy/utils/Initializable.sol": {
                "keccak256": "0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05",
                "urls": [
                    "bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08",
                    "dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/proxy/utils/UUPSUpgradeable.sol": {
                "keccak256": "0x574a7451e42724f7de29e2855c392a8a5020acd695169466a18459467d719d63",
                "urls": [
                    "bzz-raw://5bc189f63b639ee173dd7b6fecc39baf7113bf161776aea22b34c57fdd1872ec",
                    "dweb:/ipfs/QmZAf2VtjDLRULqjJkde6LNsxAg12tUqpPqgUQQZbAjgtZ"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/token/ERC20/ERC20Upgradeable.sol": {
                "keccak256": "0xfcd09c2aa8cc3f93e12545454359f901965db312bc03833daf84de0c03e05022",
                "urls": [
                    "bzz-raw://07701188648d2ab83dab1037808298585264559bddf243bd8929037adcb984b0",
                    "dweb:/ipfs/QmavmG5REdHCAWsZ8Cag26BCxAq27DRKGxr3uBg5ZYxQ51"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/ContextUpgradeable.sol": {
                "keccak256": "0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397",
                "urls": [
                    "bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9",
                    "dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/PausableUpgradeable.sol": {
                "keccak256": "0xa6bf6b7efe0e6625a9dcd30c5ddf52c4c24fe8372f37c7de9dbf5034746768d5",
                "urls": [
                    "bzz-raw://8c353ee3705bbf6fadb84c0fb10ef1b736e8ca3ca1867814349d1487ed207beb",
                    "dweb:/ipfs/QmcugaPssrzGGE8q4YZKm2ZhnD3kCijjcgdWWg76nWt3FY"
                ],
                "license": "MIT"
            },
            "dependencies/@openzeppelin-contracts-upgradeable-5.4.0/utils/introspection/ERC165Upgradeable.sol": {
                "keccak256": "0x6694b63ddb2c59bbe341c846171798350e8f72fa02189fcdeaca864e28b54e1f",
                "urls": [
                    "bzz-raw://7d945d33e2189ac4e531e4ed228f59ca957b3898c4f9051f4b8c7ae44d72b23a",
                    "dweb:/ipfs/QmRcEwubTe3xyXxthijs5fVzEgUFSxeddjd5PGfhBnkunX"
                ],
                "license": "MIT"
            },
            "src/CustomErrors.sol": {
                "keccak256": "0x1ba383b9bef5e696f656063cab035fb4ab64aa8897058dcf18e18d31fd6ded59",
                "urls": [
                    "bzz-raw://b5a381b74add6e325972095ae4f285af900a7d014e3e01859428f11a319f631d",
                    "dweb:/ipfs/QmRyADdcNPeZoupt5c2nWUj6NzRsKs7QeUCQXmVfKbXRaG"
                ],
                "license": "BUSL-1.1"
            },
            "src/Registry.sol": {
                "keccak256": "0x4806200e21dfc07a3c62e852f27a36098cc9fab7555d251ef80b7ea2ee011ebb",
                "urls": [
                    "bzz-raw://fa94b3bdaa65513441392965f05642734d66879e589f5cfb152f83444787c8f4",
                    "dweb:/ipfs/QmZ2AWdFVMFC3aDLUJywHry4Q5wUSi9Rj7WGcj8zexJJbW"
                ],
                "license": "BUSL-1.1"
            },
            "src/StakedMonad.sol": {
                "keccak256": "0xb8e2feafad1aae8101cc5af581388c79c1aa24ce649861ad235ae6ce8367e0d0",
                "urls": [
                    "bzz-raw://472a4ffac54601615650773b6015ade125cbc916b370c71da09b78edb9e49307",
                    "dweb:/ipfs/QmdLui2TnKV17sjgU5K4UgCMXBgCqZEzg2KD7LX4oppjgJ"
                ],
                "license": "BUSL-1.1"
            },
            "src/precompile/StakerUpgradeable.sol": {
                "keccak256": "0xf4bc7283a25072476bf615ef54decc539ea0bec2eb487bbacdab6372e53cb8bb",
                "urls": [
                    "bzz-raw://a688b754762541652f7a66229db78d0bf334e7ebcceab4db64d0f41827856181",
                    "dweb:/ipfs/QmWXxUCVWrXcG7qErrbuCsymUpZYVps6usNLLcYtxw5kJc"
                ],
                "license": "BUSL-1.1"
            }
        },
        "version": 1
    },
    "id": 52
}