{
    "_format": "hh-sol-artifact-1",
    "contractName": "Certificate",
    "sourceName": "contracts/Certificate.sol",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "inputs": [],
            "name": "ApprovalCallerNotOwnerNorApproved",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "ApprovalQueryForNonexistentToken",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "ApproveToCaller",
            "type": "error"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "array1Name",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "array2Name",
                    "type": "string"
                }
            ],
            "name": "ArrayLengthMismatch",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "BalanceQueryForZeroAddress",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "ForbiddenTransferAfterMinting",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "FunctionDisabled",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "InvalidQueryRange",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "MintERC2309QuantityExceedsLimit",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "MintToZeroAddress",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "MintZeroQuantity",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "OwnerQueryForNonexistentToken",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "OwnershipNotInitializedForExtraData",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "SenderNotRemovalContract",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "TransferCallerNotOwnerNorApproved",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "TransferFromIncorrectOwner",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "TransferToNonERC721ReceiverImplementer",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "TransferToZeroAddress",
            "type": "error"
        },
        {
            "inputs": [],
            "name": "URIQueryForNonexistentToken",
            "type": "error"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "approved",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "ApprovalForAll",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "fromTokenId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "toTokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                }
            ],
            "name": "ConsecutiveTransfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "recipient",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "certificateId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "certificateAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "removalIds",
                    "type": "uint256[]"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "removalAmounts",
                    "type": "uint256[]"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "purchasingTokenAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "priceMultiple",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "noriFeePercentage",
                    "type": "uint256"
                }
            ],
            "name": "CreateCertificate",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "contract IRemoval",
                    "name": "removal",
                    "type": "address"
                }
            ],
            "name": "RegisterContractAddresses",
            "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": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "CERTIFICATE_OPERATOR_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "PAUSER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "explicitOwnershipOf",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "addr",
                            "type": "address"
                        },
                        {
                            "internalType": "uint64",
                            "name": "startTimestamp",
                            "type": "uint64"
                        },
                        {
                            "internalType": "bool",
                            "name": "burned",
                            "type": "bool"
                        },
                        {
                            "internalType": "uint24",
                            "name": "extraData",
                            "type": "uint24"
                        }
                    ],
                    "internalType": "struct IERC721AUpgradeable.TokenOwnership",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "tokenIds",
                    "type": "uint256[]"
                }
            ],
            "name": "explicitOwnershipsOf",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "addr",
                            "type": "address"
                        },
                        {
                            "internalType": "uint64",
                            "name": "startTimestamp",
                            "type": "uint64"
                        },
                        {
                            "internalType": "bool",
                            "name": "burned",
                            "type": "bool"
                        },
                        {
                            "internalType": "uint24",
                            "name": "extraData",
                            "type": "uint24"
                        }
                    ],
                    "internalType": "struct IERC721AUpgradeable.TokenOwnership[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getApproved",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getNrtDeficit",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "certificateId",
                    "type": "uint256"
                }
            ],
            "name": "getPurchaseAmount",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRemovalAddress",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "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": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "index",
                    "type": "uint256"
                }
            ],
            "name": "getRoleMember",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                }
            ],
            "name": "getRoleMemberCount",
            "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": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "incrementNrtDeficit",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "baseURI",
                    "type": "string"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "isApprovedForAll",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes[]",
                    "name": "data",
                    "type": "bytes[]"
                }
            ],
            "name": "multicall",
            "outputs": [
                {
                    "internalType": "bytes[]",
                    "name": "results",
                    "type": "bytes[]"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "uint256[]",
                    "name": "removalIds",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "removalAmounts",
                    "type": "uint256[]"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "onERC1155BatchReceived",
            "outputs": [
                {
                    "internalType": "bytes4",
                    "name": "",
                    "type": "bytes4"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "ownerOf",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "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": [
                {
                    "internalType": "contract IRemoval",
                    "name": "removal",
                    "type": "address"
                }
            ],
            "name": "registerContractAddresses",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "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": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "_data",
                    "type": "bytes"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "name": "setApprovalForAll",
            "outputs": [],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "tokenURI",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                }
            ],
            "name": "tokensOfOwner",
            "outputs": [
                {
                    "internalType": "uint256[]",
                    "name": "",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "start",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "stop",
                    "type": "uint256"
                }
            ],
            "name": "tokensOfOwnerIn",
            "outputs": [
                {
                    "internalType": "uint256[]",
                    "name": "",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalMinted",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unpause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x60806040523480156200001157600080fd5b50620000226200002860201b60201c565b620001d3565b600060019054906101000a900460ff16156200007b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000729062000176565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff161015620000ed5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620000e49190620001b6565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200015e602783620000ef565b91506200016b8262000100565b604082019050919050565b6000602082019050818103600083015262000191816200014f565b9050919050565b600060ff82169050919050565b620001b08162000198565b82525050565b6000602082019050620001cd6000830184620001a5565b92915050565b615c1080620001e36000396000f3fe608060405234801561001057600080fd5b50600436106101e35760003560e01c806301ffc9a7146101e857806306fdde0314610218578063081812fc14610236578063095ea7b31461026657806318160ddd1461028257806323b872dd146102a0578063248a9ca3146102bc57806326c6da4f146102ec5780632f2ff15d1461030a57806336568abe146103265780633f4ba83a1461034257806342842e0e1461034c57806342966c68146103685780634b66f665146103845780635bbb2177146103a25780635c975abb146103d25780636352211e146103f057806370a082311461042057806379fcc08a146104505780638456cb591461046c5780638462151c146104765780639010d07c146104a657806391d14854146104d657806395d89b411461050657806399a2557a14610524578063a217fddf14610554578063a22cb46514610572578063a2309ff81461058e578063ac9650d8146105ac578063b88d4fde146105dc578063bc197c81146105f8578063c23dc68f14610628578063c87b56dd14610658578063ca15c87314610688578063d2f3ea43146106b8578063d547741f146106e8578063dd39c75014610704578063e63ab1e914610722578063e985e9c514610740578063f62d188814610770578063fc6413731461078c575b600080fd5b61020260048036038101906101fd9190613c9f565b6107a8565b60405161020f9190613ce7565b60405180910390f35b61022061081a565b60405161022d9190613d92565b60405180910390f35b610250600480360381019061024b9190613dea565b6108b5565b60405161025d9190613e58565b60405180910390f35b610280600480360381019061027b9190613e9f565b61093d565b005b61028a61096f565b6040516102979190613eee565b60405180910390f35b6102ba60048036038101906102b59190613f09565b610998565b005b6102d660048036038101906102d19190613f92565b610cf0565b6040516102e39190613fce565b60405180910390f35b6102f4610d10565b6040516103019190613fce565b60405180910390f35b610324600480360381019061031f9190613fe9565b610d34565b005b610340600480360381019061033b9190613fe9565b610d55565b005b61034a610dd8565b005b61036660048036038101906103619190613f09565b610e0d565b005b610382600480360381019061037d9190613dea565b610e2d565b005b61038c610e3b565b6040516103999190613e58565b60405180910390f35b6103bc60048036038101906103b7919061408e565b610e66565b6040516103c9919061423e565b60405180910390f35b6103da610f29565b6040516103e79190613ce7565b60405180910390f35b61040a60048036038101906104059190613dea565b610f40565b6040516104179190613e58565b60405180910390f35b61043a60048036038101906104359190614260565b610f52565b6040516104479190613eee565b60405180910390f35b61046a60048036038101906104659190613dea565b611013565b005b6104746110c7565b005b610490600480360381019061048b9190614260565b6110fc565b60405161049d919061434b565b60405180910390f35b6104c060048036038101906104bb919061436d565b61123f565b6040516104cd9190613e58565b60405180910390f35b6104f060048036038101906104eb9190613fe9565b61126e565b6040516104fd9190613ce7565b60405180910390f35b61050e6112d9565b60405161051b9190613d92565b60405180910390f35b61053e600480360381019061053991906143ad565b611374565b60405161054b919061434b565b60405180910390f35b61055c611580565b6040516105699190613fce565b60405180910390f35b61058c6004803603810190610587919061442c565b611587565b005b6105966115b9565b6040516105a39190613eee565b60405180910390f35b6105c660048036038101906105c191906144c2565b6115c8565b6040516105d39190614626565b60405180910390f35b6105f660048036038101906105f19190614778565b6116d4565b005b610612600480360381019061060d9190614851565b611747565b60405161061f919061493c565b60405180910390f35b610642600480360381019061063d9190613dea565b6118b9565b60405161064f91906149ac565b60405180910390f35b610672600480360381019061066d9190613dea565b611923565b60405161067f9190613d92565b60405180910390f35b6106a2600480360381019061069d9190613f92565b6119c1565b6040516106af9190613eee565b60405180910390f35b6106d260048036038101906106cd9190613dea565b6119e5565b6040516106df9190613eee565b60405180910390f35b61070260048036038101906106fd9190613fe9565b611a03565b005b61070c611a24565b6040516107199190613eee565b60405180910390f35b61072a611a2f565b6040516107379190613fce565b60405180910390f35b61075a600480360381019061075591906149c7565b611a53565b6040516107679190613ce7565b60405180910390f35b61078a60048036038101906107859190614aa8565b611af0565b005b6107a660048036038101906107a19190614b2f565b611e7f565b005b60006107b382611f11565b806107e357506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108135750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060610824611f8b565b600201805461083290614b8b565b80601f016020809104026020016040519081016040528092919081815260200182805461085e90614b8b565b80156108ab5780601f10610880576101008083540402835291602001916108ab565b820191906000526020600020905b81548152906001019060200180831161088e57829003601f168201915b5050505050905090565b60006108c082611fb8565b6108f6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fe611f8b565b600601600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6040517fbf24148800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610979612029565b610981611f8b565b6001015461098d611f8b565b600001540303905090565b60006109a38261202e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610a1684612115565b91509150610a2c8187610a27612145565b612154565b610a7857610a4186610a3c612145565b611a53565b610a77576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610ade576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aeb8686866001612198565b8015610af657600082555b610afe611f8b565b60050160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550610b55611f8b565b60050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610bd685610bb288888761229d565b7c0200000000000000000000000000000000000000000000000000000000176122c5565b610bde611f8b565b60040160008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610c805760006001850190506000610c2f611f8b565b60040160008381526020019081526020016000205403610c7e57610c51611f8b565b600001548114610c7d5783610c64611f8b565b6004016000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ce886868660016122f0565b505050505050565b600060c96000838152602001908152602001600020600101549050919050565b7fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f81565b610d3d82610cf0565b610d46816122f6565b610d50838361230a565b505050565b610d5d612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc190614c2e565b60405180910390fd5b610dd48282612328565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e02816122f6565b610e0a61233e565b50565b610e28838383604051806020016040528060008152506116d4565b505050565b610e388160016123a1565b50565b600061012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600083839050905060008167ffffffffffffffff811115610e8c57610e8b61464d565b5b604051908082528060200260200182016040528015610ec557816020015b610eb2613be4565b815260200190600190039081610eaa5790505b50905060005b828114610f1d57610ef4868683818110610ee857610ee7614c4e565b5b905060200201356118b9565b828281518110610f0757610f06614c4e565b5b6020026020010181905250806001019050610ecb565b50809250505092915050565b6000606560009054906101000a900460ff16905090565b6000610f4b8261202e565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb9576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610fca611f8b565b60050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61101b612629565b61012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661105d612320565b73ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f9a5ed74b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061012e60008282546110bd9190614cac565b9250508190555050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f1816122f6565b6110f9612673565b50565b6060600080600061110c85610f52565b905060008167ffffffffffffffff81111561112a5761112961464d565b5b6040519080825280602002602001820160405280156111585781602001602082028036833780820191505090505b509050611163613be4565b600061116d612029565b90505b83861461123157611180816126d6565b9150816040015161122657600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146111cb57816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611225578083878060010198508151811061121857611217614c4e565b5b6020026020010181815250505b5b806001019050611170565b508195505050505050919050565b60006112668260fb600086815260200190815260200160002061270a90919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606112e3611f8b565b60030180546112f190614b8b565b80601f016020809104026020016040519081016040528092919081815260200182805461131d90614b8b565b801561136a5780601f1061133f5761010080835404028352916020019161136a565b820191906000526020600020905b81548152906001019060200180831161134d57829003601f168201915b5050505050905090565b60608183106113af576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806113ba612724565b90506113c4612029565b8510156113d6576113d3612029565b94505b808411156113e2578093505b60006113ed87610f52565b90508486101561141057600086860390508181101561140a578091505b50611415565b600090505b60008167ffffffffffffffff8111156114315761143061464d565b5b60405190808252806020026020018201604052801561145f5781602001602082028036833780820191505090505b509050600082036114765780945050505050611579565b6000611481886118b9565b90506000816040015161149657816000015190505b60008990505b8881141580156114ac5750848714155b1561156b576114ba816126d6565b9250826040015161156057600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161461150557826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155f578084888060010199508151811061155257611551614c4e565b5b6020026020010181815250505b5b80600101905061149c565b508583528296505050505050505b9392505050565b6000801b81565b6040517fbf24148800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115c3612737565b905090565b60608282905067ffffffffffffffff8111156115e7576115e661464d565b5b60405190808252806020026020018201604052801561161a57816020015b60608152602001906001900390816116055790505b50905060005b838390508110156116cd5761169c3085858481811061164257611641614c4e565b5b90506020028101906116549190614cef565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612753565b8282815181106116af576116ae614c4e565b5b602002602001018190525080806116c590614d52565b915050611620565b5092915050565b6116df848484610998565b60008373ffffffffffffffffffffffffffffffffffffffff163b146117415761170a84848484612837565b611740576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600061012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661178b612320565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614de6565b60405180910390fd5b600083838101906117f29190614e06565b90508015611868576000611846878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612987565b90508061012e600082825461185b9190614e33565b92505081905550506118a2565b600084848101906118799190614f0c565b90506118a0816020015182604001518b8b8b8b876060015188608001518960a001516129c6565b505b63bc197c8160e01b91505098975050505050505050565b6118c1613be4565b6118c9613be4565b6118d1612029565b8310806118e557506118e1612724565b8310155b156118f3578091505061191e565b6118fc836126d6565b9050806040015115611911578091505061191e565b61191a83612a8a565b9150505b919050565b606061192e82611fb8565b611964576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061196e612aaa565b9050600081510361198e57604051806020016040528060008152506119b9565b8061199884612b3d565b6040516020016119a9929190614f75565b6040516020818303038152906040525b915050919050565b60006119de60fb6000848152602001908152602001600020612b84565b9050919050565b600061012d6000838152602001908152602001600020549050919050565b611a0c82610cf0565b611a15816122f6565b611a1f8383612328565b505050565b600061012e54905090565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000611a5d611f8b565b60070160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611af8612b99565b60000160019054906101000a900460ff16611b2c57611b15612b99565b60000160009054906101000a900460ff1615611b35565b611b34612bc6565b5b611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b9061500b565b60405180910390fd5b6000611b7e612b99565b60000160019054906101000a900460ff161590508015611be1576001611ba2612b99565b60000160016101000a81548160ff0219169083151502179055506001611bc6612b99565b60000160006101000a81548160ff0219169083151502179055505b60008060019054906101000a900460ff16159050808015611c125750600160008054906101000a900460ff1660ff16105b80611c3f5750611c2130612bdd565b158015611c3e5750600160008054906101000a900460ff1660ff16145b5b611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c759061509d565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611cbb576001600060016101000a81548160ff0219169083151502179055505b826101309081611ccb9190615269565b50611cd4612c00565b611cdc612c51565b611d506040518060400160405280600b81526020017f43657274696669636174650000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e43435200000000000000000000000000000000000000000000000000000000815250612ca2565b611d58612d47565b611d60612da1565b611d68612dfb565b611d70612e67565b611d78612eb8565b611d80612f09565b611d946000801b611d8f612320565b61230a565b611dc57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611dc0612320565b61230a565b611df67fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f611df1612320565b61230a565b8015611e4f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051611e469190615383565b60405180910390a15b508015611e7b576000611e60612b99565b60000160016101000a81548160ff0219169083151502179055505b5050565b611e87612629565b6000801b611e94816122f6565b8161012f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb1baf34c07e5c91807f2e3dd3326873be3e2406ef6703ddb0946280f1b895f8b82604051611f0591906153f3565b60405180910390a15050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f845750611f8382612f5a565b5b9050919050565b6000807f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090508091505090565b600081611fc3612029565b11158015611fdb5750611fd4611f8b565b6000015482105b8015612022575060007c010000000000000000000000000000000000000000000000000000000061200a611f8b565b60040160008581526020019081526020016000205416145b9050919050565b600090565b6000808290508061203d612029565b116120de5761204a611f8b565b600001548110156120dd57600061205f611f8b565b600401600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216036120db575b600081036120d1576120ae611f8b565b60040160008360019003935083815260200190815260200160002054905061209e565b8092505050612110565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000612122611f8b565b600601600085815260200190815260200160002090508092508254915050915091565b600061214f612320565b905090565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b6121a0612629565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415905060008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614159050600061223b7fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f612236612320565b61126e565b1590508280156122485750815b80156122515750805b15612288576040517f175e5a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61229487878787612fd4565b50505050505050565b60008060e883901c905060e86122b4868684612fda565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b61230781612302612320565b612fe3565b50565b612312612629565b61231c8282613068565b5050565b600033905090565b612330612629565b61233a828261309c565b5050565b6123466130d0565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61238a612320565b6040516123979190613e58565b60405180910390a1565b60006123ac8361202e565b905060008190506000806123bf86612115565b915091508415612428576123db81846123d6612145565b612154565b612427576123f0836123eb612145565b611a53565b612426576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b612436836000886001612198565b801561244157600082555b600160806001901b03612452611f8b565b60050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506124f2836124af8560008861229d565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176122c5565b6124fa611f8b565b60040160008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085160361259c576000600187019050600061254b611f8b565b6004016000838152602001908152602001600020540361259a5761256d611f8b565b6000015481146125995784612580611f8b565b6004016000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126068360008860016122f0565b61260e611f8b565b60010160008154809291906001019190505550505050505050565b612631610f29565b15612671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126689061545a565b60405180910390fd5b565b61267b612629565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126bf612320565b6040516126cc9190613e58565b60405180910390a1565b6126de613be4565b6127036126e9611f8b565b600401600084815260200190815260200160002054613119565b9050919050565b600061271983600001836131cf565b60001c905092915050565b600061272e611f8b565b60000154905090565b6000612741612029565b612749611f8b565b6000015403905090565b606061275e83612bdd565b61279d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612794906154ec565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516127c59190615548565b600060405180830381855af49150503d8060008114612800576040519150601f19603f3d011682016040523d82523d6000602084013e612805565b606091505b509150915061282d8282604051806060016040528060278152602001615bb4602791396131fa565b9250505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261285d612145565b8786866040518563ffffffff1660e01b815260040161287f94939291906155a9565b6020604051808303816000875af19250505080156128bb57506040513d601f19601f820116820180604052508101906128b8919061560a565b60015b612934573d80600081146128eb576040519150601f19603f3d011682016040523d82523d6000602084013e6128f0565b606091505b50600081510361292c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60008151602083016020820281015b808210156129be5783825185019450808510156129b257600080fd5b50602082019150612996565b505050919050565b6129d3878787878c61321c565b60006129dd612724565b90508861012d600083815260200190815260200160002081905550612a038a60016132f6565b8373ffffffffffffffffffffffffffffffffffffffff16818b73ffffffffffffffffffffffffffffffffffffffff167fc75c026f88960a2ba4c2eb0bad4326d77c1116b7e40c22b88077c38535a7982d612a5b612320565b8d8d8d8d8d8c8c604051612a769897969594939291906156a1565b60405180910390a450505050505050505050565b612a92613be4565b612aa3612a9e8361202e565b613119565b9050919050565b60606101308054612aba90614b8b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ae690614b8b565b8015612b335780601f10612b0857610100808354040283529160200191612b33565b820191906000526020600020905b815481529060010190602001808311612b1657829003601f168201915b5050505050905090565b606060806040510190508060405280825b600115612b7057600183039250600a81066030018353600a8104905080612b4e575b508181036020830392508083525050919050565b6000612b92826000016134d6565b9050919050565b6000807fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f90508091505090565b6000803090506000813b9050600081149250505090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4690615786565b60405180910390fd5b565b600060019054906101000a900460ff16612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790615786565b60405180910390fd5b565b612caa612b99565b60000160019054906101000a900460ff16612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190615818565b60405180910390fd5b81612d03611f8b565b6002019081612d129190615269565b5080612d1c611f8b565b6003019081612d2b9190615269565b50612d34612029565b612d3c611f8b565b600001819055505050565b612d4f612b99565b60000160019054906101000a900460ff16612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690615818565b60405180910390fd5b565b612da9612b99565b60000160019054906101000a900460ff16612df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df090615818565b60405180910390fd5b565b600060019054906101000a900460ff16612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615786565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16612eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ead90615786565b60405180910390fd5b565b600060019054906101000a900460ff16612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe90615786565b60405180910390fd5b565b600060019054906101000a900460ff16612f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4f90615786565b60405180910390fd5b565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612fcd5750612fcc826134e7565b5b9050919050565b50505050565b60009392505050565b612fed828261126e565b61306457612ffa81613551565b6130088360001c602061357e565b6040516020016130199291906158d0565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305b9190613d92565b60405180910390fd5b5050565b61307282826137ba565b6130978160fb600085815260200190815260200160002061389b90919063ffffffff16565b505050565b6130a682826138cb565b6130cb8160fb60008581526020019081526020016000206139ad90919063ffffffff16565b505050565b6130d8610f29565b613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90615956565b60405180910390fd5b565b613121613be4565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b60008260000182815481106131e7576131e6614c4e565b5b9060005260206000200154905092915050565b6060831561320a57829050613215565b61321483836139dd565b5b9392505050565b80613267848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612987565b146132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329e906159c2565b60405180910390fd5b8282905085859050146132ef576040517f616c41130000000000000000000000000000000000000000000000000000000081526004016132e690615a7a565b60405180910390fd5b5050505050565b6000613300611f8b565b60000154905060008203613340576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61334d6000848385612198565b600160406001901b178202613360611f8b565b60050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506133cd836133be600086600061229d565b6133c785613a2d565b176122c5565b6133d5611f8b565b600401600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461347757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905061343c565b50600082036134b2576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806134bb611f8b565b6000018190555050506134d160008483856122f0565b505050565b600081600001805490509050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606135778273ffffffffffffffffffffffffffffffffffffffff16601460ff1661357e565b9050919050565b6060600060028360026135919190615aad565b61359b9190614cac565b67ffffffffffffffff8111156135b4576135b361464d565b5b6040519080825280601f01601f1916602001820160405280156135e65781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061361e5761361d614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061368257613681614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026136c29190615aad565b6136cc9190614cac565b90505b600181111561376c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061370e5761370d614c4e565b5b1a60f81b82828151811061372557613724614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061376590615aef565b90506136cf565b50600084146137b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a790615b64565b60405180910390fd5b8091505092915050565b6137c4828261126e565b61389757600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061383c612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006138c3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613a3d565b905092915050565b6138d5828261126e565b156139a957600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061394e612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006139d5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613aad565b905092915050565b6000825111156139f05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a249190613d92565b60405180910390fd5b60006001821460e11b9050919050565b6000613a498383613bc1565b613aa2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613aa7565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114613bb5576000600182613adf9190614e33565b9050600060018660000180549050613af79190614e33565b9050818114613b66576000866000018281548110613b1857613b17614c4e565b5b9060005260206000200154905080876000018481548110613b3c57613b3b614c4e565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613b7a57613b79615b84565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613bbb565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613c7c81613c47565b8114613c8757600080fd5b50565b600081359050613c9981613c73565b92915050565b600060208284031215613cb557613cb4613c3d565b5b6000613cc384828501613c8a565b91505092915050565b60008115159050919050565b613ce181613ccc565b82525050565b6000602082019050613cfc6000830184613cd8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d3c578082015181840152602081019050613d21565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d6482613d02565b613d6e8185613d0d565b9350613d7e818560208601613d1e565b613d8781613d48565b840191505092915050565b60006020820190508181036000830152613dac8184613d59565b905092915050565b6000819050919050565b613dc781613db4565b8114613dd257600080fd5b50565b600081359050613de481613dbe565b92915050565b600060208284031215613e0057613dff613c3d565b5b6000613e0e84828501613dd5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4282613e17565b9050919050565b613e5281613e37565b82525050565b6000602082019050613e6d6000830184613e49565b92915050565b613e7c81613e37565b8114613e8757600080fd5b50565b600081359050613e9981613e73565b92915050565b60008060408385031215613eb657613eb5613c3d565b5b6000613ec485828601613e8a565b9250506020613ed585828601613dd5565b9150509250929050565b613ee881613db4565b82525050565b6000602082019050613f036000830184613edf565b92915050565b600080600060608486031215613f2257613f21613c3d565b5b6000613f3086828701613e8a565b9350506020613f4186828701613e8a565b9250506040613f5286828701613dd5565b9150509250925092565b6000819050919050565b613f6f81613f5c565b8114613f7a57600080fd5b50565b600081359050613f8c81613f66565b92915050565b600060208284031215613fa857613fa7613c3d565b5b6000613fb684828501613f7d565b91505092915050565b613fc881613f5c565b82525050565b6000602082019050613fe36000830184613fbf565b92915050565b6000806040838503121561400057613fff613c3d565b5b600061400e85828601613f7d565b925050602061401f85828601613e8a565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261404e5761404d614029565b5b8235905067ffffffffffffffff81111561406b5761406a61402e565b5b60208301915083602082028301111561408757614086614033565b5b9250929050565b600080602083850312156140a5576140a4613c3d565b5b600083013567ffffffffffffffff8111156140c3576140c2613c42565b5b6140cf85828601614038565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61411081613e37565b82525050565b600067ffffffffffffffff82169050919050565b61413381614116565b82525050565b61414281613ccc565b82525050565b600062ffffff82169050919050565b61416081614148565b82525050565b60808201600082015161417c6000850182614107565b50602082015161418f602085018261412a565b5060408201516141a26040850182614139565b5060608201516141b56060850182614157565b50505050565b60006141c78383614166565b60808301905092915050565b6000602082019050919050565b60006141eb826140db565b6141f581856140e6565b9350614200836140f7565b8060005b8381101561423157815161421888826141bb565b9750614223836141d3565b925050600181019050614204565b5085935050505092915050565b6000602082019050818103600083015261425881846141e0565b905092915050565b60006020828403121561427657614275613c3d565b5b600061428484828501613e8a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142c281613db4565b82525050565b60006142d483836142b9565b60208301905092915050565b6000602082019050919050565b60006142f88261428d565b6143028185614298565b935061430d836142a9565b8060005b8381101561433e57815161432588826142c8565b9750614330836142e0565b925050600181019050614311565b5085935050505092915050565b6000602082019050818103600083015261436581846142ed565b905092915050565b6000806040838503121561438457614383613c3d565b5b600061439285828601613f7d565b92505060206143a385828601613dd5565b9150509250929050565b6000806000606084860312156143c6576143c5613c3d565b5b60006143d486828701613e8a565b93505060206143e586828701613dd5565b92505060406143f686828701613dd5565b9150509250925092565b61440981613ccc565b811461441457600080fd5b50565b60008135905061442681614400565b92915050565b6000806040838503121561444357614442613c3d565b5b600061445185828601613e8a565b925050602061446285828601614417565b9150509250929050565b60008083601f84011261448257614481614029565b5b8235905067ffffffffffffffff81111561449f5761449e61402e565b5b6020830191508360208202830111156144bb576144ba614033565b5b9250929050565b600080602083850312156144d9576144d8613c3d565b5b600083013567ffffffffffffffff8111156144f7576144f6613c42565b5b6145038582860161446c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60006145628261453b565b61456c8185614546565b935061457c818560208601613d1e565b61458581613d48565b840191505092915050565b600061459c8383614557565b905092915050565b6000602082019050919050565b60006145bc8261450f565b6145c6818561451a565b9350836020820285016145d88561452b565b8060005b8581101561461457848403895281516145f58582614590565b9450614600836145a4565b925060208a019950506001810190506145dc565b50829750879550505050505092915050565b6000602082019050818103600083015261464081846145b1565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61468582613d48565b810181811067ffffffffffffffff821117156146a4576146a361464d565b5b80604052505050565b60006146b7613c33565b90506146c3828261467c565b919050565b600067ffffffffffffffff8211156146e3576146e261464d565b5b6146ec82613d48565b9050602081019050919050565b82818337600083830152505050565b600061471b614716846146c8565b6146ad565b90508281526020810184848401111561473757614736614648565b5b6147428482856146f9565b509392505050565b600082601f83011261475f5761475e614029565b5b813561476f848260208601614708565b91505092915050565b6000806000806080858703121561479257614791613c3d565b5b60006147a087828801613e8a565b94505060206147b187828801613e8a565b93505060406147c287828801613dd5565b925050606085013567ffffffffffffffff8111156147e3576147e2613c42565b5b6147ef8782880161474a565b91505092959194509250565b60008083601f84011261481157614810614029565b5b8235905067ffffffffffffffff81111561482e5761482d61402e565b5b60208301915083600182028301111561484a57614849614033565b5b9250929050565b60008060008060008060008060a0898b03121561487157614870613c3d565b5b600061487f8b828c01613e8a565b98505060206148908b828c01613e8a565b975050604089013567ffffffffffffffff8111156148b1576148b0613c42565b5b6148bd8b828c01614038565b9650965050606089013567ffffffffffffffff8111156148e0576148df613c42565b5b6148ec8b828c01614038565b9450945050608089013567ffffffffffffffff81111561490f5761490e613c42565b5b61491b8b828c016147fb565b92509250509295985092959890939650565b61493681613c47565b82525050565b6000602082019050614951600083018461492d565b92915050565b60808201600082015161496d6000850182614107565b506020820151614980602085018261412a565b5060408201516149936040850182614139565b5060608201516149a66060850182614157565b50505050565b60006080820190506149c16000830184614957565b92915050565b600080604083850312156149de576149dd613c3d565b5b60006149ec85828601613e8a565b92505060206149fd85828601613e8a565b9150509250929050565b600067ffffffffffffffff821115614a2257614a2161464d565b5b614a2b82613d48565b9050602081019050919050565b6000614a4b614a4684614a07565b6146ad565b905082815260208101848484011115614a6757614a66614648565b5b614a728482856146f9565b509392505050565b600082601f830112614a8f57614a8e614029565b5b8135614a9f848260208601614a38565b91505092915050565b600060208284031215614abe57614abd613c3d565b5b600082013567ffffffffffffffff811115614adc57614adb613c42565b5b614ae884828501614a7a565b91505092915050565b6000614afc82613e37565b9050919050565b614b0c81614af1565b8114614b1757600080fd5b50565b600081359050614b2981614b03565b92915050565b600060208284031215614b4557614b44613c3d565b5b6000614b5384828501614b1a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ba357607f821691505b602082108103614bb657614bb5614b5c565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614c18602f83613d0d565b9150614c2382614bbc565b604082019050919050565b60006020820190508181036000830152614c4781614c0b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cb782613db4565b9150614cc283613db4565b9250828201905080821115614cda57614cd9614c7d565b5b92915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614d0c57614d0b614ce0565b5b80840192508235915067ffffffffffffffff821115614d2e57614d2d614ce5565b5b602083019250600182023603831315614d4a57614d49614cea565b5b509250929050565b6000614d5d82613db4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d8f57614d8e614c7d565b5b600182019050919050565b7f43657274696669636174653a2053656e646572206e6f742052656d6f76616c00600082015250565b6000614dd0601f83613d0d565b9150614ddb82614d9a565b602082019050919050565b60006020820190508181036000830152614dff81614dc3565b9050919050565b600060208284031215614e1c57614e1b613c3d565b5b6000614e2a84828501614417565b91505092915050565b6000614e3e82613db4565b9150614e4983613db4565b9250828203905081811115614e6157614e60614c7d565b5b92915050565b600080fd5b600060c08284031215614e8257614e81614e67565b5b614e8c60c06146ad565b90506000614e9c84828501614417565b6000830152506020614eb084828501613e8a565b6020830152506040614ec484828501613dd5565b6040830152506060614ed884828501613e8a565b6060830152506080614eec84828501613dd5565b60808301525060a0614f0084828501613dd5565b60a08301525092915050565b600060c08284031215614f2257614f21613c3d565b5b6000614f3084828501614e6c565b91505092915050565b600081905092915050565b6000614f4f82613d02565b614f598185614f39565b9350614f69818560208601613d1e565b80840191505092915050565b6000614f818285614f44565b9150614f8d8284614f44565b91508190509392505050565b7f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460008201527f20697320616c726561647920696e697469616c697a6564000000000000000000602082015250565b6000614ff5603783613d0d565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000615087602e83613d0d565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261511f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150e2565b61512986836150e2565b95508019841693508086168417925050509392505050565b6000819050919050565b600061516661516161515c84613db4565b615141565b613db4565b9050919050565b6000819050919050565b6151808361514b565b61519461518c8261516d565b8484546150ef565b825550505050565b600090565b6151a961519c565b6151b4818484615177565b505050565b5b818110156151d8576151cd6000826151a1565b6001810190506151ba565b5050565b601f82111561521d576151ee816150bd565b6151f7846150d2565b81016020851015615206578190505b61521a615212856150d2565b8301826151b9565b50505b505050565b600082821c905092915050565b600061524060001984600802615222565b1980831691505092915050565b6000615259838361522f565b9150826002028217905092915050565b61527282613d02565b67ffffffffffffffff81111561528b5761528a61464d565b5b6152958254614b8b565b6152a08282856151dc565b600060209050601f8311600181146152d357600084156152c1578287015190505b6152cb858261524d565b865550615333565b601f1984166152e1866150bd565b60005b82811015615309578489015182556001820191506020850194506020810190506152e4565b868310156153265784890151615322601f89168261522f565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b600060ff82169050919050565b600061536d6153686153638461533b565b615141565b615345565b9050919050565b61537d81615352565b82525050565b60006020820190506153986000830184615374565b92915050565b60006153b96153b46153af84613e17565b615141565b613e17565b9050919050565b60006153cb8261539e565b9050919050565b60006153dd826153c0565b9050919050565b6153ed816153d2565b82525050565b600060208201905061540860008301846153e4565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000615444601083613d0d565b915061544f8261540e565b602082019050919050565b6000602082019050818103600083015261547381615437565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006154d6602683613d0d565b91506154e18261547a565b604082019050919050565b60006020820190508181036000830152615505816154c9565b9050919050565b600081905092915050565b60006155228261453b565b61552c818561550c565b935061553c818560208601613d1e565b80840191505092915050565b60006155548284615517565b915081905092915050565b600082825260208201905092915050565b600061557b8261453b565b615585818561555f565b9350615595818560208601613d1e565b61559e81613d48565b840191505092915050565b60006080820190506155be6000830187613e49565b6155cb6020830186613e49565b6155d86040830185613edf565b81810360608301526155ea8184615570565b905095945050505050565b60008151905061560481613c73565b92915050565b6000602082840312156156205761561f613c3d565b5b600061562e848285016155f5565b91505092915050565b600080fd5b82818337505050565b60006156518385614298565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561568457615683615637565b5b60208302925061569583858461563c565b82840190509392505050565b600060c0820190506156b6600083018b613e49565b6156c3602083018a613edf565b81810360408301526156d681888a615645565b905081810360608301526156eb818688615645565b90506156fa6080830185613edf565b61570760a0830184613edf565b9998505050505050505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000615770602b83613d0d565b915061577b82615714565b604082019050919050565b6000602082019050818103600083015261579f81615763565b9050919050565b7f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460008201527f206973206e6f7420696e697469616c697a696e67000000000000000000000000602082015250565b6000615802603483613d0d565b915061580d826157a6565b604082019050919050565b60006020820190508181036000830152615831816157f5565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061586e601783614f39565b915061587982615838565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006158ba601183614f39565b91506158c582615884565b601182019050919050565b60006158db82615861565b91506158e78285614f44565b91506158f2826158ad565b91506158fe8284614f44565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615940601483613d0d565b915061594b8261590a565b602082019050919050565b6000602082019050818103600083015261596f81615933565b9050919050565b7f496e636f727265637420737570706c7920616c6c6f636174696f6e0000000000600082015250565b60006159ac601b83613d0d565b91506159b782615976565b602082019050919050565b600060208201905081810360008301526159db8161599f565b9050919050565b7f72656d6f76616c49647300000000000000000000000000000000000000000000600082015250565b6000615a18600a83613d0d565b9150615a23826159e2565b602082019050919050565b7f72656d6f76616c416d6f756e7473000000000000000000000000000000000000600082015250565b6000615a64600e83613d0d565b9150615a6f82615a2e565b602082019050919050565b60006040820190508181036000830152615a9381615a0b565b90508181036020830152615aa681615a57565b9050919050565b6000615ab882613db4565b9150615ac383613db4565b9250828202615ad181613db4565b91508282048414831517615ae857615ae7614c7d565b5b5092915050565b6000615afa82613db4565b915060008203615b0d57615b0c614c7d565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615b4e602083613d0d565b9150615b5982615b18565b602082019050919050565b60006020820190508181036000830152615b7d81615b41565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f9107b08f618b59c24e5ca519e4c662cb91d9d4ae675b692ca68b4b74bf12e0864736f6c63430008110033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e35760003560e01c806301ffc9a7146101e857806306fdde0314610218578063081812fc14610236578063095ea7b31461026657806318160ddd1461028257806323b872dd146102a0578063248a9ca3146102bc57806326c6da4f146102ec5780632f2ff15d1461030a57806336568abe146103265780633f4ba83a1461034257806342842e0e1461034c57806342966c68146103685780634b66f665146103845780635bbb2177146103a25780635c975abb146103d25780636352211e146103f057806370a082311461042057806379fcc08a146104505780638456cb591461046c5780638462151c146104765780639010d07c146104a657806391d14854146104d657806395d89b411461050657806399a2557a14610524578063a217fddf14610554578063a22cb46514610572578063a2309ff81461058e578063ac9650d8146105ac578063b88d4fde146105dc578063bc197c81146105f8578063c23dc68f14610628578063c87b56dd14610658578063ca15c87314610688578063d2f3ea43146106b8578063d547741f146106e8578063dd39c75014610704578063e63ab1e914610722578063e985e9c514610740578063f62d188814610770578063fc6413731461078c575b600080fd5b61020260048036038101906101fd9190613c9f565b6107a8565b60405161020f9190613ce7565b60405180910390f35b61022061081a565b60405161022d9190613d92565b60405180910390f35b610250600480360381019061024b9190613dea565b6108b5565b60405161025d9190613e58565b60405180910390f35b610280600480360381019061027b9190613e9f565b61093d565b005b61028a61096f565b6040516102979190613eee565b60405180910390f35b6102ba60048036038101906102b59190613f09565b610998565b005b6102d660048036038101906102d19190613f92565b610cf0565b6040516102e39190613fce565b60405180910390f35b6102f4610d10565b6040516103019190613fce565b60405180910390f35b610324600480360381019061031f9190613fe9565b610d34565b005b610340600480360381019061033b9190613fe9565b610d55565b005b61034a610dd8565b005b61036660048036038101906103619190613f09565b610e0d565b005b610382600480360381019061037d9190613dea565b610e2d565b005b61038c610e3b565b6040516103999190613e58565b60405180910390f35b6103bc60048036038101906103b7919061408e565b610e66565b6040516103c9919061423e565b60405180910390f35b6103da610f29565b6040516103e79190613ce7565b60405180910390f35b61040a60048036038101906104059190613dea565b610f40565b6040516104179190613e58565b60405180910390f35b61043a60048036038101906104359190614260565b610f52565b6040516104479190613eee565b60405180910390f35b61046a60048036038101906104659190613dea565b611013565b005b6104746110c7565b005b610490600480360381019061048b9190614260565b6110fc565b60405161049d919061434b565b60405180910390f35b6104c060048036038101906104bb919061436d565b61123f565b6040516104cd9190613e58565b60405180910390f35b6104f060048036038101906104eb9190613fe9565b61126e565b6040516104fd9190613ce7565b60405180910390f35b61050e6112d9565b60405161051b9190613d92565b60405180910390f35b61053e600480360381019061053991906143ad565b611374565b60405161054b919061434b565b60405180910390f35b61055c611580565b6040516105699190613fce565b60405180910390f35b61058c6004803603810190610587919061442c565b611587565b005b6105966115b9565b6040516105a39190613eee565b60405180910390f35b6105c660048036038101906105c191906144c2565b6115c8565b6040516105d39190614626565b60405180910390f35b6105f660048036038101906105f19190614778565b6116d4565b005b610612600480360381019061060d9190614851565b611747565b60405161061f919061493c565b60405180910390f35b610642600480360381019061063d9190613dea565b6118b9565b60405161064f91906149ac565b60405180910390f35b610672600480360381019061066d9190613dea565b611923565b60405161067f9190613d92565b60405180910390f35b6106a2600480360381019061069d9190613f92565b6119c1565b6040516106af9190613eee565b60405180910390f35b6106d260048036038101906106cd9190613dea565b6119e5565b6040516106df9190613eee565b60405180910390f35b61070260048036038101906106fd9190613fe9565b611a03565b005b61070c611a24565b6040516107199190613eee565b60405180910390f35b61072a611a2f565b6040516107379190613fce565b60405180910390f35b61075a600480360381019061075591906149c7565b611a53565b6040516107679190613ce7565b60405180910390f35b61078a60048036038101906107859190614aa8565b611af0565b005b6107a660048036038101906107a19190614b2f565b611e7f565b005b60006107b382611f11565b806107e357506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108135750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060610824611f8b565b600201805461083290614b8b565b80601f016020809104026020016040519081016040528092919081815260200182805461085e90614b8b565b80156108ab5780601f10610880576101008083540402835291602001916108ab565b820191906000526020600020905b81548152906001019060200180831161088e57829003601f168201915b5050505050905090565b60006108c082611fb8565b6108f6576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108fe611f8b565b600601600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6040517fbf24148800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610979612029565b610981611f8b565b6001015461098d611f8b565b600001540303905090565b60006109a38261202e565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610a1684612115565b91509150610a2c8187610a27612145565b612154565b610a7857610a4186610a3c612145565b611a53565b610a77576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610ade576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aeb8686866001612198565b8015610af657600082555b610afe611f8b565b60050160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550610b55611f8b565b60050160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610bd685610bb288888761229d565b7c0200000000000000000000000000000000000000000000000000000000176122c5565b610bde611f8b565b60040160008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610c805760006001850190506000610c2f611f8b565b60040160008381526020019081526020016000205403610c7e57610c51611f8b565b600001548114610c7d5783610c64611f8b565b6004016000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610ce886868660016122f0565b505050505050565b600060c96000838152602001908152602001600020600101549050919050565b7fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f81565b610d3d82610cf0565b610d46816122f6565b610d50838361230a565b505050565b610d5d612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc190614c2e565b60405180910390fd5b610dd48282612328565b5050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610e02816122f6565b610e0a61233e565b50565b610e28838383604051806020016040528060008152506116d4565b505050565b610e388160016123a1565b50565b600061012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600083839050905060008167ffffffffffffffff811115610e8c57610e8b61464d565b5b604051908082528060200260200182016040528015610ec557816020015b610eb2613be4565b815260200190600190039081610eaa5790505b50905060005b828114610f1d57610ef4868683818110610ee857610ee7614c4e565b5b905060200201356118b9565b828281518110610f0757610f06614c4e565b5b6020026020010181905250806001019050610ecb565b50809250505092915050565b6000606560009054906101000a900460ff16905090565b6000610f4b8261202e565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fb9576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff610fca611f8b565b60050160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b61101b612629565b61012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661105d612320565b73ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f9a5ed74b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061012e60008282546110bd9190614cac565b9250508190555050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6110f1816122f6565b6110f9612673565b50565b6060600080600061110c85610f52565b905060008167ffffffffffffffff81111561112a5761112961464d565b5b6040519080825280602002602001820160405280156111585781602001602082028036833780820191505090505b509050611163613be4565b600061116d612029565b90505b83861461123157611180816126d6565b9150816040015161122657600073ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146111cb57816000015194505b8773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611225578083878060010198508151811061121857611217614c4e565b5b6020026020010181815250505b5b806001019050611170565b508195505050505050919050565b60006112668260fb600086815260200190815260200160002061270a90919063ffffffff16565b905092915050565b600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60606112e3611f8b565b60030180546112f190614b8b565b80601f016020809104026020016040519081016040528092919081815260200182805461131d90614b8b565b801561136a5780601f1061133f5761010080835404028352916020019161136a565b820191906000526020600020905b81548152906001019060200180831161134d57829003601f168201915b5050505050905090565b60608183106113af576040517f32c1995a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806113ba612724565b90506113c4612029565b8510156113d6576113d3612029565b94505b808411156113e2578093505b60006113ed87610f52565b90508486101561141057600086860390508181101561140a578091505b50611415565b600090505b60008167ffffffffffffffff8111156114315761143061464d565b5b60405190808252806020026020018201604052801561145f5781602001602082028036833780820191505090505b509050600082036114765780945050505050611579565b6000611481886118b9565b90506000816040015161149657816000015190505b60008990505b8881141580156114ac5750848714155b1561156b576114ba816126d6565b9250826040015161156057600073ffffffffffffffffffffffffffffffffffffffff16836000015173ffffffffffffffffffffffffffffffffffffffff161461150557826000015191505b8a73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155f578084888060010199508151811061155257611551614c4e565b5b6020026020010181815250505b5b80600101905061149c565b508583528296505050505050505b9392505050565b6000801b81565b6040517fbf24148800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006115c3612737565b905090565b60608282905067ffffffffffffffff8111156115e7576115e661464d565b5b60405190808252806020026020018201604052801561161a57816020015b60608152602001906001900390816116055790505b50905060005b838390508110156116cd5761169c3085858481811061164257611641614c4e565b5b90506020028101906116549190614cef565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050612753565b8282815181106116af576116ae614c4e565b5b602002602001018190525080806116c590614d52565b915050611620565b5092915050565b6116df848484610998565b60008373ffffffffffffffffffffffffffffffffffffffff163b146117415761170a84848484612837565b611740576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b600061012f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661178b612320565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890614de6565b60405180910390fd5b600083838101906117f29190614e06565b90508015611868576000611846878780806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612987565b90508061012e600082825461185b9190614e33565b92505081905550506118a2565b600084848101906118799190614f0c565b90506118a0816020015182604001518b8b8b8b876060015188608001518960a001516129c6565b505b63bc197c8160e01b91505098975050505050505050565b6118c1613be4565b6118c9613be4565b6118d1612029565b8310806118e557506118e1612724565b8310155b156118f3578091505061191e565b6118fc836126d6565b9050806040015115611911578091505061191e565b61191a83612a8a565b9150505b919050565b606061192e82611fb8565b611964576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061196e612aaa565b9050600081510361198e57604051806020016040528060008152506119b9565b8061199884612b3d565b6040516020016119a9929190614f75565b6040516020818303038152906040525b915050919050565b60006119de60fb6000848152602001908152602001600020612b84565b9050919050565b600061012d6000838152602001908152602001600020549050919050565b611a0c82610cf0565b611a15816122f6565b611a1f8383612328565b505050565b600061012e54905090565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000611a5d611f8b565b60070160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611af8612b99565b60000160019054906101000a900460ff16611b2c57611b15612b99565b60000160009054906101000a900460ff1615611b35565b611b34612bc6565b5b611b74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6b9061500b565b60405180910390fd5b6000611b7e612b99565b60000160019054906101000a900460ff161590508015611be1576001611ba2612b99565b60000160016101000a81548160ff0219169083151502179055506001611bc6612b99565b60000160006101000a81548160ff0219169083151502179055505b60008060019054906101000a900460ff16159050808015611c125750600160008054906101000a900460ff1660ff16105b80611c3f5750611c2130612bdd565b158015611c3e5750600160008054906101000a900460ff1660ff16145b5b611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c759061509d565b60405180910390fd5b60016000806101000a81548160ff021916908360ff1602179055508015611cbb576001600060016101000a81548160ff0219169083151502179055505b826101309081611ccb9190615269565b50611cd4612c00565b611cdc612c51565b611d506040518060400160405280600b81526020017f43657274696669636174650000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e43435200000000000000000000000000000000000000000000000000000000815250612ca2565b611d58612d47565b611d60612da1565b611d68612dfb565b611d70612e67565b611d78612eb8565b611d80612f09565b611d946000801b611d8f612320565b61230a565b611dc57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a611dc0612320565b61230a565b611df67fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f611df1612320565b61230a565b8015611e4f5760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024986001604051611e469190615383565b60405180910390a15b508015611e7b576000611e60612b99565b60000160016101000a81548160ff0219169083151502179055505b5050565b611e87612629565b6000801b611e94816122f6565b8161012f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb1baf34c07e5c91807f2e3dd3326873be3e2406ef6703ddb0946280f1b895f8b82604051611f0591906153f3565b60405180910390a15050565b60007f5a05180f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611f845750611f8382612f5a565b5b9050919050565b6000807f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090508091505090565b600081611fc3612029565b11158015611fdb5750611fd4611f8b565b6000015482105b8015612022575060007c010000000000000000000000000000000000000000000000000000000061200a611f8b565b60040160008581526020019081526020016000205416145b9050919050565b600090565b6000808290508061203d612029565b116120de5761204a611f8b565b600001548110156120dd57600061205f611f8b565b600401600083815260200190815260200160002054905060007c01000000000000000000000000000000000000000000000000000000008216036120db575b600081036120d1576120ae611f8b565b60040160008360019003935083815260200190815260200160002054905061209e565b8092505050612110565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000612122611f8b565b600601600085815260200190815260200160002090508092508254915050915091565b600061214f612320565b905090565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b6121a0612629565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415905060008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614159050600061223b7fb6eeb50d1ea0d876d560efb18b8017323347ce323ef4b05d5a0322c9c7869f8f612236612320565b61126e565b1590508280156122485750815b80156122515750805b15612288576040517f175e5a9000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61229487878787612fd4565b50505050505050565b60008060e883901c905060e86122b4868684612fda565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b61230781612302612320565b612fe3565b50565b612312612629565b61231c8282613068565b5050565b600033905090565b612330612629565b61233a828261309c565b5050565b6123466130d0565b6000606560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61238a612320565b6040516123979190613e58565b60405180910390a1565b60006123ac8361202e565b905060008190506000806123bf86612115565b915091508415612428576123db81846123d6612145565b612154565b612427576123f0836123eb612145565b611a53565b612426576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b612436836000886001612198565b801561244157600082555b600160806001901b03612452611f8b565b60050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506124f2836124af8560008861229d565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176122c5565b6124fa611f8b565b60040160008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085160361259c576000600187019050600061254b611f8b565b6004016000838152602001908152602001600020540361259a5761256d611f8b565b6000015481146125995784612580611f8b565b6004016000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126068360008860016122f0565b61260e611f8b565b60010160008154809291906001019190505550505050505050565b612631610f29565b15612671576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126689061545a565b60405180910390fd5b565b61267b612629565b6001606560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126bf612320565b6040516126cc9190613e58565b60405180910390a1565b6126de613be4565b6127036126e9611f8b565b600401600084815260200190815260200160002054613119565b9050919050565b600061271983600001836131cf565b60001c905092915050565b600061272e611f8b565b60000154905090565b6000612741612029565b612749611f8b565b6000015403905090565b606061275e83612bdd565b61279d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612794906154ec565b60405180910390fd5b6000808473ffffffffffffffffffffffffffffffffffffffff16846040516127c59190615548565b600060405180830381855af49150503d8060008114612800576040519150601f19603f3d011682016040523d82523d6000602084013e612805565b606091505b509150915061282d8282604051806060016040528060278152602001615bb4602791396131fa565b9250505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0261285d612145565b8786866040518563ffffffff1660e01b815260040161287f94939291906155a9565b6020604051808303816000875af19250505080156128bb57506040513d601f19601f820116820180604052508101906128b8919061560a565b60015b612934573d80600081146128eb576040519150601f19603f3d011682016040523d82523d6000602084013e6128f0565b606091505b50600081510361292c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60008151602083016020820281015b808210156129be5783825185019450808510156129b257600080fd5b50602082019150612996565b505050919050565b6129d3878787878c61321c565b60006129dd612724565b90508861012d600083815260200190815260200160002081905550612a038a60016132f6565b8373ffffffffffffffffffffffffffffffffffffffff16818b73ffffffffffffffffffffffffffffffffffffffff167fc75c026f88960a2ba4c2eb0bad4326d77c1116b7e40c22b88077c38535a7982d612a5b612320565b8d8d8d8d8d8c8c604051612a769897969594939291906156a1565b60405180910390a450505050505050505050565b612a92613be4565b612aa3612a9e8361202e565b613119565b9050919050565b60606101308054612aba90614b8b565b80601f0160208091040260200160405190810160405280929190818152602001828054612ae690614b8b565b8015612b335780601f10612b0857610100808354040283529160200191612b33565b820191906000526020600020905b815481529060010190602001808311612b1657829003601f168201915b5050505050905090565b606060806040510190508060405280825b600115612b7057600183039250600a81066030018353600a8104905080612b4e575b508181036020830392508083525050919050565b6000612b92826000016134d6565b9050919050565b6000807fee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85f90508091505090565b6000803090506000813b9050600081149250505090565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4690615786565b60405180910390fd5b565b600060019054906101000a900460ff16612ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c9790615786565b60405180910390fd5b565b612caa612b99565b60000160019054906101000a900460ff16612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190615818565b60405180910390fd5b81612d03611f8b565b6002019081612d129190615269565b5080612d1c611f8b565b6003019081612d2b9190615269565b50612d34612029565b612d3c611f8b565b600001819055505050565b612d4f612b99565b60000160019054906101000a900460ff16612d9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d9690615818565b60405180910390fd5b565b612da9612b99565b60000160019054906101000a900460ff16612df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df090615818565b60405180910390fd5b565b600060019054906101000a900460ff16612e4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4190615786565b60405180910390fd5b6000606560006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16612eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ead90615786565b60405180910390fd5b565b600060019054906101000a900460ff16612f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612efe90615786565b60405180910390fd5b565b600060019054906101000a900460ff16612f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4f90615786565b60405180910390fd5b565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612fcd5750612fcc826134e7565b5b9050919050565b50505050565b60009392505050565b612fed828261126e565b61306457612ffa81613551565b6130088360001c602061357e565b6040516020016130199291906158d0565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305b9190613d92565b60405180910390fd5b5050565b61307282826137ba565b6130978160fb600085815260200190815260200160002061389b90919063ffffffff16565b505050565b6130a682826138cb565b6130cb8160fb60008581526020019081526020016000206139ad90919063ffffffff16565b505050565b6130d8610f29565b613117576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161310e90615956565b60405180910390fd5b565b613121613be4565b81816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060a082901c816020019067ffffffffffffffff16908167ffffffffffffffff168152505060007c01000000000000000000000000000000000000000000000000000000008316141581604001901515908115158152505060e882901c816060019062ffffff16908162ffffff1681525050919050565b60008260000182815481106131e7576131e6614c4e565b5b9060005260206000200154905092915050565b6060831561320a57829050613215565b61321483836139dd565b5b9392505050565b80613267848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050612987565b146132a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161329e906159c2565b60405180910390fd5b8282905085859050146132ef576040517f616c41130000000000000000000000000000000000000000000000000000000081526004016132e690615a7a565b60405180910390fd5b5050505050565b6000613300611f8b565b60000154905060008203613340576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61334d6000848385612198565b600160406001901b178202613360611f8b565b60050160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506133cd836133be600086600061229d565b6133c785613a2d565b176122c5565b6133d5611f8b565b600401600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b81811461347757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905061343c565b50600082036134b2576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806134bb611f8b565b6000018190555050506134d160008483856122f0565b505050565b600081600001805490509050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60606135778273ffffffffffffffffffffffffffffffffffffffff16601460ff1661357e565b9050919050565b6060600060028360026135919190615aad565b61359b9190614cac565b67ffffffffffffffff8111156135b4576135b361464d565b5b6040519080825280601f01601f1916602001820160405280156135e65781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061361e5761361d614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061368257613681614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026136c29190615aad565b6136cc9190614cac565b90505b600181111561376c577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061370e5761370d614c4e565b5b1a60f81b82828151811061372557613724614c4e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061376590615aef565b90506136cf565b50600084146137b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a790615b64565b60405180910390fd5b8091505092915050565b6137c4828261126e565b61389757600160c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061383c612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b60006138c3836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613a3d565b905092915050565b6138d5828261126e565b156139a957600060c9600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061394e612320565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006139d5836000018373ffffffffffffffffffffffffffffffffffffffff1660001b613aad565b905092915050565b6000825111156139f05781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a249190613d92565b60405180910390fd5b60006001821460e11b9050919050565b6000613a498383613bc1565b613aa2578260000182908060018154018082558091505060019003906000526020600020016000909190919091505582600001805490508360010160008481526020019081526020016000208190555060019050613aa7565b600090505b92915050565b60008083600101600084815260200190815260200160002054905060008114613bb5576000600182613adf9190614e33565b9050600060018660000180549050613af79190614e33565b9050818114613b66576000866000018281548110613b1857613b17614c4e565b5b9060005260206000200154905080876000018481548110613b3c57613b3b614c4e565b5b90600052602060002001819055508387600101600083815260200190815260200160002081905550505b85600001805480613b7a57613b79615b84565b5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050613bbb565b60009150505b92915050565b600080836001016000848152602001908152602001600020541415905092915050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff168152602001600015158152602001600062ffffff1681525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b613c7c81613c47565b8114613c8757600080fd5b50565b600081359050613c9981613c73565b92915050565b600060208284031215613cb557613cb4613c3d565b5b6000613cc384828501613c8a565b91505092915050565b60008115159050919050565b613ce181613ccc565b82525050565b6000602082019050613cfc6000830184613cd8565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d3c578082015181840152602081019050613d21565b60008484015250505050565b6000601f19601f8301169050919050565b6000613d6482613d02565b613d6e8185613d0d565b9350613d7e818560208601613d1e565b613d8781613d48565b840191505092915050565b60006020820190508181036000830152613dac8184613d59565b905092915050565b6000819050919050565b613dc781613db4565b8114613dd257600080fd5b50565b600081359050613de481613dbe565b92915050565b600060208284031215613e0057613dff613c3d565b5b6000613e0e84828501613dd5565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4282613e17565b9050919050565b613e5281613e37565b82525050565b6000602082019050613e6d6000830184613e49565b92915050565b613e7c81613e37565b8114613e8757600080fd5b50565b600081359050613e9981613e73565b92915050565b60008060408385031215613eb657613eb5613c3d565b5b6000613ec485828601613e8a565b9250506020613ed585828601613dd5565b9150509250929050565b613ee881613db4565b82525050565b6000602082019050613f036000830184613edf565b92915050565b600080600060608486031215613f2257613f21613c3d565b5b6000613f3086828701613e8a565b9350506020613f4186828701613e8a565b9250506040613f5286828701613dd5565b9150509250925092565b6000819050919050565b613f6f81613f5c565b8114613f7a57600080fd5b50565b600081359050613f8c81613f66565b92915050565b600060208284031215613fa857613fa7613c3d565b5b6000613fb684828501613f7d565b91505092915050565b613fc881613f5c565b82525050565b6000602082019050613fe36000830184613fbf565b92915050565b6000806040838503121561400057613fff613c3d565b5b600061400e85828601613f7d565b925050602061401f85828601613e8a565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f84011261404e5761404d614029565b5b8235905067ffffffffffffffff81111561406b5761406a61402e565b5b60208301915083602082028301111561408757614086614033565b5b9250929050565b600080602083850312156140a5576140a4613c3d565b5b600083013567ffffffffffffffff8111156140c3576140c2613c42565b5b6140cf85828601614038565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61411081613e37565b82525050565b600067ffffffffffffffff82169050919050565b61413381614116565b82525050565b61414281613ccc565b82525050565b600062ffffff82169050919050565b61416081614148565b82525050565b60808201600082015161417c6000850182614107565b50602082015161418f602085018261412a565b5060408201516141a26040850182614139565b5060608201516141b56060850182614157565b50505050565b60006141c78383614166565b60808301905092915050565b6000602082019050919050565b60006141eb826140db565b6141f581856140e6565b9350614200836140f7565b8060005b8381101561423157815161421888826141bb565b9750614223836141d3565b925050600181019050614204565b5085935050505092915050565b6000602082019050818103600083015261425881846141e0565b905092915050565b60006020828403121561427657614275613c3d565b5b600061428484828501613e8a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6142c281613db4565b82525050565b60006142d483836142b9565b60208301905092915050565b6000602082019050919050565b60006142f88261428d565b6143028185614298565b935061430d836142a9565b8060005b8381101561433e57815161432588826142c8565b9750614330836142e0565b925050600181019050614311565b5085935050505092915050565b6000602082019050818103600083015261436581846142ed565b905092915050565b6000806040838503121561438457614383613c3d565b5b600061439285828601613f7d565b92505060206143a385828601613dd5565b9150509250929050565b6000806000606084860312156143c6576143c5613c3d565b5b60006143d486828701613e8a565b93505060206143e586828701613dd5565b92505060406143f686828701613dd5565b9150509250925092565b61440981613ccc565b811461441457600080fd5b50565b60008135905061442681614400565b92915050565b6000806040838503121561444357614442613c3d565b5b600061445185828601613e8a565b925050602061446285828601614417565b9150509250929050565b60008083601f84011261448257614481614029565b5b8235905067ffffffffffffffff81111561449f5761449e61402e565b5b6020830191508360208202830111156144bb576144ba614033565b5b9250929050565b600080602083850312156144d9576144d8613c3d565b5b600083013567ffffffffffffffff8111156144f7576144f6613c42565b5b6145038582860161446c565b92509250509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600081519050919050565b600082825260208201905092915050565b60006145628261453b565b61456c8185614546565b935061457c818560208601613d1e565b61458581613d48565b840191505092915050565b600061459c8383614557565b905092915050565b6000602082019050919050565b60006145bc8261450f565b6145c6818561451a565b9350836020820285016145d88561452b565b8060005b8581101561461457848403895281516145f58582614590565b9450614600836145a4565b925060208a019950506001810190506145dc565b50829750879550505050505092915050565b6000602082019050818103600083015261464081846145b1565b905092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61468582613d48565b810181811067ffffffffffffffff821117156146a4576146a361464d565b5b80604052505050565b60006146b7613c33565b90506146c3828261467c565b919050565b600067ffffffffffffffff8211156146e3576146e261464d565b5b6146ec82613d48565b9050602081019050919050565b82818337600083830152505050565b600061471b614716846146c8565b6146ad565b90508281526020810184848401111561473757614736614648565b5b6147428482856146f9565b509392505050565b600082601f83011261475f5761475e614029565b5b813561476f848260208601614708565b91505092915050565b6000806000806080858703121561479257614791613c3d565b5b60006147a087828801613e8a565b94505060206147b187828801613e8a565b93505060406147c287828801613dd5565b925050606085013567ffffffffffffffff8111156147e3576147e2613c42565b5b6147ef8782880161474a565b91505092959194509250565b60008083601f84011261481157614810614029565b5b8235905067ffffffffffffffff81111561482e5761482d61402e565b5b60208301915083600182028301111561484a57614849614033565b5b9250929050565b60008060008060008060008060a0898b03121561487157614870613c3d565b5b600061487f8b828c01613e8a565b98505060206148908b828c01613e8a565b975050604089013567ffffffffffffffff8111156148b1576148b0613c42565b5b6148bd8b828c01614038565b9650965050606089013567ffffffffffffffff8111156148e0576148df613c42565b5b6148ec8b828c01614038565b9450945050608089013567ffffffffffffffff81111561490f5761490e613c42565b5b61491b8b828c016147fb565b92509250509295985092959890939650565b61493681613c47565b82525050565b6000602082019050614951600083018461492d565b92915050565b60808201600082015161496d6000850182614107565b506020820151614980602085018261412a565b5060408201516149936040850182614139565b5060608201516149a66060850182614157565b50505050565b60006080820190506149c16000830184614957565b92915050565b600080604083850312156149de576149dd613c3d565b5b60006149ec85828601613e8a565b92505060206149fd85828601613e8a565b9150509250929050565b600067ffffffffffffffff821115614a2257614a2161464d565b5b614a2b82613d48565b9050602081019050919050565b6000614a4b614a4684614a07565b6146ad565b905082815260208101848484011115614a6757614a66614648565b5b614a728482856146f9565b509392505050565b600082601f830112614a8f57614a8e614029565b5b8135614a9f848260208601614a38565b91505092915050565b600060208284031215614abe57614abd613c3d565b5b600082013567ffffffffffffffff811115614adc57614adb613c42565b5b614ae884828501614a7a565b91505092915050565b6000614afc82613e37565b9050919050565b614b0c81614af1565b8114614b1757600080fd5b50565b600081359050614b2981614b03565b92915050565b600060208284031215614b4557614b44613c3d565b5b6000614b5384828501614b1a565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614ba357607f821691505b602082108103614bb657614bb5614b5c565b5b50919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000614c18602f83613d0d565b9150614c2382614bbc565b604082019050919050565b60006020820190508181036000830152614c4781614c0b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cb782613db4565b9150614cc283613db4565b9250828201905080821115614cda57614cd9614c7d565b5b92915050565b600080fd5b600080fd5b600080fd5b60008083356001602003843603038112614d0c57614d0b614ce0565b5b80840192508235915067ffffffffffffffff821115614d2e57614d2d614ce5565b5b602083019250600182023603831315614d4a57614d49614cea565b5b509250929050565b6000614d5d82613db4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614d8f57614d8e614c7d565b5b600182019050919050565b7f43657274696669636174653a2053656e646572206e6f742052656d6f76616c00600082015250565b6000614dd0601f83613d0d565b9150614ddb82614d9a565b602082019050919050565b60006020820190508181036000830152614dff81614dc3565b9050919050565b600060208284031215614e1c57614e1b613c3d565b5b6000614e2a84828501614417565b91505092915050565b6000614e3e82613db4565b9150614e4983613db4565b9250828203905081811115614e6157614e60614c7d565b5b92915050565b600080fd5b600060c08284031215614e8257614e81614e67565b5b614e8c60c06146ad565b90506000614e9c84828501614417565b6000830152506020614eb084828501613e8a565b6020830152506040614ec484828501613dd5565b6040830152506060614ed884828501613e8a565b6060830152506080614eec84828501613dd5565b60808301525060a0614f0084828501613dd5565b60a08301525092915050565b600060c08284031215614f2257614f21613c3d565b5b6000614f3084828501614e6c565b91505092915050565b600081905092915050565b6000614f4f82613d02565b614f598185614f39565b9350614f69818560208601613d1e565b80840191505092915050565b6000614f818285614f44565b9150614f8d8284614f44565b91508190509392505050565b7f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460008201527f20697320616c726561647920696e697469616c697a6564000000000000000000602082015250565b6000614ff5603783613d0d565b915061500082614f99565b604082019050919050565b6000602082019050818103600083015261502481614fe8565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000615087602e83613d0d565b91506150928261502b565b604082019050919050565b600060208201905081810360008301526150b68161507a565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261511f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826150e2565b61512986836150e2565b95508019841693508086168417925050509392505050565b6000819050919050565b600061516661516161515c84613db4565b615141565b613db4565b9050919050565b6000819050919050565b6151808361514b565b61519461518c8261516d565b8484546150ef565b825550505050565b600090565b6151a961519c565b6151b4818484615177565b505050565b5b818110156151d8576151cd6000826151a1565b6001810190506151ba565b5050565b601f82111561521d576151ee816150bd565b6151f7846150d2565b81016020851015615206578190505b61521a615212856150d2565b8301826151b9565b50505b505050565b600082821c905092915050565b600061524060001984600802615222565b1980831691505092915050565b6000615259838361522f565b9150826002028217905092915050565b61527282613d02565b67ffffffffffffffff81111561528b5761528a61464d565b5b6152958254614b8b565b6152a08282856151dc565b600060209050601f8311600181146152d357600084156152c1578287015190505b6152cb858261524d565b865550615333565b601f1984166152e1866150bd565b60005b82811015615309578489015182556001820191506020850194506020810190506152e4565b868310156153265784890151615322601f89168261522f565b8355505b6001600288020188555050505b505050505050565b6000819050919050565b600060ff82169050919050565b600061536d6153686153638461533b565b615141565b615345565b9050919050565b61537d81615352565b82525050565b60006020820190506153986000830184615374565b92915050565b60006153b96153b46153af84613e17565b615141565b613e17565b9050919050565b60006153cb8261539e565b9050919050565b60006153dd826153c0565b9050919050565b6153ed816153d2565b82525050565b600060208201905061540860008301846153e4565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000615444601083613d0d565b915061544f8261540e565b602082019050919050565b6000602082019050818103600083015261547381615437565b9050919050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60008201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b60006154d6602683613d0d565b91506154e18261547a565b604082019050919050565b60006020820190508181036000830152615505816154c9565b9050919050565b600081905092915050565b60006155228261453b565b61552c818561550c565b935061553c818560208601613d1e565b80840191505092915050565b60006155548284615517565b915081905092915050565b600082825260208201905092915050565b600061557b8261453b565b615585818561555f565b9350615595818560208601613d1e565b61559e81613d48565b840191505092915050565b60006080820190506155be6000830187613e49565b6155cb6020830186613e49565b6155d86040830185613edf565b81810360608301526155ea8184615570565b905095945050505050565b60008151905061560481613c73565b92915050565b6000602082840312156156205761561f613c3d565b5b600061562e848285016155f5565b91505092915050565b600080fd5b82818337505050565b60006156518385614298565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561568457615683615637565b5b60208302925061569583858461563c565b82840190509392505050565b600060c0820190506156b6600083018b613e49565b6156c3602083018a613edf565b81810360408301526156d681888a615645565b905081810360608301526156eb818688615645565b90506156fa6080830185613edf565b61570760a0830184613edf565b9998505050505050505050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b6000615770602b83613d0d565b915061577b82615714565b604082019050919050565b6000602082019050818103600083015261579f81615763565b9050919050565b7f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460008201527f206973206e6f7420696e697469616c697a696e67000000000000000000000000602082015250565b6000615802603483613d0d565b915061580d826157a6565b604082019050919050565b60006020820190508181036000830152615831816157f5565b9050919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b600061586e601783614f39565b915061587982615838565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b60006158ba601183614f39565b91506158c582615884565b601182019050919050565b60006158db82615861565b91506158e78285614f44565b91506158f2826158ad565b91506158fe8284614f44565b91508190509392505050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000615940601483613d0d565b915061594b8261590a565b602082019050919050565b6000602082019050818103600083015261596f81615933565b9050919050565b7f496e636f727265637420737570706c7920616c6c6f636174696f6e0000000000600082015250565b60006159ac601b83613d0d565b91506159b782615976565b602082019050919050565b600060208201905081810360008301526159db8161599f565b9050919050565b7f72656d6f76616c49647300000000000000000000000000000000000000000000600082015250565b6000615a18600a83613d0d565b9150615a23826159e2565b602082019050919050565b7f72656d6f76616c416d6f756e7473000000000000000000000000000000000000600082015250565b6000615a64600e83613d0d565b9150615a6f82615a2e565b602082019050919050565b60006040820190508181036000830152615a9381615a0b565b90508181036020830152615aa681615a57565b9050919050565b6000615ab882613db4565b9150615ac383613db4565b9250828202615ad181613db4565b91508282048414831517615ae857615ae7614c7d565b5b5092915050565b6000615afa82613db4565b915060008203615b0d57615b0c614c7d565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000615b4e602083613d0d565b9150615b5982615b18565b602082019050919050565b60006020820190508181036000830152615b7d81615b41565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f9107b08f618b59c24e5ca519e4c662cb91d9d4ae675b692ca68b4b74bf12e0864736f6c63430008110033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}
