UNPKG

kamiweb3-sdk

Version:

TypeScript SDK for KAMI721-C, KAMI721-AC, and KAMI1155-C smart contracts

2,035 lines 186 kB
{
    "_format": "hh-sol-artifact-1",
    "contractName": "KAMI1155CUpgradeable",
    "sourceName": "contracts/KAMI1155CUpgradeable.sol",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "previousAdmin",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "newAdmin",
                    "type": "address"
                }
            ],
            "name": "AdminChanged",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "account",
                    "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": "address",
                    "name": "beacon",
                    "type": "address"
                }
            ],
            "name": "BeaconUpgraded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint8",
                    "name": "version",
                    "type": "uint8"
                }
            ],
            "name": "Initialized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "indexed": false,
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "MintRoyaltiesUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Paused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "platformAddress",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "PlatformCommissionPaid",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "uint96",
                    "name": "newPercentage",
                    "type": "uint96"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "newPlatformAddress",
                    "type": "address"
                }
            ],
            "name": "PlatformCommissionUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                }
            ],
            "name": "RentalEnded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "RentalEnded",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "newEndTime",
                    "type": "uint256"
                }
            ],
            "name": "RentalExtended",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "newEndTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "additionalPayment",
                    "type": "uint256"
                }
            ],
            "name": "RentalExtended",
            "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": false,
                    "internalType": "uint96",
                    "name": "newPercentage",
                    "type": "uint96"
                }
            ],
            "name": "RoyaltyPercentageUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "indexed": false,
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "TokenMintRoyaltiesUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "price",
                    "type": "uint256"
                }
            ],
            "name": "TokenMinted",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "endTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "rentalPrice",
                    "type": "uint256"
                }
            ],
            "name": "TokenRented",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "endTime",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "price",
                    "type": "uint256"
                }
            ],
            "name": "TokenRented",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "TokenSold",
            "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"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "price",
                    "type": "uint256"
                }
            ],
            "name": "TokenSold",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "indexed": false,
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "TokenTransferRoyaltiesUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "ids",
                    "type": "uint256[]"
                },
                {
                    "indexed": false,
                    "internalType": "uint256[]",
                    "name": "values",
                    "type": "uint256[]"
                }
            ],
            "name": "TransferBatch",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "indexed": false,
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "TransferRoyaltiesUpdated",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "TransferRoyaltyPaid",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "requiredAmount",
                    "type": "uint256"
                }
            ],
            "name": "TransferRoyaltyRequired",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "value",
                    "type": "uint256"
                }
            ],
            "name": "TransferSingle",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "string",
                    "name": "value",
                    "type": "string"
                },
                {
                    "indexed": true,
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "URI",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "Unpaused",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "implementation",
                    "type": "address"
                }
            ],
            "name": "Upgraded",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "DEFAULT_ADMIN_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "OWNER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "PLATFORM_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "RENTER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "UPGRADER_ROLE",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "_dummyGetApproved",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "_dummyTokenByIndex",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "_getTotalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address[]",
                    "name": "accounts",
                    "type": "address[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "ids",
                    "type": "uint256[]"
                }
            ],
            "name": "balanceOfBatch",
            "outputs": [
                {
                    "internalType": "uint256[]",
                    "name": "",
                    "type": "uint256[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "burn",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "tokenIds",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                }
            ],
            "name": "burnBatch",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "endRental",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "exists",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "additionalDuration",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "additionalPayment",
                    "type": "uint256"
                }
            ],
            "name": "extendRental",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getMintRoyaltyReceivers",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getRentalInfo",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "renter",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "startTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "endTime",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "rentalPrice",
                    "type": "uint256"
                },
                {
                    "internalType": "bool",
                    "name": "active",
                    "type": "bool"
                }
            ],
            "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": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getTransferRoyaltyReceivers",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "",
                    "type": "tuple[]"
                }
            ],
            "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": "address",
                    "name": "user",
                    "type": "address"
                }
            ],
            "name": "hasActiveRentals",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "hasRole",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "paymentToken_",
                    "type": "address"
                },
                {
                    "internalType": "string",
                    "name": "name_",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "symbol_",
                    "type": "string"
                },
                {
                    "internalType": "string",
                    "name": "baseURI_",
                    "type": "string"
                },
                {
                    "internalType": "uint256",
                    "name": "mintPrice_",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "platformAddress_",
                    "type": "address"
                },
                {
                    "internalType": "uint96",
                    "name": "platformCommissionPercentage_",
                    "type": "uint96"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "initiateTransferWithRoyalty",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                }
            ],
            "name": "isApprovedForAll",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "isRented",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "isTransferRoyaltyRequired",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "mint",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                }
            ],
            "name": "mintBatch",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "mintPrice",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "nextTokenId",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "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": "address",
                    "name": "seller",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "payTransferRoyalty",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "paymentToken",
            "outputs": [
                {
                    "internalType": "contract IERC20",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "platformAddress",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "platformCommission",
            "outputs": [
                {
                    "internalType": "uint96",
                    "name": "",
                    "type": "uint96"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "platformCommissionPercentage",
            "outputs": [
                {
                    "internalType": "uint96",
                    "name": "",
                    "type": "uint96"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "proxiableUUID",
            "outputs": [
                {
                    "internalType": "bytes32",
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "role",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "account",
                    "type": "address"
                }
            ],
            "name": "renounceRole",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "duration",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "rentalPrice",
                    "type": "uint256"
                }
            ],
            "name": "rentToken",
            "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": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "royaltyInfo",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "receiver",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "royaltyAmount",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "royaltyPercentage",
            "outputs": [
                {
                    "internalType": "uint96",
                    "name": "",
                    "type": "uint96"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256[]",
                    "name": "ids",
                    "type": "uint256[]"
                },
                {
                    "internalType": "uint256[]",
                    "name": "amounts",
                    "type": "uint256[]"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "safeBatchTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "from",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "to",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "salePrice",
                    "type": "uint256"
                }
            ],
            "name": "sellToken",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "operator",
                    "type": "address"
                },
                {
                    "internalType": "bool",
                    "name": "approved",
                    "type": "bool"
                }
            ],
            "name": "setApprovalForAll",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "string",
                    "name": "baseURI",
                    "type": "string"
                }
            ],
            "name": "setBaseURI",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "newMintPrice",
                    "type": "uint256"
                }
            ],
            "name": "setMintPrice",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "setMintRoyalties",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint96",
                    "name": "newPlatformCommissionPercentage",
                    "type": "uint96"
                },
                {
                    "internalType": "address",
                    "name": "newPlatformAddress",
                    "type": "address"
                }
            ],
            "name": "setPlatformCommission",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint96",
                    "name": "newRoyaltyPercentage",
                    "type": "uint96"
                }
            ],
            "name": "setRoyaltyPercentage",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "setTokenMintRoyalties",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                },
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "setTokenTransferRoyalties",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "components": [
                        {
                            "internalType": "address",
                            "name": "receiver",
                            "type": "address"
                        },
                        {
                            "internalType": "uint96",
                            "name": "feeNumerator",
                            "type": "uint96"
                        }
                    ],
                    "internalType": "struct KamiNFTLibrary.RoyaltyData[]",
                    "name": "royalties",
                    "type": "tuple[]"
                }
            ],
            "name": "setTransferRoyalties",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes4",
                    "name": "interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "id",
                    "type": "uint256"
                }
            ],
            "name": "totalSupply",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "unpause",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newImplementation",
                    "type": "address"
                }
            ],
            "name": "upgradeTo",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newImplementation",
                    "type": "address"
                },
                {
                    "internalType": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "upgradeToAndCall",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "uint256",
                    "name": "tokenId",
                    "type": "uint256"
                }
            ],
            "name": "uri",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b6040516179c49081620000e782396080518181816128f301528181612a1801526131f00152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461464a57806301ffc9a71461459657806306d228f9146143f05780630a0a3515146142115780630daf4c97146141eb5780630e89341c146140fc57806310c551c514613f805780631c2098dc14613bbd5780631fc7f7e914613b54578063248a9ca314613b2557806327dc3fbd14613a905780632a55205a14613a5c5780632eb2c2d61461355f5780632f2ff15d146134be5780633013ce291461349457806336568abe146134025780633659cfe6146131cb5780633f4ba83a14613115578063463dace0146130f6578063492ae5a314612e405780634e1273f414612ccf5780634f1ef286146129da5780634f558e79146129a457806352d1902d146128e057806355f804b31461275f5780635c975abb1461273b5780635e27a7751461270c578063602481b6146124ab5780636817c76c1461248c578063694e91b814611e7357806370824c5c1461245157806375794a3c146121fa5780637584b99b1461221b57806381444338146121ff57806382e1350a146121fa57806383ca4b6f14611fd95780638456cb5914611f5d5780638a71bb2d14611f29578063906a8b2e14611ec557806391d1485414611e7857806392303e0614611e7357806397491d6f14611c5c5780639f6d68b014611b1b578063a0712d6814611949578063a217fddf1461192d578063a22cb46514611840578063aa15d40f146117f7578063b390c0ab14611706578063b97c9f77146116cb578063bd85b0391461169f578063c8a9aabc1461130b578063d547741f146112cc578063dbe55e561461129e578063de6fb96c14610b95578063e58378bb14610b6c578063e5f2e0cc14610967578063e985e9c514610911578063f242432a146108be578063f249fd1614610703578063f4a0a528146106c0578063f72c0d8b146106855763ffb2b55a146102c557600080fd5b346106805760206003198181360112610680576004356001600160401b038111610680576102f7903690600401614871565b916103006154b5565b82511561063c576000926103148151614e2c565b916000945b82518610156103785761035b60019161033d6103358987614c7f565b511515614e5e565b6103556101fa5461034e8a88614c7f565b5190614c49565b9061547c565b956101fc8281548061036d858a614c7f565b520190550194610319565b6101f98054929650916001600160a01b039161039991309033908516616485565b6040516103a581614803565b600081526103b43315156164ce565b6103c18551855114615c1e565b6103cc848633616a21565b60005b855181101561041b57806103e560019287614c7f565b516103f08289614c7f565b5160005260978a526040600020336000528a52610413604060002091825461547c565b9055016103cf565b5090919394604051600033917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb3391806104568a8d83615d34565b0390a4333b6104fe575b50509091929360005b85518110156104fc578061047f60019288614c7f565b516104a06101fa91610496835461034e868b614c7f565b878a541691616524565b6104aa8289614c7f565b51906104c66104b98489614c7f565b51915461034e858a614c7f565b604051918252858201527f10546b1a6f5245ff0ffa18c256b9e46859c585cbb473b453fcd4c2dc39ae08db60403392a301610469565b005b8661055a916040518093819263bc197c8160e01b968784523360048501526000602485015260a0604485015261054b61053b8d60a487019061498f565b838682030160648701528b61498f565b91848303016084850152614778565b03816000335af16000918161060d575b506105d55786610578616c52565b6308c379a0146105a0575b60405162461bcd60e51b81528061059c60048201616cde565b0390fd5b6105a8616c70565b90816105b45750610583565b61059c60405192839262461bcd60e51b845260048401526024830190614778565b63ffffffff60e09793949596971b16036105f457939291903880610460565b60405162461bcd60e51b81528061059c60048201616c09565b61062e919250883d8a11610635575b6106268183614839565b810190616be9565b903861056a565b503d61061c565b6064906040519062461bcd60e51b82526004820152601d60248201527f416d6f756e74732061727261792063616e6e6f7420626520656d7074790000006044820152fd5b600080fd5b346106805760003660031901126106805760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b34610680576020366003190112610680573360009081526000805160206178af83398151915260205260409020546106fa9060ff16614b07565b6004356101fa55005b346106805760403660031901126106805761071c614a16565b61072461468f565b3360009081526000805160206178af83398151915260209081526040909120546107509060ff16614b07565b60008051602061790f8339815191525460601c926001600160a01b038316907f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e2749060409061079f841515614fb3565b6107c06001600160601b038216916107bb6107d0841115614fff565b61645b565b60008051602061790f83398151915280546001600160601b0316606088901b6001600160601b03191617905581519081528385820152a183036107ff57005b6104fc927f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e918260005260658152604060002082600052815260ff6040600020541661084e575b50505061587a565b8260005260658152604060002082600052815260ff60406000205416156108465782600052606581526040600020908260005252604060002060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4828080610846565b346106805760a0366003190112610680576108d7614679565b6108df61468f565b90608435916001600160401b038311610680576109036104fc9336906004016148ec565b91606435916044359161504b565b346106805760403660031901126106805761092a614679565b61093261468f565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346106805761097536614722565b3360009081526000805160206178af83398151915260209081526040909120549093929060008051602061788f833981519152906109b59060ff16614b07565b60405190632474521560e21b825260048201523360248201528481604481305afa908115610b6057600091610b33575b5015610af557826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2893808552610a206040600020615540565b6000946000905b848210610a7d57505050610a696127106001600160601b037fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e6209596161461624d565b610a7860405192839283615664565b0390a2005b9195909190600190610aca90610aaf6001600160a01b03610aa7610aa2888b8b615578565b615588565b16151561559c565b610ac484610abe878a8a615578565b016155db565b906155ef565b9286600052878352610aeb6040600020610ae5838989615578565b9061560a565b0190959195610a27565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b610b539150853d8711610b59575b610b4b8183614839565b810190615528565b856109e5565b503d610b41565b6040513d6000823e3d90fd5b3461068057600036600319011261068057602060405160008051602061788f8339815191528152f35b346106805760e036600319011261068057610bae614679565b6024356001600160401b03811161068057610bcd9036906004016148ec565b506044356001600160401b03811161068057610bed9036906004016148ec565b506064356001600160401b03811161068057610c0d9036906004016148ec565b906001600160a01b039060a43580831690819003610680576001600160601b0360c43516918260c43503610680576000549360ff8560081c161594858096611291575b801561127a575b1561121e5760ff1981166001176000558561120c575b50808216156111c757610c81831515614fb3565b610c8f6107d0851115614fff565b610cbb60ff60005460081c16610ca481616675565b610cad81616675565b610cb681616675565b616675565b85516001600160401b0381116110ca57610cd6609954614b6b565b601f811161115e575b50806020601f82116001146110eb576000916110e0575b508160011b916000199060031b1c1916176099555b610d2060ff60005460081c16610ca481616675565b61012d805460ff191690556101f980546001600160a01b031916919092161790556084356101fa5583516001600160401b0381116110ca57610d646101fb54614b6b565b601f811161105c575b506020601f8211600114610fdb579181610db1926107d09594610db89798600092610fd0575b50508160011b916000199060031b1c1916176101fb555b1515614fb3565b1115614fff565b60008051602061790f83398151915280546001600160601b031660a43560601b6001600160601b031916179055610df060c43561645b565b6000805160206178cf83398151915280546001600160601b0319166103e81790553360009081527fffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b602052604090205460659060ff1615610f91575b60008051602061788f833981519152806000528160205260406000203360005260205260ff6040600020541615610f50575b50610e8a60a43561587a565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390816000528060205260406000203360005260205260ff6040600020541615610f0f575b5050610ed757005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b816000526020526040600020336000526020526040600020600160ff198254161790553390339060008051602061784f833981519152600080a48180610ecf565b80600052816020526040600020336000526020526040600020600160ff198254161790553390339060008051602061784f833981519152600080a482610e7e565b60008052806020526040600020336000526020526040600020600160ff198254161790553333600060008051602061784f8339815191528180a4610e4c565b015190508880610d93565b601f198216956101fb60005260008051602061794f8339815191529660005b818110611044575092610db896976107d096959360019383610db1971061102b575b505050811b016101fb55610daa565b015160001960f88460031b161c1916905588808061101c565b83830151895560019098019760209384019301610ffa565b6101fb600052601f820160051c60008051602061794f8339815191520190602083106110b4575b601f0160051c60008051602061794f83398151915201905b8181106110a85750610d6d565b6000815560010161109b565b60008051602061794f8339815191529150611083565b634e487b7160e01b600052604160045260246000fd5b905087015188610cf6565b9150609960005260008051602061796f8339815191526000925b601f1983168410611146576001935082601f1981161061112d575b5050811b01609955610d0b565b89015160001960f88460031b161c191690558880611120565b89810151825560209384019360019092019101611105565b6099600052601f820160051c60008051602061796f83398151915201602083106111b2575b601f820160051c60008051602061796f8339815191520181106111a65750610cdf565b60008155600101611183565b5060008051602061796f833981519152611183565b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207061796d656e7420746f6b656e20616464726573730000006044820152606490fd5b61ffff19166101011760005586610c6d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610c575750600160ff821614610c57565b50600160ff821610610c50565b3461068057600036600319011261068057602060008051602061790f8339815191525460601c604051908152f35b34610680576040366003190112610680576104fc6004356112eb61468f565b90806000526065602052611306600160406000200154615d59565b616119565b34610680576113193661479d565b6113216154b5565b61132b8333614a2c565b1561165b578115159061133d82614ef6565b8015159061134a82614f55565b611352615919565b50611366611361866004617795565b615944565b8460005260008051602061786f8339815191526020526113896040600020615987565b93608085015115611616576113e660018060a01b036101f95416936113e160018060a01b03885116968960005260008051602061786f8339815191526020526113dc60ff60046040600020015416616419565b614ef6565b614f55565b600086815260008051602061786f83398151915260205260409020546001600160a01b031684036115c1576114876040937fb4cfe1d8ea70adf14096f94f362b2c5a7d7e75a5308460ff461b34288fb2df729560008051602061790f833981519152916127106114606001600160601b0385541688614c49565b048a61146c8289614b0e565b9461147989303387616485565b8261157b575b50505061684c565b8560005260008051602061786f8339815191526020526114af6002846000200191825461547c565b90558460005260008051602061786f833981519152602052600382600020016114d982825461547c565b90558460005260008051602061786f83398151915260205260028260002001548251908152857f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c360203393a361152d615919565b5061153c611361866004617795565b8460005260008051602061786f8339815191526020528161155f81600020615987565b9460018060a01b039051169401519082519182526020820152a3005b6020816115ae857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c8861684c565b5460601c938b51908152a38a8a8161147f565b60405162461bcd60e51b815260206004820152602760248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c2028456044820152665243313135352960c81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206973206e6f742063757272656e746c792072656e7465640000006044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4d757374206f776e20746f6b656e7320746f20657874656e642072656e74616c6044820152fd5b346106805760203660031901126106805760043560005260c96020526020604060002054604051908152f35b346106805760003660031901126106805760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b34610680576000611716366147b7565b61171e6154b5565b611729811515614e5e565b61173e816117378433614a2c565b1015614eaa565b61174833836162b4565b611753331515616369565b61177d61175f83616ea3565b61176883616ea3565b908560405161177681614803565b5233616888565b8183526097602052604083203384526020528060408420546117a1828210156163c1565b838552609760205260408520338652602052036040842055604051918252602082015233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46104fc604051614803565b34610680576020366003190112610680576118106154b5565b60043560005260008051602061786f833981519152602052602060ff600460406000200154166040519015158152f35b3461068057604036600319011261068057611859614679565b6024359081151590818303610680576001600160a01b0316913383146118d6576118a89033600052609860205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b3461068057600036600319011261068057602060405160008152f35b3461068057602080600319360112610680576004356119666154b5565b611971811515614e5e565b61197e816101fa54614c49565b9060018060a01b03916101f99361199c828587541630903390616485565b6101fc93845494600186019055604051956119b687614803565b600087526119c53315156164ce565b6119e16119d187616ea3565b6119da87616ea3565b9033616a21565b856000526097835260406000203360005283526040600020611a0486825461547c565b90556040518681528584820152600033917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4333b611a80575b54611a4f91168386616524565b6040519283528201527f10546b1a6f5245ff0ffa18c256b9e46859c585cbb473b453fcd4c2dc39ae08db60403392a3005b9195604051878180611ac163f23a6e6160e01b95868352336004840152600060248401528b60448401528a606484015260a0608484015260a4830190614778565b03816000335af160009181611afc575b50611adf5787610578616c52565b63ffffffff60e098959697981b16036105f4578594939291611a42565b611b14919250893d8b11610635576106268183614839565b9089611ad1565b346106805760208060031936011261068057611b35614a16565b60008051602061788f83398151915280600052606583526040600020336000528352611b6860ff60406000205416614b07565b60405190632474521560e21b825260048201523360248201528281604481305afa908115610b6057600091611c3f575b5015610af5576001600160601b031690610bb88211611bfb576000805160206178cf83398151915280546001600160601b031916831790556040519182527f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e391a1005b6064906040519062461bcd60e51b82526004820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b611c569150833d8511610b5957610b4b8183614839565b83611b98565b34610680576020806003193601126106805760043590611c7a6154b5565b611c82615919565b50611c91611361836004617795565b8160005260008051602061786f83398151915290818152611cb56040600020615987565b611cbf8433614a2c565b15801590611e60575b15611e0857611cd78433614a2c565b15611df75733925b84600052808352611cfa60ff60046040600020015416616419565b600085815281845260409020546001600160a01b03939084163303611db357856000525281604060002093600482865416950160ff198154169055169283857fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4611d7282825116611d6d6154b5565b614b31565b15611da2575b5116907f2701fe1dc0d516a6094695be18e9b34a36ac386ec7694aec82980be40e1a9fc0600080a4005b611dae8282511661606c565b611d78565b6064906040519062461bcd60e51b82526004820152601a60248201527f4f6e6c792072656e7465722063616e20656e642072656e74616c0000000000006044820152fd5b80516001600160a01b031692611cdf565b60405162461bcd60e51b815260048101839052602a60248201527f4d757374206f776e20746f6b656e73206f722062652072656e74657220746f20604482015269195b99081c995b9d185b60b21b6064820152608490fd5b5080516001600160a01b03163314611cc8565b6149c3565b3461068057604036600319011261068057611e9161468f565b600435600052606560205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346106805760203660031901126106805760405162461bcd60e51b815260206004820152602560248201527f746f6b656e4279496e646578206e6f7420737570706f7274656420696e204552604482015264433131353560d81b6064820152608490fd5b346106805760003660031901126106805760206001600160601b036000805160206178cf8339815191525416604051908152f35b34610680576000366003190112610680573360009081526000805160206178af8339815191526020526040902054611f979060ff16614b07565b611f9f6154b5565b61012d600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610680576040366003190112610680576001600160401b036004358181116106805761200a903690600401614871565b9060243590811161068057612023903690600401614871565b61202b6154b5565b81518151036121bc5781511561217e5760005b825181101561209a578061205761033560019385614c7f565b61208061206e6120678387614c7f565b5133614a2c565b6120788386614c7f565b511115614eaa565b6120943361208e8387614c7f565b516162b4565b0161203e565b506120a6331515616369565b6120b38251825114615c1e565b60006040516120c181614803565b526120cd818333616888565b60005b825181101561213a57806120e660019285614c7f565b516120f18285614c7f565b519080600052609760209080825260406000203360005282526040600020549261211d858510156163c1565b6000528152604060002090336000525203604060002055016120d0565b506000917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb604051806121703395339583615d34565b0390a46104fc604051614803565b60405162461bcd60e51b81526020600482015260166024820152754172726179732063616e6e6f7420626520656d70747960501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606490fd5b6149f7565b3461068057602036600319011261068057602060405160008152f35b3461068057608036600319011261068057612234614679565b602435906044356064356122466154b5565b6001600160a01b038381169390841561240c576123db90612268851515614e5e565b612273841515614ab1565b612281856117378933614a2c565b6101f95416918660005261231e60209360008051602061786f83398151915285526122b760ff600460406000200154161561582e565b6122f56001600160601b036122dd816000805160206178cf833981519152541689614c49565b5060008051602061790f833981519152541687614c49565b5061230286308584616485565b61231661231082888c6166d5565b87614b0e565b90339061684c565b60405183810190612344816123368886338e886154fa565b03601f198101835282614839565b5190206000526000805160206178ef83398151915283526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e283528360406000205585604051858152887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af9556863393a48487604051926123d184614803565b600084523361504b565b6040519283528201527f9387a595ac4be9038bbb9751abad8baa3dcf219dd9e19abb81552bd521fe354660403392a4005b60405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073656c6c20746f207a65726f206164647265737300000000006044820152606490fd5b346106805760003660031901126106805760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346106805760003660031901126106805760206101fa54604051908152f35b3461068057602080600319360112610680576004356001600160401b038111610680576124dc9036906004016146f2565b9060008051602061788f8339815191528060005260658452604060002033600052845261251060ff60406000205416614b07565b60405190632474521560e21b825260048201526024903360248201528481604481305afa908115610b60576000916126ef575b5015610af5577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289190815460008355806126ac575b5060009460005b8581106125d2577fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b86866125be6127106001600160601b038c161461624d565b6125cd60405192839283615664565b0390a1005b6001600160a01b0396612600906125f189610aa7610aa2868c8c615578565b610ac484610abe858b8b615578565b9661260c828888615578565b855491600160401b8310156126975760018301808855831015612682579060019392918760005261263c82615588565b16906001600160a01b0319906126539087016155db565b60a01b1617907fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee01550161257e565b85634e487b7160e01b60005260326004526000fd5b85634e487b7160e01b60005260416004526000fd5b826000527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee908101905b8181106126e35750612577565b600081556001016126d6565b6127069150853d8711610b5957610b4b8183614839565b85612543565b346106805760203660031901126106805761273761272b600435615b1b565b60405191829182614933565b0390f35b3461068057600036600319011261068057602060ff61012d54166040519015158152f35b3461068057602080600319360112610680576001600160401b0390600435828111610680576127929036906004016148ec565b9160008051602061788f8339815191526000526065825260406000203360005282526127c560ff60406000205416614b07565b82519081116110ca576101fb916127dc8354614b6b565b601f811161288f575b5080601f83116001146128215750819293600092612816575b5050600019600383901b1c191660019190911b179055005b0151905083806127fe565b90601f198316948460005260008051602061794f833981519152926000905b87821061287757505083600195961061285e575b505050811b019055005b015160001960f88460031b161c19169055838080612854565b80600185968294968601518155019501930190612840565b8360005260008051602061794f833981519152601f840160051c8101918385106128d6575b601f0160051c01905b8181106128ca57506127e5565b600081556001016128bd565b90915081906128b4565b34610680576000366003190112610680577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361293957602060405160008051602061792f8339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b346106805760203660031901126106805760206129d060043560005260c9602052604060002054151590565b6040519015158152f35b6040366003190112610680576129ee614679565b6024356001600160401b03811161068057612a0d9036906004016148ec565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116612a4530821415614d6a565b612a6260008051602061792f833981519152918383541614614dcb565b3360009081527f61c6261e6978331c793eee420d743e773864e0ec05cc862750e423d64f73e9f6602090815260409091205490929060ff1615612c8e577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ad6575050506104fc9150616d33565b83929316906040516352d1902d60e01b81528481600481865afa60009181612c5f575b50612b5a5760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612c0857612b6882616d33565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115801590612c00575b612b9e57005b6000806104fc9460405194612bb28661481e565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4612bfa6176da565b9161770a565b506001612b98565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508581813d8311612c87575b612c778183614839565b8101031261068057519087612af9565b503d612c6d565b60405162461bcd60e51b815260048101849052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b34610680576040366003190112610680576004356001600160401b03808211610680573660238301121561068057816004013590612d0c8261485a565b92612d1a6040519485614839565b82845260209260248486019160051b83010191368311610680576024859101915b838310612e28575050505060243590811161068057612d5e903690600401614871565b8251815103612dd157612d718351614e2c565b9260005b8151811015612dba57600190612da96001600160a01b03612d968386614c7f565b5116612da28387614c7f565b5190614a2c565b612db38288614c7f565b5201612d75565b50505061273760405192828493845283019061498f565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b8190612e33846146a5565b8152019101908490612d3b565b3461068057602080600319360112610680576004356001600160401b03811161068057612e719036906004016146f2565b9060008051602061788f83398151915280600052606584526040600020336000528452612ea560ff60406000205416614b07565b60405190632474521560e21b825260048201526024903360248201528481604481305afa908115610b60576000916130d9575b5015610af5577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289080546000825580613096575b5060009160005b858110612fbc575050506001600160601b03612710911603612f60577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d7092506125cd60405192839283615664565b60405162461bcd60e51b815260048101849052602e60248201527f546f74616c206d696e7420726f79616c74792070657263656e7461676573206d60448201526d75737420657175616c203130302560901b6064820152608490fd5b6001600160a01b0393612fea90612fdb86610aa7610aa2868c8c615578565b610ac489610abe858b8b615578565b93612ff6828888615578565b845491600160401b831015613081576001830180875583101561306c579060019392918660005261302682615588565b16906001600160a01b03199061303d908c016155db565b60a01b1617907fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8015501612f12565b84634e487b7160e01b60005260326004526000fd5b84634e487b7160e01b60005260416004526000fd5b816000527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8908101905b8181106130cd5750612f0b565b600081556001016130c0565b6130f09150853d8711610b5957610b4b8183614839565b85612ed8565b346106805760203660031901126106805761273761272b60043561614a565b34610680576000366003190112610680573360009081526000805160206178af833981519152602052604090205461314f9060ff16614b07565b61012d805460ff81161561318f5760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b3461068057602080600319360112610680576131e5614679565b6001600160a01b03917f0000000000000000000000000000000000000000000000000000000000000000831661321d30821415614d6a565b61323a60008051602061792f833981519152918583541614614dcb565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e360005260658252604060002033600052825260ff60406000205416156133c1576040519361328885614803565b600085527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156132c3575050506104fc9150616d33565b83929316906040516352d1902d60e01b81528481600481865afa60009181613392575b506133475760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612c085761335582616d33565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061338a57612b9e57005b506000612b98565b9091508581813d83116133ba575b6133aa8183614839565b81010312610680575190876132e6565b503d6133a0565b60405162461bcd60e51b815260048101839052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346106805760403660031901126106805761341b61468f565b336001600160a01b03821603613437576104fc90600435616119565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b34610680576000366003190112610680576101f9546040516001600160a01b039091168152602090f35b34610680576040366003190112610680576004356134da61468f565b8160005260656020526134f4600160406000200154615d59565b81600052606560205260406000209060018060a01b0316908160005260205260ff604060002054161561352357005b8160005260656020526040600020816000526020526040600020600160ff19825416179055339160008051602061784f833981519152600080a4005b346106805760a036600319011261068057613578614679565b61358061468f565b6001600160401b0390604435828111610680576135a1903690600401614871565b606435838111610680576135b9903690600401614871565b92608435908111610680576135d29036906004016148ec565b6001600160a01b03851633148015613a2f575b6135ee90614d07565b6135fb8251855114615c1e565b61360f6001600160a01b0384161515615c7b565b6001600160a01b038516156139dc575b6001600160a01b03831615613927575b60005b82518110156137075780613698858861364d60019588614c7f565b518060005260008051602061786f83398151915260205260ff600460406000200154166136a7575b858060a01b0382161560001461369e5761369360005b8484846172e6565b617679565b01613632565b6136933361368b565b6136b0816159d1565b60808101511515806136f9575b6136c8575b50613675565b6136dc878060a01b03825116611d6d6154b5565b156136c2576136f390878060a01b0390511661606c565b8b6136c2565b5060408101514210156136bd565b5092919060005b81518110156137b1578061372460019284614c7f565b5161372f8287614c7f565b51908060005260976020918183526040600020868060a01b038c1660005283528360406000205461376282821015615cd5565b8260005283855260406000208d898060a01b03166000528552036040600020556000528152604060002090848060a01b038716600052526137a9604060002091825461547c565b90550161370e565b5060405190939291906001600160a01b03808316919087169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90806137fa888b83615d34565b0390a4803b61380557005b60405163bc197c8160e01b8082523360048301526001600160a01b03909616602482015260a06044820152936020938593849260009284926138789261386691906138549060a487019061498f565b8581036003190160648701529061498f565b83810360031901608485015290614778565b03926001600160a01b03165af160009181613906575b506138f55761389b616c52565b6308c379a0146138be5760405162461bcd60e51b81528061059c60048201616cde565b6138c6616c70565b806138d15750610583565b60405162461bcd60e51b81526020600482015290819061059c906024830190614778565b6001600160e01b031916036105f457005b61392091925060203d602011610635576106268183614839565b908361388e565b9293909160005b83518110156139d2576139418185614c7f565b519061394d8188614c7f565b518260005260c960205260406000205481811061397c5760019360005260c9602052036040600020550161392e565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608490fd5b509190939261362f565b9293909160005b8351811015613a2557806139f960019288614c7f565b51613a048287614c7f565b5160005260c9602052613a1d604060002091825461547c565b9055016139e3565b509190939261361f565b506001600160a01b038516600090815260986020908152604080832033845290915290205460ff166135e5565b3461068057613a73613a6d366147b7565b90614c93565b604080516001600160a01b03939093168352602083019190915290f35b3461068057602036600319011261068057600435613aac6154b5565b613ab4615919565b50613ac3611361826004617795565b60005260008051602061786f83398151915260205260a0613ae76040600020615987565b600180831b03815116906020810151906040810151608060608301519201511515926040519485526020850152604084015260608301526080820152f35b346106805760203660031901126106805760043560005260656020526020600160406000200154604051908152f35b3461068057613b7e612336613b68366146b9565b60405160208101969095909486949193886154fa565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df602052602060ff604060002054166040519015158152f35b3461068057613bcb3661479d565b90613bd46154b5565b613bde8333614a2c565b15613f3b578015613ef65781151590613bf682614bf1565b60018060a01b0390816101f95416918560005260008051602061786f8339815191529260209484865260ff60046040600020015416613eb15791613c96613d1a92613c44613d209695614bf1565b60008051602061790f83398151915290612710613c6b6001600160601b038454168c614c49565b048b613c77828d614b0e565b93613c848d303387616485565b8b83613e6b575b50505050339061684c565b6004613ca2844261547c565b9160405192613cb0846147cd565b338452888401904282526040850190815260608501918b83526080860193600185528d6000528a8c5260406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b4261547c565b60405190857f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b1339380613d6789339642846040919493926060820195825260208201520152565b0390a47f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8060005260658352604060002033600052835260ff6040600020541615613e2b575b50613db6615919565b50613dc5611361856004617795565b8360005281527f91ed440ea126ed5a21dfd1e9ad850a40d87c795aa239d6d1a8967347bee99790613e266040613dfd81600020615987565b938401519301519360405191829133963396846040919493926060820195825260208201520152565b0390a4005b806000526065835260406000203360005283526040600020600160ff198254161790553390339060008051602061784f833981519152600080a484613dad565b81613e9c857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c8861684c565b5460601c93604051908152a38b8b818b613c8b565b60405162461bcd60e51b815260048101879052601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f4475726174696f6e206d7573742062652067726561746572207468616e2030006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f4d757374206f776e20746f6b656e7320746f2072656e740000000000000000006044820152606490fd5b3461068057606036600319011261068057613f99614679565b604435602435613fa76154b5565b6001600160a01b03831692831515613fbe81614ba5565b613fc88333614a2c565b156140b75761400c90613fdc851515614ab1565b8360005260008051602061786f83398151915260205261400760ff600460406000200154161561582e565b614ba5565b604051614024816123368660208301953388886154fa565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df6020526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e0602052816040600020556040519182527f3c03dadf3cda1d8a0b15eaf862e12cdc0dabbcdd0f5f87342a0c10793a056a8b60203393a4005b60405162461bcd60e51b815260206004820152601b60248201527f4d757374206f776e20746f6b656e7320746f207472616e7366657200000000006044820152606490fd5b34610680576020806003193601126106805761411960043561576e565b9060405191828260006101fb805461413081614b6b565b916001918083169081156141ca5750600114614180575b50505061415d848261416c965194859201614755565b0103601f198101845283614839565b612737604051928284938452830190614778565b600090815291925060008051602061794f8339815191525b8383106141b2575050508201810161415d61416c88614147565b8054838a018601528895508794909201918101614198565b60ff1916878701525050508015150283018201905061415d61416c88614147565b346106805760203660031901126106805760206129d0614209614679565b611d6d6154b5565b346106805761421f36614722565b3360009081526000805160206178af83398151915260209081526040909120549093929060008051602061788f8339815191529061425f9060ff16614b07565b60405190632474521560e21b825260048201523360248201528481604481305afa908115610b60576000916143d3575b5015610af557826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28928085526142ca6040600020615540565b6000906000905b8482106143805750506001600160601b0361271091160361431e57907faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b591610a7860405192839283615664565b60405162461bcd60e51b815260048101859052603460248201527f546f74616c20746f6b656e206d696e7420726f79616c74792070657263656e7460448201527361676573206d75737420657175616c203130302560601b6064820152608490fd5b90916001906143b1906143a26001600160a01b03610aa7610aa2888b8b615578565b610ac489610abe878a8a615578565b92866000528288526143cc6040600020610ae5838989615578565b01906142d1565b6143ea9150853d8711610b5957610b4b8183614839565b8561428f565b34610680576143fe366146b9565b91926144086154b5565b6001600160a01b038181169390919084156145515782861695861561450c576144c56020937f771e304e88a13ffdb75cacc5fbef9827e376630b3548262bab37c8325715aec49561445a851515614ab1565b6101f954169061446c85303385616485565b6144aa6001600160601b03614492816000805160206178cf833981519152541688614c49565b5060008051602061790f833981519152541686614c49565b506144bf6144b983878b6166d5565b86614b0e565b9161684c565b6040516144dc816123368587830195338b886154fa565b5190206000526000805160206178ef83398151915282526040600020600160ff19825416179055604051908152a4005b60405162461bcd60e51b815260206004820152601c60248201527f42757965722063616e6e6f74206265207a65726f2061646472657373000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f53656c6c65722063616e6e6f74206265207a65726f20616464726573730000006044820152606490fd5b34610680576020366003190112610680576004356001600160e01b0319811680820361068057602091636cdb3d1360e11b8214801561463a575b801561462b575b80928115614604575b505081156145f4575b506040519015158152f35b6145fe9150615489565b826145e9565b91925063152a902d60e11b909114908115614623575b509083806145e0565b90508361461a565b5061463581615489565b6145d7565b506303a24d0760e21b82146145d0565b34610680576040366003190112610680576020614671614668614679565b60243590614a2c565b604051908152f35b600435906001600160a01b038216820361068057565b602435906001600160a01b038216820361068057565b35906001600160a01b038216820361068057565b6080906003190112610680576001600160a01b039060043582811681036106805791602435908116810361068057906044359060643590565b9181601f84011215610680578235916001600160401b038311610680576020808501948460061b01011161068057565b9060406003198301126106805760043591602435906001600160401b03821161068057614751916004016146f2565b9091565b60005b8381106147685750506000910152565b8181015183820152602001614758565b9060209161479181518092818552858086019101614755565b601f01601f1916010190565b606090600319011261068057600435906024359060443590565b6040906003190112610680576004359060243590565b60a081019081106001600160401b038211176110ca57604052565b604081019081106001600160401b038211176110ca57604052565b602081019081106001600160401b038211176110ca57604052565b606081019081106001600160401b038211176110ca57604052565b90601f801991011681019081106001600160401b038211176110ca57604052565b6001600160401b0381116110ca5760051b60200190565b9080601f8301121561068057602090823561488b8161485a565b936148996040519586614839565b81855260208086019260051b82010192831161068057602001905b8282106148c2575050505090565b813581529083019083016148b4565b6001600160401b0381116110ca57601f01601f191660200190565b81601f8201121561068057803590614903826148d1565b926149116040519485614839565b8284526020838301011161068057816000926020809301838601378301015290565b60208082019080835283518092528060408094019401926000905b83821061495d57505050505090565b845180516001600160a01b031687528301516001600160601b031686840152948501949382019360019091019061494e565b90815180825260208080930193019160005b8281106149af575050505090565b8351855293810193928101926001016149a1565b346106805760003660031901126106805760206001600160601b0360008051602061790f8339815191525416604051908152f35b346106805760003660031901126106805760206101fc54604051908152f35b600435906001600160601b038216820361068057565b6001600160a01b0316908115614a5957600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b15614ab857565b60405162461bcd60e51b815260206004820152602160248201527f53616c65207072696365206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608490fd5b15610af557565b91908203918211614b1b57565b634e487b7160e01b600052601160045260246000fd5b6101fc548015614b64576000198101908111614b1b576002614b619260008051602061786f8339815191526156e6565b90565b5050600090565b90600182811c92168015614b9b575b6020831014614b8557565b634e487b7160e01b600052602260045260246000fd5b91607f1691614b7a565b15614bac57565b60405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606490fd5b15614bf857565b60405162461bcd60e51b815260206004820152602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b81810292918115918404141715614b1b57565b805115614c695760200190565b634e487b7160e01b600052603260045260246000fd5b8051821015614c695760209160051b010190565b91909161271090614cc982614cc26001600160601b0396876000805160206178cf833981519152541690614c49565b0491615b1b565b8051614cdc575050509050600090600090565b90614ce9614cf792614c5c565b519460208601511690614c49565b92516001600160a01b0316920490565b15614d0e57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b15614d7157565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15614dd257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b90614e368261485a565b614e436040519182614839565b8281528092614e54601f199161485a565b0190602036910137565b15614e6557565b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b15614eb157565b60405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606490fd5b15614efd57565b60405162461bcd60e51b815260206004820152602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b15614f5c57565b60405162461bcd60e51b815260206004820152602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b15614fba57565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b1561500657565b60405162461bcd60e51b815260206004820152601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b929490936001600160a01b03929091838516913383148015615453575b61507190614d07565b848716928315946150828615615c7b565b61508b83616ea3565b946150958b616ea3565b831597886153eb575b61531d575b5060005b865181101561515a57806151028c8c6150c26001958c614c7f565b518060005260008051602061786f8339815191526020528d60409060ff600483600020015416615108575b50508c1561369e5761369360008484846172e6565b016150a7565b615111836159d1565b9160808301511515908161514c575b50156150ed5761513581835116611d6d6154b5565b156150ed5761514591511661606c565b388e6150ed565b905082015142101538615120565b5094509450945094509584600052602094609786526040968760002086600052875282886000205461518e82821015615cd5565b836000526097895289600020886000528952038860002055816000526097875287600020846000528752876000206151c784825461547c565b905583868951848152858a8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628b3392a43b615209575b50505050505050565b916152519391600087989997948a519687958694859363f23a6e6160e01b9b8c865233600487015260248601526044850152606484015260a0608484015260a4830190614778565b03925af1600091816152fe575b506152c55750505061526e616c52565b6308c379a014615291575b505162461bcd60e51b81528061059c60048201616cde565b615299616c70565b90816152a55750615279565b61059c835192839262461bcd60e51b845260048401526024830190614778565b919392506001600160e01b0319909116036152e7575038808080808080615200565b5162461bcd60e51b81528061059c60048201616c09565b615316919250853d8711610635576106268183614839565b903861525e565b9a979492909996939160009996995b8a518110156153d7578c61534b82615344818f614c7f565b5192614c7f565b518160005260c99160209280845260409384600020549284841061538257906001969594939291600052520390600020550161532c565b855162461bcd60e51b815260048101839052602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608490fd5b5091939699909294979a50979497386150a3565b9a9699959260009c98949199959260005b8c5181101561544057808f6154388f918f9061542785615420600198604095614c7f565b5195614c7f565b51815260c96020522091825461547c565b9055016153fc565b509295999194989c50929599969a61509e565b5082600052609860205260406000203360005260205261507160ff604060002054169050615068565b91908201809211614b1b57565b63ffffffff60e01b16637965db0b60e01b81149081156154a7575090565b6301ffc9a760e01b14919050565b60ff61012d54166154c257565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b92606894929184526001600160601b0319809260601b16602085015260601b16603483015260488201520190565b90816020910312610680575180151581036106805790565b805490600090600081558261555457505050565b6000526020600020918201915b82811061556d57505050565b818155600101615561565b9190811015614c695760061b0190565b356001600160a01b03811681036106805790565b156155a357565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036106805790565b9190916001600160601b0380809416911601918211614b1b57565b805490600160401b8210156110ca5760018201808255821015614c695760009081526020902001906001600160a01b0361564382615588565b16906001600160a01b03199061565b906020016155db565b60a01b16179055565b90916020918160208201602083525260408091019392600080915b84831061568f5750505050505090565b90919293949560018060a01b036156a5886146a5565b168152818701356001600160601b0381168091036156d357828201528401958401949392600101919061567f565b8380fd5b6000198114614b1b5760010190565b909160005b848111156156fd575050505050600090565b6157078183617795565b61571a575b615715906156d7565b6156eb565b8060005282602052604060002060ff6004820154169081615746575b501561570c575050505050600190565b546001600160a01b03868116911614905038615736565b908151811015614c69570160200190565b80156158105780816000925b6157fa5750615788826148d1565b916157966040519384614839565b80835281601f196157a6836148d1565b013660208601375b6157b757505090565b6000198101908111614b1b578091600a9160308383068101809111614b1b5760f81b6001600160f81b03191660001a906157f1908661575d565b530490816157ae565b9091615807600a916156d7565b9291048061577a565b5060405161581d816147e8565b60018152600360fc1b602082015290565b1561583557565b60405162461bcd60e51b815260206004820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152606490fd5b6001600160a01b031660008181527f8fe9de6e6d7d32292eeb65478fd6c9c8327fc5086caf996e3eecbac0d25b16b360205260408120549091907f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9060ff16156158e357505050565b80835260656020526040832082845260205260408320600160ff1982541617905560008051602061784f833981519152339380a4565b60405190615926826147cd565b60006080838281528260208201528260408201528260608201520152565b1561594b57565b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b90604051615994816147cd565b82546001600160a01b0316815260018301546020820152600283015460408201526003830154606082015260049092015460ff1615156080830152565b608060409182516159e1816147cd565b600092818480935282602082015282868201528260608201520152615a07816004617795565b15615a6b57828260049260ff945260008051602061786f83398151915260205220835193615a34856147cd565b81546001600160a01b0316855260018201546020860152600282015490850152600381015460608501520154161515608082015290565b825162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b908154615ab28161485a565b92604093615ac36040519182614839565b82815280946020809201926000526020600020906000935b858510615aea57505050505050565b60018481928451615afa816147e8565b8654848060a01b038116825260a01c83820152815201930194019391615adb565b6000908082527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28939060208260205260409060408520541515600014615b6e575050825260205260409020614b6190615aa6565b91509291507f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289190815492615ba18461485a565b94615baf6040519687614839565b848652602086019382527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee91935b858510615bed5750505050505090565b60018481928451615bfd816147e8565b8654848060a01b038116825260a01c83820152815201930194019391615bdd565b15615c2557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b15615c8257565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b15615cdc57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9091615d4b614b619360408452604084019061498f565b91602081840391015261498f565b60009080825260209060658252604092838120338252835260ff848220541615615d835750505050565b33845192615d908461481e565b602a84528484019086368337845115616058576030825384519260019360011015616044576078602187015360295b848111615fda5750615f9857865192608084018481106001600160401b03821117615f8457885260428452868401946060368737845115615f705760308653845160011015615f705790607860218601536041915b818311615f0257505050615ec05761059c938693615ea493615e95604894615e6c9a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c8801525180926037880190614755565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190614755565b01036028810187520185614839565b5192839262461bcd60e51b845260048401526024830190614778565b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015615f5c576f181899199a1a9b1b9c1cb0b131b232b360811b901a615f32858861575d565b5360041c928015615f4857600019019190615e14565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b86526041600452602486fd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015616030576f181899199a1a9b1b9c1cb0b131b232b360811b901a616008838961575d565b5360041c90801561601c5760001901615dbf565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b6001600160a01b031660008181527f5b7784634afa4a725e99aef86a1e6452834787b06eb871864223fd156b9d496b60205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff166160d457505050565b8083526065602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b906000918083526065602052604083209160018060a01b03169182845260205260ff6040842054166160d457505050565b6000908082527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2892906020826020526040906040852054151560001461619d575050825260205260409020614b6190615aa6565b91509291507f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2890908154926161d08461485a565b946161de6040519687614839565b848652602086019382527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c891935b85851061621c5750505050505090565b6001848192845161622c816147e8565b8654848060a01b038116825260a01c8382015281520193019401939161620c565b1561625457565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b90336001600160a01b03909116036163325760005260008051602061786f83398151915260205260ff600460406000200154166162ed57565b60405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606490fd5b1561637057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156163c857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b1561642057565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b6001600160601b0360008051602061790f83398151915291166001600160601b0319825416179055565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526164cc916164c7826147cd565b616dc3565b565b156164d557565b60405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b929160008051602061790f8339815191529384549461656f612710966165696001600160601b0394896165598785168a614c49565b04928380616661575b505061614a565b95614b0e565b908451151580616658575b1561663a575060009160005b85518110156165ee57876165aa8360206165a0858b614c7f565b5101511685614c49565b04806165ba575b50600101616586565b90936001916165e7916165e2826001600160a01b036165d98a8d614c7f565b5151168a61684c565b61547c565b93906165b1565b50506165fd9293949550614b0e565b9081151580616630575b616611575b505050565b6164cc926001600160a01b039061662790614c5c565b5151169061684c565b5082511515616607565b9495509250508161664a57505050565b6164cc925460601c9061684c565b5081151561657a565b61666e9160601c8961684c565b3883616562565b1561667c57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b9160008051602061790f83398151915293845493612710908161673361671a6001600160601b03938361670a868c168b614c49565b04998a80616838575b5050615b1b565b96836000805160206178cf833981519152541690614c49565b0496855115158061682f575b156168095750600092835b86518110156167ad578361676e846020616764858c614c7f565b510151168b614c49565b048061677e575b5060010161674a565b90946001916167a6916165e2826001600160a01b0361679d8b8e614c7f565b5151168b61684c565b9490616775565b5096614b61969492506167c4915092809593614b0e565b91821515806167ff575b6167db575b50505061547c565b826167f69495926165e29261662760018060a01b0391614c5c565b903880806167d3565b50805115156167ce565b929596945050508261681a57505050565b82614b619495926165e2925460601c9061684c565b5087151561673f565b6168459160601c8a61684c565b388a616713565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526164cc916164c7606483614839565b91926001600160a01b0380841615939190846169cd575b60005b84518110156168f7576168b58186614c7f565b516168c08289614c7f565b518160005260c9916020928084526040938460002054928484106153825790600196959493929160005252039060002055016168a2565b5092909391945060005b81518110156169c5578061695d8761691b60019486614c7f565b518060005260008051602061786f833981519152602052604060ff60048260002001541661696c575b5086156169635761695860005b8383616ec8565b6175d9565b01616901565b61695833616951565b616975826159d1565b906080820151151590816169b7575b5015616944578861699a81835116611d6d6154b5565b6169a5575b50616944565b6169b091511661606c565b388861699f565b905081015142101538616984565b505050509050565b93909160009260005b8551811015616a1657806169ec6001928a614c7f565b516169f78289614c7f565b51875260c9602052616a0e6040882091825461547c565b9055016169d6565b50919490925061689f565b91909260005b8451811015616a695780616a3d60019285614c7f565b51616a488288614c7f565b5160005260c9602052616a61604060002091825461547c565b905501616a27565b50916001600160a01b039190821615616b2e575b5060005b8351811015616b285780616a9760019286614c7f565b518060005260008051602061786f83398151915260205260409060ff600483600020015416616ac9575b505001616a81565b616ad2906159d1565b90608082015115159081616b1a575b50616aed575b80616ac1565b83616afd81835116611d6d6154b5565b616b08575b50616ae7565b616b1391511661606c565b3883616b02565b905081015142101538616ae1565b50509050565b91926000935b8151851015616bdf57616b478583614c7f565b5194616b538186614c7f565b518660005260c9906020828152604092836000205491838310616b8b576001969798999a600052520390600020550193929190616b34565b60849085519062461bcd60e51b82526004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152fd5b9250925038616a7d565b9081602091031261068057516001600160e01b0319811681036106805790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11616c5f57565b905060046000803e60005160e01c90565b600060443d10614b6157604051600319913d83016004833e81516001600160401b03918282113d602484011117616ccd57818401948551938411616cd5573d85010160208487010111616ccd5750614b6192910160200190614839565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b803b15616d685760008051602061792f83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b604051616e1b916001600160a01b0316616ddc826147e8565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1612bfa6176da565b805190828215928315616e8b575b50505015616e345750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b616e9b9350820181019101615528565b388281616e29565b60405190616eb0826147e8565b6001825260203681840137616ec482614c5c565b5290565b6001600160a01b03828116929091908315801590816172de575b6172d65760009083825260008051602061786f833981519152946020968688526040968785209960ff9360049b60ff8d82015416617239575b506001600160601b036000805160206178cf8339815191525416958615159081617231575b50616f54575b505050505050505050505050565b620f424095808702908782040361721e5761271087910410616f465783875260988b528987203388528b5260ff8a88205416928315617207575b8988528b528987209160ff8d8401541694856171fa575b50846171ee575b5050600201549081151591826171e3575b501591826171da575b50816171d1575b50616fdc575b80808080616f46565b8294825b633b9aca00811115617149575b5085156170aa575b505050505015617009578080808080616fd3565b5162461bcd60e51b815291820152606b60248201527f526f79616c7479207061796d656e74207265717569726564206265666f72652060448201527f7472616e736665722e2055736520696e6974696174655472616e73666572576960648201527f7468526f79616c747920616e64207061795472616e73666572526f79616c747960848201526a10333ab731ba34b7b7399760a91b60a482015260c49150fd5b825b633b9aca008111156170bf575b50616ff5565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906170f78160688401612336565b51902085526000805160206178ef833981519152895282888620541661713557838101809111156170ac57634e487b7160e01b855260118a52602485fd5b5050505050505060013880808080806170b9565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906171818160688401612336565b51902085526000805160206178ef83398151915289528288862054166171c657600a908181029181830414901517616fe057634e487b7160e01b855260118a52602485fd5b506001955038616fed565b90501538616fcd565b15915038616fc6565b421015915038616fbd565b16159250600238616fac565b8354831614945038616fa5565b925033816172168b6006617795565b161492616f8e565b634e487b7160e01b885260118d52602488fd5b905038616f40565b81815416851490816172cb575b81156172a8575b50156172595738616f1b565b895162461bcd60e51b8152808d018c90526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152608490fd5b33848416149150816172bc575b503861724d565b600291500154421015386172b5565b838316159150617246565b505050505050565b506001616ee2565b916001600160a01b038281169290831580156175cf575b6172d65760009085825260008051602061786f833981519152966020968888526040968785209960ff9360049b60ff8d8201541661757e575b506001600160601b036000805160206178cf83398151915254169586151580617572575b61736e575b50505050505050505050505050565b620f424096808802908882040361755e576127108891041061735f578c9184895260988d528b8920338a528d5260ff8c8a205416938415617547575b868a528d5260ff8c8a209384015416948561753a575b508461752a575b50506002015490811515918261751f575b50159182617516575b508161750d575b506173f7575b8080808061735f565b8395835b633b9aca008111156174a6575b508615617426575b50505050505015617009578080808080806173ee565b835b633b9aca0081111561743b575b50617410565b88518a8101906174528161233685878d8a886154fa565b51902086526000805160206178ef8339815191528a52838987205416617490578481018091111561742857634e487b7160e01b865260118b52602486fd5b5050505050505050600138808080808080617435565b88518a8101906174bd8161233685878d8a886154fa565b51902086526000805160206178ef8339815191528a5283898720541661750257600a9081810291818304149015176173fb57634e487b7160e01b865260118b52602486fd5b506001965038617408565b905015386173e8565b159150386173e1565b4210159150386173d8565b8a821691161492506002386173c7565b83548316149450386173c0565b93503382617556886006617795565b1614936173aa565b50634e487b7160e01b885260118d52602488fd5b50808a1684141561735a565b86815416841490816175c1575b811561759e575b50156172595738617336565b33838916149150816175b2575b5038617592565b600291500154421015386175ab565b8a881683891614915061758b565b50808316156172fd565b906001600160a01b039081169081158015617671575b61660c578260005260008051602061786f833981519152602052604060002060048101805460ff811680617663575b61762a57505050505050565b60ff191690555416917fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a43880808080806172d6565b50600283015442101561761e565b5060016175ef565b916001600160a01b039182169190821590829082156176cf575b505061660c578260005260008051602061786f833981519152602052604060002060048101805460ff8116806176635761762a57505050505050565b161590508138617693565b3d15617705573d906176eb826148d1565b916176f96040519384614839565b82523d6000602084013e565b606090565b9192901561776c575081511561771e575090565b3b156177275790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156138d15750805190602001fd5b634e487b7160e01b600052605160045260246000fd5b9081600414617836578160021461782357816005146177d057816003146177c3575060060361777f57600090565b614b619150611d6d6154b5565b60405162461bcd60e51b815260206004820152602560248201527f746f6b656e4279496e646578206e6f7420737570706f7274656420696e204552604482015264433131353560d81b6064820152608490fd5b905060005260c960205260406000205490565b614b61915060005260c960205260406000205415159056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0defbf0e557c8acb6e3deb011ac697e5553b802e419ed4680395101c0ddc5e8723b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e6805e25e6cde84a829922028ad0e6c513021b8756e9a2473e007ddc1f0f07afb1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d288f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e1de1159fbbeca73b2aca5752c42b257ca18171ae3b3d3bbf22c7938e3a961a0cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9d06c41780d40edbd7db829bd5119eb5f61b9cf80346346f17e157b0b6b1a8e472a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00a264697066735822122022ad3107968cee90c966a0446dcf01bc2f1dd87ec4dfc0abaa24e33277df7b9164736f6c63430008180033",
    "deployedBytecode": "0x6080604052600436101561001257600080fd5b60003560e01c8062fdd58e1461464a57806301ffc9a71461459657806306d228f9146143f05780630a0a3515146142115780630daf4c97146141eb5780630e89341c146140fc57806310c551c514613f805780631c2098dc14613bbd5780631fc7f7e914613b54578063248a9ca314613b2557806327dc3fbd14613a905780632a55205a14613a5c5780632eb2c2d61461355f5780632f2ff15d146134be5780633013ce291461349457806336568abe146134025780633659cfe6146131cb5780633f4ba83a14613115578063463dace0146130f6578063492ae5a314612e405780634e1273f414612ccf5780634f1ef286146129da5780634f558e79146129a457806352d1902d146128e057806355f804b31461275f5780635c975abb1461273b5780635e27a7751461270c578063602481b6146124ab5780636817c76c1461248c578063694e91b814611e7357806370824c5c1461245157806375794a3c146121fa5780637584b99b1461221b57806381444338146121ff57806382e1350a146121fa57806383ca4b6f14611fd95780638456cb5914611f5d5780638a71bb2d14611f29578063906a8b2e14611ec557806391d1485414611e7857806392303e0614611e7357806397491d6f14611c5c5780639f6d68b014611b1b578063a0712d6814611949578063a217fddf1461192d578063a22cb46514611840578063aa15d40f146117f7578063b390c0ab14611706578063b97c9f77146116cb578063bd85b0391461169f578063c8a9aabc1461130b578063d547741f146112cc578063dbe55e561461129e578063de6fb96c14610b95578063e58378bb14610b6c578063e5f2e0cc14610967578063e985e9c514610911578063f242432a146108be578063f249fd1614610703578063f4a0a528146106c0578063f72c0d8b146106855763ffb2b55a146102c557600080fd5b346106805760206003198181360112610680576004356001600160401b038111610680576102f7903690600401614871565b916103006154b5565b82511561063c576000926103148151614e2c565b916000945b82518610156103785761035b60019161033d6103358987614c7f565b511515614e5e565b6103556101fa5461034e8a88614c7f565b5190614c49565b9061547c565b956101fc8281548061036d858a614c7f565b520190550194610319565b6101f98054929650916001600160a01b039161039991309033908516616485565b6040516103a581614803565b600081526103b43315156164ce565b6103c18551855114615c1e565b6103cc848633616a21565b60005b855181101561041b57806103e560019287614c7f565b516103f08289614c7f565b5160005260978a526040600020336000528a52610413604060002091825461547c565b9055016103cf565b5090919394604051600033917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb3391806104568a8d83615d34565b0390a4333b6104fe575b50509091929360005b85518110156104fc578061047f60019288614c7f565b516104a06101fa91610496835461034e868b614c7f565b878a541691616524565b6104aa8289614c7f565b51906104c66104b98489614c7f565b51915461034e858a614c7f565b604051918252858201527f10546b1a6f5245ff0ffa18c256b9e46859c585cbb473b453fcd4c2dc39ae08db60403392a301610469565b005b8661055a916040518093819263bc197c8160e01b968784523360048501526000602485015260a0604485015261054b61053b8d60a487019061498f565b838682030160648701528b61498f565b91848303016084850152614778565b03816000335af16000918161060d575b506105d55786610578616c52565b6308c379a0146105a0575b60405162461bcd60e51b81528061059c60048201616cde565b0390fd5b6105a8616c70565b90816105b45750610583565b61059c60405192839262461bcd60e51b845260048401526024830190614778565b63ffffffff60e09793949596971b16036105f457939291903880610460565b60405162461bcd60e51b81528061059c60048201616c09565b61062e919250883d8a11610635575b6106268183614839565b810190616be9565b903861056a565b503d61061c565b6064906040519062461bcd60e51b82526004820152601d60248201527f416d6f756e74732061727261792063616e6e6f7420626520656d7074790000006044820152fd5b600080fd5b346106805760003660031901126106805760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b34610680576020366003190112610680573360009081526000805160206178af83398151915260205260409020546106fa9060ff16614b07565b6004356101fa55005b346106805760403660031901126106805761071c614a16565b61072461468f565b3360009081526000805160206178af83398151915260209081526040909120546107509060ff16614b07565b60008051602061790f8339815191525460601c926001600160a01b038316907f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e2749060409061079f841515614fb3565b6107c06001600160601b038216916107bb6107d0841115614fff565b61645b565b60008051602061790f83398151915280546001600160601b0316606088901b6001600160601b03191617905581519081528385820152a183036107ff57005b6104fc927f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e918260005260658152604060002082600052815260ff6040600020541661084e575b50505061587a565b8260005260658152604060002082600052815260ff60406000205416156108465782600052606581526040600020908260005252604060002060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4828080610846565b346106805760a0366003190112610680576108d7614679565b6108df61468f565b90608435916001600160401b038311610680576109036104fc9336906004016148ec565b91606435916044359161504b565b346106805760403660031901126106805761092a614679565b61093261468f565b9060018060a01b03809116600052609860205260406000209116600052602052602060ff604060002054166040519015158152f35b346106805761097536614722565b3360009081526000805160206178af83398151915260209081526040909120549093929060008051602061788f833981519152906109b59060ff16614b07565b60405190632474521560e21b825260048201523360248201528481604481305afa908115610b6057600091610b33575b5015610af557826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2893808552610a206040600020615540565b6000946000905b848210610a7d57505050610a696127106001600160601b037fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e6209596161461624d565b610a7860405192839283615664565b0390a2005b9195909190600190610aca90610aaf6001600160a01b03610aa7610aa2888b8b615578565b615588565b16151561559c565b610ac484610abe878a8a615578565b016155db565b906155ef565b9286600052878352610aeb6040600020610ae5838989615578565b9061560a565b0190959195610a27565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b610b539150853d8711610b59575b610b4b8183614839565b810190615528565b856109e5565b503d610b41565b6040513d6000823e3d90fd5b3461068057600036600319011261068057602060405160008051602061788f8339815191528152f35b346106805760e036600319011261068057610bae614679565b6024356001600160401b03811161068057610bcd9036906004016148ec565b506044356001600160401b03811161068057610bed9036906004016148ec565b506064356001600160401b03811161068057610c0d9036906004016148ec565b906001600160a01b039060a43580831690819003610680576001600160601b0360c43516918260c43503610680576000549360ff8560081c161594858096611291575b801561127a575b1561121e5760ff1981166001176000558561120c575b50808216156111c757610c81831515614fb3565b610c8f6107d0851115614fff565b610cbb60ff60005460081c16610ca481616675565b610cad81616675565b610cb681616675565b616675565b85516001600160401b0381116110ca57610cd6609954614b6b565b601f811161115e575b50806020601f82116001146110eb576000916110e0575b508160011b916000199060031b1c1916176099555b610d2060ff60005460081c16610ca481616675565b61012d805460ff191690556101f980546001600160a01b031916919092161790556084356101fa5583516001600160401b0381116110ca57610d646101fb54614b6b565b601f811161105c575b506020601f8211600114610fdb579181610db1926107d09594610db89798600092610fd0575b50508160011b916000199060031b1c1916176101fb555b1515614fb3565b1115614fff565b60008051602061790f83398151915280546001600160601b031660a43560601b6001600160601b031916179055610df060c43561645b565b6000805160206178cf83398151915280546001600160601b0319166103e81790553360009081527fffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b602052604090205460659060ff1615610f91575b60008051602061788f833981519152806000528160205260406000203360005260205260ff6040600020541615610f50575b50610e8a60a43561587a565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390816000528060205260406000203360005260205260ff6040600020541615610f0f575b5050610ed757005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b816000526020526040600020336000526020526040600020600160ff198254161790553390339060008051602061784f833981519152600080a48180610ecf565b80600052816020526040600020336000526020526040600020600160ff198254161790553390339060008051602061784f833981519152600080a482610e7e565b60008052806020526040600020336000526020526040600020600160ff198254161790553333600060008051602061784f8339815191528180a4610e4c565b015190508880610d93565b601f198216956101fb60005260008051602061794f8339815191529660005b818110611044575092610db896976107d096959360019383610db1971061102b575b505050811b016101fb55610daa565b015160001960f88460031b161c1916905588808061101c565b83830151895560019098019760209384019301610ffa565b6101fb600052601f820160051c60008051602061794f8339815191520190602083106110b4575b601f0160051c60008051602061794f83398151915201905b8181106110a85750610d6d565b6000815560010161109b565b60008051602061794f8339815191529150611083565b634e487b7160e01b600052604160045260246000fd5b905087015188610cf6565b9150609960005260008051602061796f8339815191526000925b601f1983168410611146576001935082601f1981161061112d575b5050811b01609955610d0b565b89015160001960f88460031b161c191690558880611120565b89810151825560209384019360019092019101611105565b6099600052601f820160051c60008051602061796f83398151915201602083106111b2575b601f820160051c60008051602061796f8339815191520181106111a65750610cdf565b60008155600101611183565b5060008051602061796f833981519152611183565b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207061796d656e7420746f6b656e20616464726573730000006044820152606490fd5b61ffff19166101011760005586610c6d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b158015610c575750600160ff821614610c57565b50600160ff821610610c50565b3461068057600036600319011261068057602060008051602061790f8339815191525460601c604051908152f35b34610680576040366003190112610680576104fc6004356112eb61468f565b90806000526065602052611306600160406000200154615d59565b616119565b34610680576113193661479d565b6113216154b5565b61132b8333614a2c565b1561165b578115159061133d82614ef6565b8015159061134a82614f55565b611352615919565b50611366611361866004617795565b615944565b8460005260008051602061786f8339815191526020526113896040600020615987565b93608085015115611616576113e660018060a01b036101f95416936113e160018060a01b03885116968960005260008051602061786f8339815191526020526113dc60ff60046040600020015416616419565b614ef6565b614f55565b600086815260008051602061786f83398151915260205260409020546001600160a01b031684036115c1576114876040937fb4cfe1d8ea70adf14096f94f362b2c5a7d7e75a5308460ff461b34288fb2df729560008051602061790f833981519152916127106114606001600160601b0385541688614c49565b048a61146c8289614b0e565b9461147989303387616485565b8261157b575b50505061684c565b8560005260008051602061786f8339815191526020526114af6002846000200191825461547c565b90558460005260008051602061786f833981519152602052600382600020016114d982825461547c565b90558460005260008051602061786f83398151915260205260028260002001548251908152857f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c360203393a361152d615919565b5061153c611361866004617795565b8460005260008051602061786f8339815191526020528161155f81600020615987565b9460018060a01b039051169401519082519182526020820152a3005b6020816115ae857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c8861684c565b5460601c938b51908152a38a8a8161147f565b60405162461bcd60e51b815260206004820152602760248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c2028456044820152665243313135352960c81b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206973206e6f742063757272656e746c792072656e7465640000006044820152606490fd5b606460405162461bcd60e51b815260206004820152602060248201527f4d757374206f776e20746f6b656e7320746f20657874656e642072656e74616c6044820152fd5b346106805760203660031901126106805760043560005260c96020526020604060002054604051908152f35b346106805760003660031901126106805760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b34610680576000611716366147b7565b61171e6154b5565b611729811515614e5e565b61173e816117378433614a2c565b1015614eaa565b61174833836162b4565b611753331515616369565b61177d61175f83616ea3565b61176883616ea3565b908560405161177681614803565b5233616888565b8183526097602052604083203384526020528060408420546117a1828210156163c1565b838552609760205260408520338652602052036040842055604051918252602082015233907fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a46104fc604051614803565b34610680576020366003190112610680576118106154b5565b60043560005260008051602061786f833981519152602052602060ff600460406000200154166040519015158152f35b3461068057604036600319011261068057611859614679565b6024359081151590818303610680576001600160a01b0316913383146118d6576118a89033600052609860205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608490fd5b3461068057600036600319011261068057602060405160008152f35b3461068057602080600319360112610680576004356119666154b5565b611971811515614e5e565b61197e816101fa54614c49565b9060018060a01b03916101f99361199c828587541630903390616485565b6101fc93845494600186019055604051956119b687614803565b600087526119c53315156164ce565b6119e16119d187616ea3565b6119da87616ea3565b9033616a21565b856000526097835260406000203360005283526040600020611a0486825461547c565b90556040518681528584820152600033917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260403392a4333b611a80575b54611a4f91168386616524565b6040519283528201527f10546b1a6f5245ff0ffa18c256b9e46859c585cbb473b453fcd4c2dc39ae08db60403392a3005b9195604051878180611ac163f23a6e6160e01b95868352336004840152600060248401528b60448401528a606484015260a0608484015260a4830190614778565b03816000335af160009181611afc575b50611adf5787610578616c52565b63ffffffff60e098959697981b16036105f4578594939291611a42565b611b14919250893d8b11610635576106268183614839565b9089611ad1565b346106805760208060031936011261068057611b35614a16565b60008051602061788f83398151915280600052606583526040600020336000528352611b6860ff60406000205416614b07565b60405190632474521560e21b825260048201523360248201528281604481305afa908115610b6057600091611c3f575b5015610af5576001600160601b031690610bb88211611bfb576000805160206178cf83398151915280546001600160601b031916831790556040519182527f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e391a1005b6064906040519062461bcd60e51b82526004820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b611c569150833d8511610b5957610b4b8183614839565b83611b98565b34610680576020806003193601126106805760043590611c7a6154b5565b611c82615919565b50611c91611361836004617795565b8160005260008051602061786f83398151915290818152611cb56040600020615987565b611cbf8433614a2c565b15801590611e60575b15611e0857611cd78433614a2c565b15611df75733925b84600052808352611cfa60ff60046040600020015416616419565b600085815281845260409020546001600160a01b03939084163303611db357856000525281604060002093600482865416950160ff198154169055169283857fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4611d7282825116611d6d6154b5565b614b31565b15611da2575b5116907f2701fe1dc0d516a6094695be18e9b34a36ac386ec7694aec82980be40e1a9fc0600080a4005b611dae8282511661606c565b611d78565b6064906040519062461bcd60e51b82526004820152601a60248201527f4f6e6c792072656e7465722063616e20656e642072656e74616c0000000000006044820152fd5b80516001600160a01b031692611cdf565b60405162461bcd60e51b815260048101839052602a60248201527f4d757374206f776e20746f6b656e73206f722062652072656e74657220746f20604482015269195b99081c995b9d185b60b21b6064820152608490fd5b5080516001600160a01b03163314611cc8565b6149c3565b3461068057604036600319011261068057611e9161468f565b600435600052606560205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346106805760203660031901126106805760405162461bcd60e51b815260206004820152602560248201527f746f6b656e4279496e646578206e6f7420737570706f7274656420696e204552604482015264433131353560d81b6064820152608490fd5b346106805760003660031901126106805760206001600160601b036000805160206178cf8339815191525416604051908152f35b34610680576000366003190112610680573360009081526000805160206178af8339815191526020526040902054611f979060ff16614b07565b611f9f6154b5565b61012d600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b34610680576040366003190112610680576001600160401b036004358181116106805761200a903690600401614871565b9060243590811161068057612023903690600401614871565b61202b6154b5565b81518151036121bc5781511561217e5760005b825181101561209a578061205761033560019385614c7f565b61208061206e6120678387614c7f565b5133614a2c565b6120788386614c7f565b511115614eaa565b6120943361208e8387614c7f565b516162b4565b0161203e565b506120a6331515616369565b6120b38251825114615c1e565b60006040516120c181614803565b526120cd818333616888565b60005b825181101561213a57806120e660019285614c7f565b516120f18285614c7f565b519080600052609760209080825260406000203360005282526040600020549261211d858510156163c1565b6000528152604060002090336000525203604060002055016120d0565b506000917f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb604051806121703395339583615d34565b0390a46104fc604051614803565b60405162461bcd60e51b81526020600482015260166024820152754172726179732063616e6e6f7420626520656d70747960501b6044820152606490fd5b60405162461bcd60e51b8152602060048201526016602482015275082e4e4c2f2e640d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606490fd5b6149f7565b3461068057602036600319011261068057602060405160008152f35b3461068057608036600319011261068057612234614679565b602435906044356064356122466154b5565b6001600160a01b038381169390841561240c576123db90612268851515614e5e565b612273841515614ab1565b612281856117378933614a2c565b6101f95416918660005261231e60209360008051602061786f83398151915285526122b760ff600460406000200154161561582e565b6122f56001600160601b036122dd816000805160206178cf833981519152541689614c49565b5060008051602061790f833981519152541687614c49565b5061230286308584616485565b61231661231082888c6166d5565b87614b0e565b90339061684c565b60405183810190612344816123368886338e886154fa565b03601f198101835282614839565b5190206000526000805160206178ef83398151915283526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e283528360406000205585604051858152887f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af9556863393a48487604051926123d184614803565b600084523361504b565b6040519283528201527f9387a595ac4be9038bbb9751abad8baa3dcf219dd9e19abb81552bd521fe354660403392a4005b60405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742073656c6c20746f207a65726f206164647265737300000000006044820152606490fd5b346106805760003660031901126106805760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346106805760003660031901126106805760206101fa54604051908152f35b3461068057602080600319360112610680576004356001600160401b038111610680576124dc9036906004016146f2565b9060008051602061788f8339815191528060005260658452604060002033600052845261251060ff60406000205416614b07565b60405190632474521560e21b825260048201526024903360248201528481604481305afa908115610b60576000916126ef575b5015610af5577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289190815460008355806126ac575b5060009460005b8581106125d2577fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b86866125be6127106001600160601b038c161461624d565b6125cd60405192839283615664565b0390a1005b6001600160a01b0396612600906125f189610aa7610aa2868c8c615578565b610ac484610abe858b8b615578565b9661260c828888615578565b855491600160401b8310156126975760018301808855831015612682579060019392918760005261263c82615588565b16906001600160a01b0319906126539087016155db565b60a01b1617907fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee01550161257e565b85634e487b7160e01b60005260326004526000fd5b85634e487b7160e01b60005260416004526000fd5b826000527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee908101905b8181106126e35750612577565b600081556001016126d6565b6127069150853d8711610b5957610b4b8183614839565b85612543565b346106805760203660031901126106805761273761272b600435615b1b565b60405191829182614933565b0390f35b3461068057600036600319011261068057602060ff61012d54166040519015158152f35b3461068057602080600319360112610680576001600160401b0390600435828111610680576127929036906004016148ec565b9160008051602061788f8339815191526000526065825260406000203360005282526127c560ff60406000205416614b07565b82519081116110ca576101fb916127dc8354614b6b565b601f811161288f575b5080601f83116001146128215750819293600092612816575b5050600019600383901b1c191660019190911b179055005b0151905083806127fe565b90601f198316948460005260008051602061794f833981519152926000905b87821061287757505083600195961061285e575b505050811b019055005b015160001960f88460031b161c19169055838080612854565b80600185968294968601518155019501930190612840565b8360005260008051602061794f833981519152601f840160051c8101918385106128d6575b601f0160051c01905b8181106128ca57506127e5565b600081556001016128bd565b90915081906128b4565b34610680576000366003190112610680577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361293957602060405160008051602061792f8339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b346106805760203660031901126106805760206129d060043560005260c9602052604060002054151590565b6040519015158152f35b6040366003190112610680576129ee614679565b6024356001600160401b03811161068057612a0d9036906004016148ec565b906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116612a4530821415614d6a565b612a6260008051602061792f833981519152918383541614614dcb565b3360009081527f61c6261e6978331c793eee420d743e773864e0ec05cc862750e423d64f73e9f6602090815260409091205490929060ff1615612c8e577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612ad6575050506104fc9150616d33565b83929316906040516352d1902d60e01b81528481600481865afa60009181612c5f575b50612b5a5760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612c0857612b6882616d33565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2825115801590612c00575b612b9e57005b6000806104fc9460405194612bb28661481e565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4612bfa6176da565b9161770a565b506001612b98565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508581813d8311612c87575b612c778183614839565b8101031261068057519087612af9565b503d612c6d565b60405162461bcd60e51b815260048101849052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b34610680576040366003190112610680576004356001600160401b03808211610680573660238301121561068057816004013590612d0c8261485a565b92612d1a6040519485614839565b82845260209260248486019160051b83010191368311610680576024859101915b838310612e28575050505060243590811161068057612d5e903690600401614871565b8251815103612dd157612d718351614e2c565b9260005b8151811015612dba57600190612da96001600160a01b03612d968386614c7f565b5116612da28387614c7f565b5190614a2c565b612db38288614c7f565b5201612d75565b50505061273760405192828493845283019061498f565b60405162461bcd60e51b815260048101839052602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608490fd5b8190612e33846146a5565b8152019101908490612d3b565b3461068057602080600319360112610680576004356001600160401b03811161068057612e719036906004016146f2565b9060008051602061788f83398151915280600052606584526040600020336000528452612ea560ff60406000205416614b07565b60405190632474521560e21b825260048201526024903360248201528481604481305afa908115610b60576000916130d9575b5015610af5577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289080546000825580613096575b5060009160005b858110612fbc575050506001600160601b03612710911603612f60577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d7092506125cd60405192839283615664565b60405162461bcd60e51b815260048101849052602e60248201527f546f74616c206d696e7420726f79616c74792070657263656e7461676573206d60448201526d75737420657175616c203130302560901b6064820152608490fd5b6001600160a01b0393612fea90612fdb86610aa7610aa2868c8c615578565b610ac489610abe858b8b615578565b93612ff6828888615578565b845491600160401b831015613081576001830180875583101561306c579060019392918660005261302682615588565b16906001600160a01b03199061303d908c016155db565b60a01b1617907fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8015501612f12565b84634e487b7160e01b60005260326004526000fd5b84634e487b7160e01b60005260416004526000fd5b816000527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8908101905b8181106130cd5750612f0b565b600081556001016130c0565b6130f09150853d8711610b5957610b4b8183614839565b85612ed8565b346106805760203660031901126106805761273761272b60043561614a565b34610680576000366003190112610680573360009081526000805160206178af833981519152602052604090205461314f9060ff16614b07565b61012d805460ff81161561318f5760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b3461068057602080600319360112610680576131e5614679565b6001600160a01b03917f0000000000000000000000000000000000000000000000000000000000000000831661321d30821415614d6a565b61323a60008051602061792f833981519152918583541614614dcb565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e360005260658252604060002033600052825260ff60406000205416156133c1576040519361328885614803565b600085527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156132c3575050506104fc9150616d33565b83929316906040516352d1902d60e01b81528481600481865afa60009181613392575b506133475760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612c085761335582616d33565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061338a57612b9e57005b506000612b98565b9091508581813d83116133ba575b6133aa8183614839565b81010312610680575190876132e6565b503d6133a0565b60405162461bcd60e51b815260048101839052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346106805760403660031901126106805761341b61468f565b336001600160a01b03821603613437576104fc90600435616119565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b34610680576000366003190112610680576101f9546040516001600160a01b039091168152602090f35b34610680576040366003190112610680576004356134da61468f565b8160005260656020526134f4600160406000200154615d59565b81600052606560205260406000209060018060a01b0316908160005260205260ff604060002054161561352357005b8160005260656020526040600020816000526020526040600020600160ff19825416179055339160008051602061784f833981519152600080a4005b346106805760a036600319011261068057613578614679565b61358061468f565b6001600160401b0390604435828111610680576135a1903690600401614871565b606435838111610680576135b9903690600401614871565b92608435908111610680576135d29036906004016148ec565b6001600160a01b03851633148015613a2f575b6135ee90614d07565b6135fb8251855114615c1e565b61360f6001600160a01b0384161515615c7b565b6001600160a01b038516156139dc575b6001600160a01b03831615613927575b60005b82518110156137075780613698858861364d60019588614c7f565b518060005260008051602061786f83398151915260205260ff600460406000200154166136a7575b858060a01b0382161560001461369e5761369360005b8484846172e6565b617679565b01613632565b6136933361368b565b6136b0816159d1565b60808101511515806136f9575b6136c8575b50613675565b6136dc878060a01b03825116611d6d6154b5565b156136c2576136f390878060a01b0390511661606c565b8b6136c2565b5060408101514210156136bd565b5092919060005b81518110156137b1578061372460019284614c7f565b5161372f8287614c7f565b51908060005260976020918183526040600020868060a01b038c1660005283528360406000205461376282821015615cd5565b8260005283855260406000208d898060a01b03166000528552036040600020556000528152604060002090848060a01b038716600052526137a9604060002091825461547c565b90550161370e565b5060405190939291906001600160a01b03808316919087169033907f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb90806137fa888b83615d34565b0390a4803b61380557005b60405163bc197c8160e01b8082523360048301526001600160a01b03909616602482015260a06044820152936020938593849260009284926138789261386691906138549060a487019061498f565b8581036003190160648701529061498f565b83810360031901608485015290614778565b03926001600160a01b03165af160009181613906575b506138f55761389b616c52565b6308c379a0146138be5760405162461bcd60e51b81528061059c60048201616cde565b6138c6616c70565b806138d15750610583565b60405162461bcd60e51b81526020600482015290819061059c906024830190614778565b6001600160e01b031916036105f457005b61392091925060203d602011610635576106268183614839565b908361388e565b9293909160005b83518110156139d2576139418185614c7f565b519061394d8188614c7f565b518260005260c960205260406000205481811061397c5760019360005260c9602052036040600020550161392e565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608490fd5b509190939261362f565b9293909160005b8351811015613a2557806139f960019288614c7f565b51613a048287614c7f565b5160005260c9602052613a1d604060002091825461547c565b9055016139e3565b509190939261361f565b506001600160a01b038516600090815260986020908152604080832033845290915290205460ff166135e5565b3461068057613a73613a6d366147b7565b90614c93565b604080516001600160a01b03939093168352602083019190915290f35b3461068057602036600319011261068057600435613aac6154b5565b613ab4615919565b50613ac3611361826004617795565b60005260008051602061786f83398151915260205260a0613ae76040600020615987565b600180831b03815116906020810151906040810151608060608301519201511515926040519485526020850152604084015260608301526080820152f35b346106805760203660031901126106805760043560005260656020526020600160406000200154604051908152f35b3461068057613b7e612336613b68366146b9565b60405160208101969095909486949193886154fa565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df602052602060ff604060002054166040519015158152f35b3461068057613bcb3661479d565b90613bd46154b5565b613bde8333614a2c565b15613f3b578015613ef65781151590613bf682614bf1565b60018060a01b0390816101f95416918560005260008051602061786f8339815191529260209484865260ff60046040600020015416613eb15791613c96613d1a92613c44613d209695614bf1565b60008051602061790f83398151915290612710613c6b6001600160601b038454168c614c49565b048b613c77828d614b0e565b93613c848d303387616485565b8b83613e6b575b50505050339061684c565b6004613ca2844261547c565b9160405192613cb0846147cd565b338452888401904282526040850190815260608501918b83526080860193600185528d6000528a8c5260406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b4261547c565b60405190857f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b1339380613d6789339642846040919493926060820195825260208201520152565b0390a47f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8060005260658352604060002033600052835260ff6040600020541615613e2b575b50613db6615919565b50613dc5611361856004617795565b8360005281527f91ed440ea126ed5a21dfd1e9ad850a40d87c795aa239d6d1a8967347bee99790613e266040613dfd81600020615987565b938401519301519360405191829133963396846040919493926060820195825260208201520152565b0390a4005b806000526065835260406000203360005283526040600020600160ff198254161790553390339060008051602061784f833981519152600080a484613dad565b81613e9c857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c8861684c565b5460601c93604051908152a38b8b818b613c8b565b60405162461bcd60e51b815260048101879052601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601f60248201527f4475726174696f6e206d7573742062652067726561746572207468616e2030006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f4d757374206f776e20746f6b656e7320746f2072656e740000000000000000006044820152606490fd5b3461068057606036600319011261068057613f99614679565b604435602435613fa76154b5565b6001600160a01b03831692831515613fbe81614ba5565b613fc88333614a2c565b156140b75761400c90613fdc851515614ab1565b8360005260008051602061786f83398151915260205261400760ff600460406000200154161561582e565b614ba5565b604051614024816123368660208301953388886154fa565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df6020526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e0602052816040600020556040519182527f3c03dadf3cda1d8a0b15eaf862e12cdc0dabbcdd0f5f87342a0c10793a056a8b60203393a4005b60405162461bcd60e51b815260206004820152601b60248201527f4d757374206f776e20746f6b656e7320746f207472616e7366657200000000006044820152606490fd5b34610680576020806003193601126106805761411960043561576e565b9060405191828260006101fb805461413081614b6b565b916001918083169081156141ca5750600114614180575b50505061415d848261416c965194859201614755565b0103601f198101845283614839565b612737604051928284938452830190614778565b600090815291925060008051602061794f8339815191525b8383106141b2575050508201810161415d61416c88614147565b8054838a018601528895508794909201918101614198565b60ff1916878701525050508015150283018201905061415d61416c88614147565b346106805760203660031901126106805760206129d0614209614679565b611d6d6154b5565b346106805761421f36614722565b3360009081526000805160206178af83398151915260209081526040909120549093929060008051602061788f8339815191529061425f9060ff16614b07565b60405190632474521560e21b825260048201523360248201528481604481305afa908115610b60576000916143d3575b5015610af557826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28928085526142ca6040600020615540565b6000906000905b8482106143805750506001600160601b0361271091160361431e57907faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b591610a7860405192839283615664565b60405162461bcd60e51b815260048101859052603460248201527f546f74616c20746f6b656e206d696e7420726f79616c74792070657263656e7460448201527361676573206d75737420657175616c203130302560601b6064820152608490fd5b90916001906143b1906143a26001600160a01b03610aa7610aa2888b8b615578565b610ac489610abe878a8a615578565b92866000528288526143cc6040600020610ae5838989615578565b01906142d1565b6143ea9150853d8711610b5957610b4b8183614839565b8561428f565b34610680576143fe366146b9565b91926144086154b5565b6001600160a01b038181169390919084156145515782861695861561450c576144c56020937f771e304e88a13ffdb75cacc5fbef9827e376630b3548262bab37c8325715aec49561445a851515614ab1565b6101f954169061446c85303385616485565b6144aa6001600160601b03614492816000805160206178cf833981519152541688614c49565b5060008051602061790f833981519152541686614c49565b506144bf6144b983878b6166d5565b86614b0e565b9161684c565b6040516144dc816123368587830195338b886154fa565b5190206000526000805160206178ef83398151915282526040600020600160ff19825416179055604051908152a4005b60405162461bcd60e51b815260206004820152601c60248201527f42757965722063616e6e6f74206265207a65726f2061646472657373000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f53656c6c65722063616e6e6f74206265207a65726f20616464726573730000006044820152606490fd5b34610680576020366003190112610680576004356001600160e01b0319811680820361068057602091636cdb3d1360e11b8214801561463a575b801561462b575b80928115614604575b505081156145f4575b506040519015158152f35b6145fe9150615489565b826145e9565b91925063152a902d60e11b909114908115614623575b509083806145e0565b90508361461a565b5061463581615489565b6145d7565b506303a24d0760e21b82146145d0565b34610680576040366003190112610680576020614671614668614679565b60243590614a2c565b604051908152f35b600435906001600160a01b038216820361068057565b602435906001600160a01b038216820361068057565b35906001600160a01b038216820361068057565b6080906003190112610680576001600160a01b039060043582811681036106805791602435908116810361068057906044359060643590565b9181601f84011215610680578235916001600160401b038311610680576020808501948460061b01011161068057565b9060406003198301126106805760043591602435906001600160401b03821161068057614751916004016146f2565b9091565b60005b8381106147685750506000910152565b8181015183820152602001614758565b9060209161479181518092818552858086019101614755565b601f01601f1916010190565b606090600319011261068057600435906024359060443590565b6040906003190112610680576004359060243590565b60a081019081106001600160401b038211176110ca57604052565b604081019081106001600160401b038211176110ca57604052565b602081019081106001600160401b038211176110ca57604052565b606081019081106001600160401b038211176110ca57604052565b90601f801991011681019081106001600160401b038211176110ca57604052565b6001600160401b0381116110ca5760051b60200190565b9080601f8301121561068057602090823561488b8161485a565b936148996040519586614839565b81855260208086019260051b82010192831161068057602001905b8282106148c2575050505090565b813581529083019083016148b4565b6001600160401b0381116110ca57601f01601f191660200190565b81601f8201121561068057803590614903826148d1565b926149116040519485614839565b8284526020838301011161068057816000926020809301838601378301015290565b60208082019080835283518092528060408094019401926000905b83821061495d57505050505090565b845180516001600160a01b031687528301516001600160601b031686840152948501949382019360019091019061494e565b90815180825260208080930193019160005b8281106149af575050505090565b8351855293810193928101926001016149a1565b346106805760003660031901126106805760206001600160601b0360008051602061790f8339815191525416604051908152f35b346106805760003660031901126106805760206101fc54604051908152f35b600435906001600160601b038216820361068057565b6001600160a01b0316908115614a5957600052609760205260406000209060005260205260406000205490565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b6064820152608490fd5b15614ab857565b60405162461bcd60e51b815260206004820152602160248201527f53616c65207072696365206d7573742062652067726561746572207468616e206044820152600360fc1b6064820152608490fd5b15610af557565b91908203918211614b1b57565b634e487b7160e01b600052601160045260246000fd5b6101fc548015614b64576000198101908111614b1b576002614b619260008051602061786f8339815191526156e6565b90565b5050600090565b90600182811c92168015614b9b575b6020831014614b8557565b634e487b7160e01b600052602260045260246000fd5b91607f1691614b7a565b15614bac57565b60405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606490fd5b15614bf857565b60405162461bcd60e51b815260206004820152602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b81810292918115918404141715614b1b57565b805115614c695760200190565b634e487b7160e01b600052603260045260246000fd5b8051821015614c695760209160051b010190565b91909161271090614cc982614cc26001600160601b0396876000805160206178cf833981519152541690614c49565b0491615b1b565b8051614cdc575050509050600090600090565b90614ce9614cf792614c5c565b519460208601511690614c49565b92516001600160a01b0316920490565b15614d0e57565b60405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608490fd5b15614d7157565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15614dd257565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b90614e368261485a565b614e436040519182614839565b8281528092614e54601f199161485a565b0190602036910137565b15614e6557565b60405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606490fd5b15614eb157565b60405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e7420746f6b656e2062616c616e63650000000000006044820152606490fd5b15614efd57565b60405162461bcd60e51b815260206004820152602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b15614f5c57565b60405162461bcd60e51b815260206004820152602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b15614fba57565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b1561500657565b60405162461bcd60e51b815260206004820152601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b929490936001600160a01b03929091838516913383148015615453575b61507190614d07565b848716928315946150828615615c7b565b61508b83616ea3565b946150958b616ea3565b831597886153eb575b61531d575b5060005b865181101561515a57806151028c8c6150c26001958c614c7f565b518060005260008051602061786f8339815191526020528d60409060ff600483600020015416615108575b50508c1561369e5761369360008484846172e6565b016150a7565b615111836159d1565b9160808301511515908161514c575b50156150ed5761513581835116611d6d6154b5565b156150ed5761514591511661606c565b388e6150ed565b905082015142101538615120565b5094509450945094509584600052602094609786526040968760002086600052875282886000205461518e82821015615cd5565b836000526097895289600020886000528952038860002055816000526097875287600020846000528752876000206151c784825461547c565b905583868951848152858a8201527fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628b3392a43b615209575b50505050505050565b916152519391600087989997948a519687958694859363f23a6e6160e01b9b8c865233600487015260248601526044850152606484015260a0608484015260a4830190614778565b03925af1600091816152fe575b506152c55750505061526e616c52565b6308c379a014615291575b505162461bcd60e51b81528061059c60048201616cde565b615299616c70565b90816152a55750615279565b61059c835192839262461bcd60e51b845260048401526024830190614778565b919392506001600160e01b0319909116036152e7575038808080808080615200565b5162461bcd60e51b81528061059c60048201616c09565b615316919250853d8711610635576106268183614839565b903861525e565b9a979492909996939160009996995b8a518110156153d7578c61534b82615344818f614c7f565b5192614c7f565b518160005260c99160209280845260409384600020549284841061538257906001969594939291600052520390600020550161532c565b855162461bcd60e51b815260048101839052602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152608490fd5b5091939699909294979a50979497386150a3565b9a9699959260009c98949199959260005b8c5181101561544057808f6154388f918f9061542785615420600198604095614c7f565b5195614c7f565b51815260c96020522091825461547c565b9055016153fc565b509295999194989c50929599969a61509e565b5082600052609860205260406000203360005260205261507160ff604060002054169050615068565b91908201809211614b1b57565b63ffffffff60e01b16637965db0b60e01b81149081156154a7575090565b6301ffc9a760e01b14919050565b60ff61012d54166154c257565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b92606894929184526001600160601b0319809260601b16602085015260601b16603483015260488201520190565b90816020910312610680575180151581036106805790565b805490600090600081558261555457505050565b6000526020600020918201915b82811061556d57505050565b818155600101615561565b9190811015614c695760061b0190565b356001600160a01b03811681036106805790565b156155a357565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036106805790565b9190916001600160601b0380809416911601918211614b1b57565b805490600160401b8210156110ca5760018201808255821015614c695760009081526020902001906001600160a01b0361564382615588565b16906001600160a01b03199061565b906020016155db565b60a01b16179055565b90916020918160208201602083525260408091019392600080915b84831061568f5750505050505090565b90919293949560018060a01b036156a5886146a5565b168152818701356001600160601b0381168091036156d357828201528401958401949392600101919061567f565b8380fd5b6000198114614b1b5760010190565b909160005b848111156156fd575050505050600090565b6157078183617795565b61571a575b615715906156d7565b6156eb565b8060005282602052604060002060ff6004820154169081615746575b501561570c575050505050600190565b546001600160a01b03868116911614905038615736565b908151811015614c69570160200190565b80156158105780816000925b6157fa5750615788826148d1565b916157966040519384614839565b80835281601f196157a6836148d1565b013660208601375b6157b757505090565b6000198101908111614b1b578091600a9160308383068101809111614b1b5760f81b6001600160f81b03191660001a906157f1908661575d565b530490816157ae565b9091615807600a916156d7565b9291048061577a565b5060405161581d816147e8565b60018152600360fc1b602082015290565b1561583557565b60405162461bcd60e51b815260206004820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152606490fd5b6001600160a01b031660008181527f8fe9de6e6d7d32292eeb65478fd6c9c8327fc5086caf996e3eecbac0d25b16b360205260408120549091907f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9060ff16156158e357505050565b80835260656020526040832082845260205260408320600160ff1982541617905560008051602061784f833981519152339380a4565b60405190615926826147cd565b60006080838281528260208201528260408201528260608201520152565b1561594b57565b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b90604051615994816147cd565b82546001600160a01b0316815260018301546020820152600283015460408201526003830154606082015260049092015460ff1615156080830152565b608060409182516159e1816147cd565b600092818480935282602082015282868201528260608201520152615a07816004617795565b15615a6b57828260049260ff945260008051602061786f83398151915260205220835193615a34856147cd565b81546001600160a01b0316855260018201546020860152600282015490850152600381015460608501520154161515608082015290565b825162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b908154615ab28161485a565b92604093615ac36040519182614839565b82815280946020809201926000526020600020906000935b858510615aea57505050505050565b60018481928451615afa816147e8565b8654848060a01b038116825260a01c83820152815201930194019391615adb565b6000908082527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28939060208260205260409060408520541515600014615b6e575050825260205260409020614b6190615aa6565b91509291507f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289190815492615ba18461485a565b94615baf6040519687614839565b848652602086019382527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee91935b858510615bed5750505050505090565b60018481928451615bfd816147e8565b8654848060a01b038116825260a01c83820152815201930194019391615bdd565b15615c2557565b60405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608490fd5b15615c8257565b60405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b15615cdc57565b60405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608490fd5b9091615d4b614b619360408452604084019061498f565b91602081840391015261498f565b60009080825260209060658252604092838120338252835260ff848220541615615d835750505050565b33845192615d908461481e565b602a84528484019086368337845115616058576030825384519260019360011015616044576078602187015360295b848111615fda5750615f9857865192608084018481106001600160401b03821117615f8457885260428452868401946060368737845115615f705760308653845160011015615f705790607860218601536041915b818311615f0257505050615ec05761059c938693615ea493615e95604894615e6c9a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c8801525180926037880190614755565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190614755565b01036028810187520185614839565b5192839262461bcd60e51b845260048401526024830190614778565b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015615f5c576f181899199a1a9b1b9c1cb0b131b232b360811b901a615f32858861575d565b5360041c928015615f4857600019019190615e14565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b86526041600452602486fd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f81166010811015616030576f181899199a1a9b1b9c1cb0b131b232b360811b901a616008838961575d565b5360041c90801561601c5760001901615dbf565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b6001600160a01b031660008181527f5b7784634afa4a725e99aef86a1e6452834787b06eb871864223fd156b9d496b60205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff166160d457505050565b8083526065602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b906000918083526065602052604083209160018060a01b03169182845260205260ff6040842054166160d457505050565b6000908082527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2892906020826020526040906040852054151560001461619d575050825260205260409020614b6190615aa6565b91509291507f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2890908154926161d08461485a565b946161de6040519687614839565b848652602086019382527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c891935b85851061621c5750505050505090565b6001848192845161622c816147e8565b8654848060a01b038116825260a01c8382015281520193019401939161620c565b1561625457565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b90336001600160a01b03909116036163325760005260008051602061786f83398151915260205260ff600460406000200154166162ed57565b60405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606490fd5b1561637057565b60405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156163c857565b60405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608490fd5b1561642057565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b6001600160601b0360008051602061790f83398151915291166001600160601b0319825416179055565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526164cc916164c7826147cd565b616dc3565b565b156164d557565b60405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608490fd5b929160008051602061790f8339815191529384549461656f612710966165696001600160601b0394896165598785168a614c49565b04928380616661575b505061614a565b95614b0e565b908451151580616658575b1561663a575060009160005b85518110156165ee57876165aa8360206165a0858b614c7f565b5101511685614c49565b04806165ba575b50600101616586565b90936001916165e7916165e2826001600160a01b036165d98a8d614c7f565b5151168a61684c565b61547c565b93906165b1565b50506165fd9293949550614b0e565b9081151580616630575b616611575b505050565b6164cc926001600160a01b039061662790614c5c565b5151169061684c565b5082511515616607565b9495509250508161664a57505050565b6164cc925460601c9061684c565b5081151561657a565b61666e9160601c8961684c565b3883616562565b1561667c57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b9160008051602061790f83398151915293845493612710908161673361671a6001600160601b03938361670a868c168b614c49565b04998a80616838575b5050615b1b565b96836000805160206178cf833981519152541690614c49565b0496855115158061682f575b156168095750600092835b86518110156167ad578361676e846020616764858c614c7f565b510151168b614c49565b048061677e575b5060010161674a565b90946001916167a6916165e2826001600160a01b0361679d8b8e614c7f565b5151168b61684c565b9490616775565b5096614b61969492506167c4915092809593614b0e565b91821515806167ff575b6167db575b50505061547c565b826167f69495926165e29261662760018060a01b0391614c5c565b903880806167d3565b50805115156167ce565b929596945050508261681a57505050565b82614b619495926165e2925460601c9061684c565b5087151561673f565b6168459160601c8a61684c565b388a616713565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526164cc916164c7606483614839565b91926001600160a01b0380841615939190846169cd575b60005b84518110156168f7576168b58186614c7f565b516168c08289614c7f565b518160005260c9916020928084526040938460002054928484106153825790600196959493929160005252039060002055016168a2565b5092909391945060005b81518110156169c5578061695d8761691b60019486614c7f565b518060005260008051602061786f833981519152602052604060ff60048260002001541661696c575b5086156169635761695860005b8383616ec8565b6175d9565b01616901565b61695833616951565b616975826159d1565b906080820151151590816169b7575b5015616944578861699a81835116611d6d6154b5565b6169a5575b50616944565b6169b091511661606c565b388861699f565b905081015142101538616984565b505050509050565b93909160009260005b8551811015616a1657806169ec6001928a614c7f565b516169f78289614c7f565b51875260c9602052616a0e6040882091825461547c565b9055016169d6565b50919490925061689f565b91909260005b8451811015616a695780616a3d60019285614c7f565b51616a488288614c7f565b5160005260c9602052616a61604060002091825461547c565b905501616a27565b50916001600160a01b039190821615616b2e575b5060005b8351811015616b285780616a9760019286614c7f565b518060005260008051602061786f83398151915260205260409060ff600483600020015416616ac9575b505001616a81565b616ad2906159d1565b90608082015115159081616b1a575b50616aed575b80616ac1565b83616afd81835116611d6d6154b5565b616b08575b50616ae7565b616b1391511661606c565b3883616b02565b905081015142101538616ae1565b50509050565b91926000935b8151851015616bdf57616b478583614c7f565b5194616b538186614c7f565b518660005260c9906020828152604092836000205491838310616b8b576001969798999a600052520390600020550193929190616b34565b60849085519062461bcd60e51b82526004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b6064820152fd5b9250925038616a7d565b9081602091031261068057516001600160e01b0319811681036106805790565b60809060208152602860208201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b60608201520190565b60009060033d11616c5f57565b905060046000803e60005160e01c90565b600060443d10614b6157604051600319913d83016004833e81516001600160401b03918282113d602484011117616ccd57818401948551938411616cd5573d85010160208487010111616ccd5750614b6192910160200190614839565b949350505050565b50949350505050565b60809060208152603460208201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356040820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60608201520190565b803b15616d685760008051602061792f83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b604051616e1b916001600160a01b0316616ddc826147e8565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1612bfa6176da565b805190828215928315616e8b575b50505015616e345750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b616e9b9350820181019101615528565b388281616e29565b60405190616eb0826147e8565b6001825260203681840137616ec482614c5c565b5290565b6001600160a01b03828116929091908315801590816172de575b6172d65760009083825260008051602061786f833981519152946020968688526040968785209960ff9360049b60ff8d82015416617239575b506001600160601b036000805160206178cf8339815191525416958615159081617231575b50616f54575b505050505050505050505050565b620f424095808702908782040361721e5761271087910410616f465783875260988b528987203388528b5260ff8a88205416928315617207575b8988528b528987209160ff8d8401541694856171fa575b50846171ee575b5050600201549081151591826171e3575b501591826171da575b50816171d1575b50616fdc575b80808080616f46565b8294825b633b9aca00811115617149575b5085156170aa575b505050505015617009578080808080616fd3565b5162461bcd60e51b815291820152606b60248201527f526f79616c7479207061796d656e74207265717569726564206265666f72652060448201527f7472616e736665722e2055736520696e6974696174655472616e73666572576960648201527f7468526f79616c747920616e64207061795472616e73666572526f79616c747960848201526a10333ab731ba34b7b7399760a91b60a482015260c49150fd5b825b633b9aca008111156170bf575b50616ff5565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906170f78160688401612336565b51902085526000805160206178ef833981519152895282888620541661713557838101809111156170ac57634e487b7160e01b855260118a52602485fd5b5050505050505060013880808080806170b9565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906171818160688401612336565b51902085526000805160206178ef83398151915289528288862054166171c657600a908181029181830414901517616fe057634e487b7160e01b855260118a52602485fd5b506001955038616fed565b90501538616fcd565b15915038616fc6565b421015915038616fbd565b16159250600238616fac565b8354831614945038616fa5565b925033816172168b6006617795565b161492616f8e565b634e487b7160e01b885260118d52602488fd5b905038616f40565b81815416851490816172cb575b81156172a8575b50156172595738616f1b565b895162461bcd60e51b8152808d018c90526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152608490fd5b33848416149150816172bc575b503861724d565b600291500154421015386172b5565b838316159150617246565b505050505050565b506001616ee2565b916001600160a01b038281169290831580156175cf575b6172d65760009085825260008051602061786f833981519152966020968888526040968785209960ff9360049b60ff8d8201541661757e575b506001600160601b036000805160206178cf83398151915254169586151580617572575b61736e575b50505050505050505050505050565b620f424096808802908882040361755e576127108891041061735f578c9184895260988d528b8920338a528d5260ff8c8a205416938415617547575b868a528d5260ff8c8a209384015416948561753a575b508461752a575b50506002015490811515918261751f575b50159182617516575b508161750d575b506173f7575b8080808061735f565b8395835b633b9aca008111156174a6575b508615617426575b50505050505015617009578080808080806173ee565b835b633b9aca0081111561743b575b50617410565b88518a8101906174528161233685878d8a886154fa565b51902086526000805160206178ef8339815191528a52838987205416617490578481018091111561742857634e487b7160e01b865260118b52602486fd5b5050505050505050600138808080808080617435565b88518a8101906174bd8161233685878d8a886154fa565b51902086526000805160206178ef8339815191528a5283898720541661750257600a9081810291818304149015176173fb57634e487b7160e01b865260118b52602486fd5b506001965038617408565b905015386173e8565b159150386173e1565b4210159150386173d8565b8a821691161492506002386173c7565b83548316149450386173c0565b93503382617556886006617795565b1614936173aa565b50634e487b7160e01b885260118d52602488fd5b50808a1684141561735a565b86815416841490816175c1575b811561759e575b50156172595738617336565b33838916149150816175b2575b5038617592565b600291500154421015386175ab565b8a881683891614915061758b565b50808316156172fd565b906001600160a01b039081169081158015617671575b61660c578260005260008051602061786f833981519152602052604060002060048101805460ff811680617663575b61762a57505050505050565b60ff191690555416917fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a43880808080806172d6565b50600283015442101561761e565b5060016175ef565b916001600160a01b039182169190821590829082156176cf575b505061660c578260005260008051602061786f833981519152602052604060002060048101805460ff8116806176635761762a57505050505050565b161590508138617693565b3d15617705573d906176eb826148d1565b916176f96040519384614839565b82523d6000602084013e565b606090565b9192901561776c575081511561771e575090565b3b156177275790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156138d15750805190602001fd5b634e487b7160e01b600052605160045260246000fd5b9081600414617836578160021461782357816005146177d057816003146177c3575060060361777f57600090565b614b619150611d6d6154b5565b60405162461bcd60e51b815260206004820152602560248201527f746f6b656e4279496e646578206e6f7420737570706f7274656420696e204552604482015264433131353560d81b6064820152608490fd5b905060005260c960205260406000205490565b614b61915060005260c960205260406000205415159056fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0defbf0e557c8acb6e3deb011ac697e5553b802e419ed4680395101c0ddc5e8723b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e6805e25e6cde84a829922028ad0e6c513021b8756e9a2473e007ddc1f0f07afb1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d288f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e1de1159fbbeca73b2aca5752c42b257ca18171ae3b3d3bbf22c7938e3a961a0cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9d06c41780d40edbd7db829bd5119eb5f61b9cf80346346f17e157b0b6b1a8e472a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d00a264697066735822122022ad3107968cee90c966a0446dcf01bc2f1dd87ec4dfc0abaa24e33277df7b9164736f6c63430008180033",
    "linkReferences": {},
    "deployedLinkReferences": {}
}