{
  "_format": "hh-sol-artifact-1",
  "contractName": "KAMI721C",
  "sourceName": "contracts/KAMI721C.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "usdcAddress_",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "baseTokenURI_",
          "type": "string"
        },
        {
          "internalType": "uint256",
          "name": "initialMintPrice_",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "platformAddress_",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "platformCommissionPercentage_",
          "type": "uint96"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "feeNumerator",
              "type": "uint96"
            }
          ],
          "indexed": false,
          "internalType": "struct KAMI721C.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": "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": "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 KAMI721C.RoyaltyData[]",
          "name": "royalties",
          "type": "tuple[]"
        }
      ],
      "name": "TokenMintRoyaltiesUpdated",
      "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": "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": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "feeNumerator",
              "type": "uint96"
            }
          ],
          "indexed": false,
          "internalType": "struct KAMI721C.RoyaltyData[]",
          "name": "royalties",
          "type": "tuple[]"
        }
      ],
      "name": "TokenTransferRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "receiver",
              "type": "address"
            },
            {
              "internalType": "uint96",
              "name": "feeNumerator",
              "type": "uint96"
            }
          ],
          "indexed": false,
          "internalType": "struct KAMI721C.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": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "TransferRoyaltyDistributed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "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": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "endRental",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "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 KAMI721C.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 KAMI721C.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": "owner",
          "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": [],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mintPrice",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "platformAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "platformCommissionPercentage",
      "outputs": [
        {
          "internalType": "uint96",
          "name": "",
          "type": "uint96"
        }
      ],
      "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": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "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 KAMI721C.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 KAMI721C.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 KAMI721C.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 KAMI721C.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": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "tokenOfOwnerByIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "usdcToken",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x604060a08152346200077557620054a9803803806200001e816200077a565b92833981019060e08183031262000775576200003a81620007a0565b906020928382015160018060401b039081811162000775578262000060918501620007b5565b868401518281116200077557836200007a918601620007b5565b92606085015190838211620007755762000096918601620007b5565b93608081015160c0620000ac60a08401620007a0565b9201516001600160601b03811694908590036200077557835195818711620004d2576001968754958887811c971680156200076a575b8c881014620004b15781908c601f9889811162000711575b50508c908883116001146200069d5760009262000691575b5050600019600383901b1c191690881b1787555b805190828211620004d257600254908882811c9216801562000686575b8c831014620004b1578b82888594116200062c575b50508b90878311600114620005c057600092620005b4575b5050600019600383901b1c191690871b176002555b60ff199687600d5416600d5560018060601b0319946103e886601654161760165560018060a01b03809a16998a1562000570578516998a156200052c576107d08811620004e8576080528151928311620004d257601054918883811c93168015620004c7575b8c841014620004b1578b838386951162000455575b50508b918311600114620003e957600092620003dd575b5050600019600383901b1c191690861b176010555b600f5560601b161760115560008052600084528460002033600052845260ff85600020541615620003a2575b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e80600052600085528560002033600052855260ff8660002054161562000365575b507f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9384600052600081528560002084600052815260ff8660002054161562000327575b8551614c61908162000828823960805181818161091501528181611e5101528181611e8c01528181611f0d01528181611ff8015281816124ea0152818161283f0152612b220152f35b8460005260008152856000209084600052528460002091825416179055339160008051602062005489833981519152600080a43880808080620002de565b8060005260008552856000203360005285528560002082848254161790553390339060008051602062005489833981519152600080a4386200029a565b60008052600084528460002033600052845284600020818382541617905533336000600080516020620054898339815191528180a462000258565b01519050388062000217565b90889350601f1983169160106000528c600020928d6000905b8282106200043d575050841162000423575b505050811b016010556200022c565b015160001960f88460031b161c1916905538808062000414565b8385015186558c979095019493840193018e62000402565b9091929350601060005283826000209181870160051c8301938710620004a7575b9186958c929594930160051c01915b8281106200049757508d915062000200565b600081558695508b910162000485565b9250819262000476565b634e487b7160e01b600052602260045260246000fd5b92607f1692620001eb565b634e487b7160e01b600052604160045260246000fd5b8c5162461bcd60e51b8152600481018d9052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b8c5162461bcd60e51b8152600481018d9052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b8c5162461bcd60e51b8152600481018d9052601460248201527f496e76616c6964205553444320616464726573730000000000000000000000006044820152606490fd5b01519050388062000170565b899350908c91601f198416600260005283600020936000905b828210620006145750508411620005fa575b505050811b0160025562000185565b015160001960f88460031b161c19169055388080620005eb565b8385015186558d979095019493840193018f620005d9565b90919250600260005287826000209181860160051c83019386106200067c575b918b91869594930160051c01915b8281106200066c57508d915062000158565b600081558594508b91016200065a565b925081926200064c565b91607f169162000143565b01519050388062000112565b8a9350908d91601f1984168560005283600020936000905b828210620006ef5750508411620006d5575b505050811b01875562000126565b015160001960f88460031b161c19169055388080620006c7565b91929395968291958786015181550195019301908f918d9695949392620006b5565b909192508a60005288826000209181860160051c830193861062000760575b918c91869594930160051c01915b8281106200075057508e9150620000fa565b600081558594508c91016200073e565b9250819262000730565b96607f1696620000e2565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620004d257604052565b51906001600160a01b03821682036200077557565b919080601f84011215620007755782516001600160401b038111620004d257602090620007eb601f8201601f191683016200077a565b92818452828287010111620007755760005b8181106200081357508260009394955001015290565b8581018301518482018401528201620007fd56fe6080806040526004908136101561001557600080fd5b60003560e01c90816301ffc9a714612ef65750806306fdde0314612e48578063081812fc14612e2a578063095ea7b314612caf5780630a0a351514612b7e5780630daf4c9714612b5157806311eac85514612b0c5780631249c58b146127f257806318160ddd146127d45780631c2098dc1461241857806323b872dd146123f4578063248a9ca3146123c657806327dc3fbd1461233a5780632a55205a146122fd5780632f2ff15d1461224b5780632f745c591461219857806336568abe146121085780633e11741f14611da85780633f4ba83a14611cf157806342842e0e14611cda57806342966c6814611b91578063463dace014611b72578063492ae5a3146119c35780634f6ccce7146119a557806355f804b3146117db5780635c975abb146117b85780635e27a7751461178d578063602481b6146114ae5780636352211e1461147e5780636817c76c1461146057806370824c5c1461142557806370a08231146113fa5780638456cb59146113455780638a71bb2d1461131e57806391d14854146112d157806392303e06146112aa57806395d89b41146111db57806397491d6f146110975780639f6d68b014610fbe578063a217fddf14610fa2578063a22cb46514610ec7578063aa15d40f14610e95578063b88d4fde14610e10578063b97c9f7714610dd5578063c87b56dd14610afd578063c8a9aabc14610861578063d547741f14610820578063dbe55e56146107ff578063e58378bb146107d6578063e5f2e0cc1461056f578063e985e9c514610519578063f249fd16146102ad5763f4a0a5281461026857600080fd5b346102a85760203660031901126102a857336000908152600080516020614bec83398151915260205260409020546102a29060ff166132a0565b35600f55005b600080fd5b50346102a85760403660031901126102a8576102c7613212565b6102cf613014565b336000908152600080516020614bec83398151915260209081526040909120549091906102fe9060ff166132a0565b6001600160a01b0381169283156104d5576001600160601b0316936107d08511610491577f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460408686868660115460601c906001600160601b03199060601b168417601155828103610377575b508351928352820152a1005b7f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9081600052600083528560002081600052835260ff866000205416610426575b5080600052600082528460002083600052825260ff85600020541661036b5780600052600082528460002083600052825284600020600160ff198254161790558233917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a48561036b565b81600052600083528560002081600052835260ff866000205416156103b8578160005260008352856000208160005283528560002060ff1981541690553390827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4866103b8565b60405162461bcd60e51b8152908101839052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b60405162461bcd60e51b8152808601849052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b346102a85760403660031901126102a857610532612ffe565b61053a613014565b9060018060a01b03809116600052600660205260406000209116600052602052602060ff604060002054166040519015158152f35b50346102a85761057e3661305a565b90600080516020614c0c8339815191526000526020936000855260406000203360005285526105b460ff604060002054166132a0565b6000848152600360205260409020546105d7906001600160a01b031615156132e5565b8360005260158086526105ed6040600020613351565b6000906000905b858210610764575050612710610615816001600160601b03809416146139ae565b84158015610656575b867fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62087876106516040519283928361350a565b0390a2005b61074f57610663846133af565b61067c836106728a8801613402565b16928311156141df565b6001600160a01b0390811693841561070b575090610701939291600c7fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e6209899604051956106c887613169565b865280860193845260008b815291905260409020935191516001600160a01b039190921616911660a01b6001600160a01b031916179055565b839238808061061e565b60405162461bcd60e51b8152908101899052601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b603283634e487b7160e01b6000525260246000fd5b90916001906107ae906107936001600160a01b0361078b610786888c8c613389565b6133af565b1615156133c3565b6107a88a6107a2878b8b613389565b01613402565b90613416565b92876000528289526107cf60406000206107c9838a8a613389565b90613468565b01906105f4565b346102a85760003660031901126102a8576020604051600080516020614c0c8339815191528152f35b346102a85760003660031901126102a857602060115460601c604051908152f35b50346102a85760403660031901126102a85761085f903561083f613014565b9080600052600060205261085a600160406000200154613dcd565b6141af565b005b50346102a8576108703661308d565b600083815260036020526040902054909190610896906001600160a01b031615156132e5565b82600052602093601785526108b460ff826040600020015416613afb565b8115610aa6578215610a50576108c984613a61565b60008581526017875260409020549091906001600160a01b03163303610a0c575061094d906127106109066001600160601b036011541686613328565b049061091282866136db565b917f00000000000000000000000000000000000000000000000000000000000000009061094187303385613b69565b806109c5575b50613bb0565b82600052601784526109686002604060002001918254613709565b905581600052601783526109856003604060002001918254613709565b905580600052601782527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b6109d58160115460601c84613bb0565b877f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c68a60115460601c93604051908152a338610947565b60405162461bcd60e51b8152908101869052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b8152908101859052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b8152908101859052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b50346102a857602090816003193601126102a857803560008181526003602052604090205490918391610b3a906001600160a01b03161515613a15565b60405190600060105491610b4d83613228565b808552848681019360019588600182169182600014610dba575050600114610d5c575b610b7c9250038561319f565b835115610d40578586916000977a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000009081811015610d32575b50506d04ee2d6d415b85acef810000000080841015610d24575b50662386f26fc1000080841015610d15575b506305f5e10080841015610d06575b5061271080841015610cf8575b50506064821015610ce8575b600a80921015610cde575b926001870193816021610c39610c23886131c0565b97610c31604051998a61319f565b8089526131c0565b878a019a90601f1901368c37870101905b610ca8575b5050505093610c8e939291610c82610c739660405197889551809288880190612fb6565b84019151809386840190612fb6565b0103808452018261319f565b905b610ca4604051928284938452830190612fd9565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215610cd957919082610c4a565b610c4f565b9560010195610c0e565b9590606460029104910195610c03565b970196909104903880610bf7565b60089198930492019638610bea565b60109198930492019638610bdb565b879198930492019638610bc9565b604099500492503880610baf565b505050505050604051610d5281613184565b6000815290610c90565b5050601060005284867f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672866000915b858310610da1575050610b7c9350820101610b70565b80919294505483858b0101520191018790868893610d8b565b60ff19168752610b7c94151560051b8401019150610b709050565b346102a85760003660031901126102a85760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b50346102a85760803660031901126102a857610e2a612ffe565b90610e33613014565b91604435606435936001600160401b0385116102a857366023860112156102a857610e6d610e909486602461085f983693013591016131db565b92610e80610e7b8433613bec565b613716565b610e8b838383613cb4565b614a7c565b614291565b50346102a85760203660031901126102a85760ff81602092356000526017835260406000200154166040519015158152f35b50346102a85760403660031901126102a857610ee1612ffe565b602435801515918282036102a8576001600160a01b031692338414610f5e5750610f309033600052600660205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60649060206040519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b346102a85760003660031901126102a857602060405160008152f35b50346102a85760203660031901126102a8576001600160601b03610fe0613212565b336000908152600080516020614bec83398151915260205260409020546110099060ff166132a0565b1690610bb88211611053577f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e3602083806001600160601b03196016541617601655604051908152a1005b60649060206040519162461bcd60e51b8352820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b50346102a85760203660031901126102a85780356000818152600360205260409020549091906110d1906001600160a01b031615156132e5565b8160005260176020526110ed60ff826040600020015416613afb565b6110f682613a61565b6001600160a01b03929083169133831480156111c2575b1561117257816000526017602052604060002093845416930160ff19815416905561113783613577565b15611164575b7fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4005b61116d83614103565b61113d565b60849060206040519162461bcd60e51b8352820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152fd5b508160005260176020528360406000205416331461110d565b346102a85760003660031901126102a8576040516002546000826111fe83613228565b918282526020936001908560018216918260001461128a57505060011461122d575b50610c909250038361319f565b84915060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906000915b858310611272575050610c90935082010185611220565b8054838901850152879450869390920191810161125b565b60ff191685820152610c9095151560051b85010192508791506112209050565b346102a85760003660031901126102a85760206001600160601b0360115416604051908152f35b50346102a85760403660031901126102a8576112eb613014565b9035600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102a85760003660031901126102a85760206001600160601b0360165416604051908152f35b50346102a85760003660031901126102a857336000908152600080516020614bec83398151915260205260409020546113809060ff166132a0565b600d549060ff82166113c35760018260ff191617600d557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60649060206040519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b346102a85760203660031901126102a857602061141d611418612ffe565b613a84565b604051908152f35b346102a85760003660031901126102a85760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346102a85760003660031901126102a8576020600f54604051908152f35b50346102a85760203660031901126102a85761149c60209135613a61565b6040516001600160a01b039091168152f35b50346102a857602090816003193601126102a85780356001600160401b0381116102a8576114df903690830161302a565b91600080516020614c0c83398151915260005260008452604060002033600052845261151260ff604060002054166132a0565b60138054600082558061174a575b5060009060005b858110611650575050612710611548816001600160601b03809416146139ae565b84158015611587575b6040517fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b908061158289898361350a565b0390a1005b61074f57611594846133af565b6115ae6115a2888701613402565b938416928311156141df565b6001600160a01b031692831561160c57507fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b956040516115ed81613169565b848152015260a01b6001600160a01b03191617600b5538808080611551565b60405162461bcd60e51b8152908101879052601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606490fd5b6001600160a01b039261167e9061166f8561078b610786868c8c613389565b6107a8896107a2858b8b613389565b9261168a828888613389565b8354600160401b811015611735576001810180865581101561172057916116fa8a61171a9360019695886000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09001936116e3826133af565b85546001600160a01b031916911617845501613402565b81546001600160a01b031660a09190911b6001600160a01b031916179055565b01611527565b603287634e487b7160e01b6000525260246000fd5b604187634e487b7160e01b6000525260246000fd5b816000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090908101905b8181106117815750611520565b60008155600101611774565b50346102a85760203660031901126102a8576117ac610ca4913561391e565b604051918291826130dc565b346102a85760003660031901126102a857602060ff600d54166040519015158152f35b50346102a8576020806003193601126102a8576001600160401b039082358281116102a857366023820112156102a85761181e90369060248187013591016131db565b92600080516020614c0c83398151915260005260008252604060002033600052825261185160ff604060002054166132a0565b83519283116119905750611866601054613228565b601f811161192c575b5080601f83116001146118ab575081926000926118a0575b5050600019600383901b1c191660019190911b17601055005b015190503880611887565b90601f1983169360106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672926000905b86821061191457505083600195106118fb575b505050811b01601055005b015160001960f88460031b161c191690553880806118f0565b806001859682949686015181550195019301906118dd565b60106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810191838510611986575b601f0160051c01905b81811061197a575061186f565b6000815560010161196d565b9091508190611964565b604190634e487b7160e01b6000525260246000fd5b50346102a85760203660031901126102a85761141d602091356138a7565b50346102a85760209060206003193601126102a85780356001600160401b0381116102a8576119f5903690830161302a565b336000908152600080516020614bec8339815191526020526040902054909290611a219060ff166132a0565b60129384546000865580611b2f575b5060009460005b858110611a96577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d708686611a876127108b611a7f6001600160601b0391826011541690613416565b1611156134aa565b6115826040519283928361350a565b6001600160a01b0396611ac490611ab58961078b610786868c8c613389565b6107a8856107a2858b8b613389565b96611ad0828888613389565b8354600160401b811015611735576001810180865581101561172057916116fa86611b299360019695886000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344401936116e3826133af565b01611a37565b856000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444908101905b818110611b665750611a30565b60008155600101611b59565b50346102a85760203660031901126102a8576117ac610ca49135613872565b50346102a857602090816003193601126102a857803590611bb182613a61565b6001600160a01b03903390821603611ca457826000526017845260ff826040600020015416611c605760038394611bf285611bed600097613a61565b6143ad565b611bfb86613a61565b928686526005825260408620936001600160601b0360a01b9485815416905516938486528152604085208519815401905585855252604083209081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b60405162461bcd60e51b8152808301859052601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b60405162461bcd60e51b8152808301859052600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606490fd5b346102a85761085f611ceb366130a7565b9161384c565b50346102a85760003660031901126102a857336000908152600080516020614bec8339815191526020526040902054611d2c9060ff166132a0565b600d549060ff821615611d6d575060ff1916600d557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60649060206040519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b50346102a85760603660031901126102a857611dc2612ffe565b90611dce602435613a61565b906001600160a01b03821633036120c457602435600052601760205260ff8160406000200154166120805750612710611e146001600160601b0360165416604435613328565b0491612710611e306001600160601b0360115416604435613328565b04611e46611e3e8286613709565b6044356136db565b90611e7560443530857f0000000000000000000000000000000000000000000000000000000000000000613b69565b84611f6c575b611eb09293945080611f01575b50837f0000000000000000000000000000000000000000000000000000000000000000613bb0565b611ebd602435828461384c565b60405160443581526001600160a01b039182169290911690602435907f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af955690602090a4005b611f318160115460601c7f0000000000000000000000000000000000000000000000000000000000000000613bb0565b60115460601c906040519081527f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6602060243592a338611e88565b602435600090815260156020526040902080541561207557611f8d90613778565b8051611f9a575b50611e7b565b9290939160005b84518110156120645780612710611fd16001600160601b036020611fc76001968b6136f5565b510151168a613328565b0480611fdf575b5001611fa1565b61201c81848060a01b03611ff3858b6136f5565b5151167f0000000000000000000000000000000000000000000000000000000000000000613bb0565b828060a01b0361202c83896136f5565b515116906040519081527f5afae38153b1f3a22beefc75f2c88831b35f5359c45067c73310b55352c6c225602060243592a338611fd8565b509194508493909250611eb0611f94565b50611f8d6013613778565b60649060206040519162461bcd60e51b8352820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152fd5b60649060206040519162461bcd60e51b8352820152601960248201527f4f6e6c7920746f6b656e206f776e65722063616e2073656c6c000000000000006044820152fd5b50346102a85760403660031901126102a857612122613014565b336001600160a01b0382160361213c5761085f91356141af565b60405162461bcd60e51b8152602081840152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b50346102a85760403660031901126102a8576121b2612ffe565b602435916121bf82613a84565b8310156121f3575060018060a01b031660005260076020526040600020906000526020526020604060002054604051908152f35b60849060206040519162461bcd60e51b8352820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152fd5b50346102a85760403660031901126102a85735612266613014565b816000526000602052612280600160406000200154613dcd565b81600052600060205260406000209060018060a01b0316908160005260205260ff60406000205416156122af57005b8160005260006020526040600020816000526020526040600020600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4005b50346102a85760403660031901126102a85761231d9060243590356137c1565b604080516001600160a01b03939093168352602083019190915290f35b50346102a85760203660031901126102a8578060a091356000526017602052608060406000206040519261236d84613138565b600180861b038254169384815260018301549081602082015260ff600285015493846040840152600386015495866060850152015416151594859101526040519485526020850152604084015260608301526080820152f35b50346102a85760203660031901126102a8573560005260006020526020600160406000200154604051908152f35b346102a85761085f612405366130a7565b91612413610e7b8433613bec565b613cb4565b50346102a8576124273661308d565b600083815260036020526040902054919390929161244f906001600160a01b031615156132e5565b816000526020926017845260ff82604060002001541661279057841561273d5780156126ed5761247e83613a61565b946001600160a01b0392838716331461269f57916125f07f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b194926125a66060956125246127106124d96001600160601b036011541688613328565b048c8c6124e6838a6136db565b928d7f0000000000000000000000000000000000000000000000000000000000000000926125168c303387613b69565b82612658575b505050613bb0565b61252e8342613709565b90898b6040519361253e85613138565b3385528185014281526040860191825260178c8701938b8552608088019560018752600052528a60406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8060005260008952604060002033600052895260ff6040600020541615612606575b5042613709565b60405196428852870152604086015233951693a4005b806000526000895260406000203360005289526040600020600160ff19825416179055339033907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4386125e9565b7f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c69061268a8460115460601c87613bb0565b6011548f1c93604051908152a3388d8f61251c565b60405162461bcd60e51b8152908101869052602160248201527f4f776e65722063616e6e6f742072656e74207468656972206f776e20746f6b656044820152603760f91b6064820152608490fd5b60405162461bcd60e51b8152808301859052602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b60405162461bcd60e51b8152808301859052602660248201527f52656e74616c206475726174696f6e206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608490fd5b60405162461bcd60e51b8152808301859052601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b346102a85760003660031901126102a8576020600954604051908152f35b50346102a85760003660031901126102a857600f5490612710916001600160601b039083612824836011541683613328565b049161282e61362a565b9261283981846136db565b906128677f000000000000000000000000000000000000000000000000000000000000000094303387613b69565b80612af6575b506000918451612a7c575b5061288692939495506136db565b9081612a38575b505050600e5460018101600e55604051906128a782613184565b6000825233156129f4576000818152600360205260409020546128d6906001600160a01b031615155b15614af5565b60095481600052602090600a825280604060002055600160401b8110156129df57829161085f95612930610e90969561291785600160039701600955613431565b90919082549060031b91821b91600019901b1916179055565b61293933613a84565b336000526007835260406000208160005283528460406000205584600052600883526040600020556129836128d085600052600360205260018060a01b0360406000205416151590565b33600052815260406000206001815401905582600052526040600020336001600160601b0360a01b825416179055803360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a433614992565b604185634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152602081850181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606490fd5b825115612a6657612a5e926001600160a01b0390612a55906136e8565b51511690613bb0565b38808061288d565b612a77925060115460601c90613bb0565b612a5e565b60005b8551811015612ae75787612aa3836020612a99858b6136f5565b5101511685613328565b0480612ab3575b50600101612a7f565b9093600191612ae091612adb826001600160a01b03612ad28a8d6136f5565b5151168a613bb0565b613709565b9390612aaa565b50949550859450612886612878565b612b069060115460601c85613bb0565b3861286d565b346102a85760003660031901126102a8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102a85760203660031901126102a8576020612b74612b6f612ffe565b613577565b6040519015158152f35b346102a857612b8c3661305a565b336000908152600080516020614bec833981519152602090815260409091205490939290612bbc9060ff166132a0565b600083815260036020526040902054612bdf906001600160a01b031615156132e5565b82600052601480602052612bf66040600020613351565b6000946000905b848210612c5657505050612c476127107faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b59495611a7f6001600160601b0391826011541690613416565b6106516040519283928361350a565b9195909190600190612c8a90612c7b6001600160a01b0361078b610786888b8b613389565b6107a8846107a2878a8a613389565b9286600052878352612ca560406000206107c9838989613389565b0190959195612bfd565b50346102a85760403660031901126102a857612cc9612ffe565b602435916001600160a01b03908180612ce186613a61565b16931692808414612ddc57803314908115612db7575b5015612d4d5750600083815260056020526040902080546001600160a01b03191683179055612d2583613a61565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60849060206040519162461bcd60e51b8352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b9050600052600660205260406000203360005260205260ff6040600020541638612cf7565b60405162461bcd60e51b8152602081840152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b50346102a85760203660031901126102a85761149c60209135613262565b346102a85760003660031901126102a857604051600060018260015492612e6e84613228565b928383526020948560018216918260001461128a575050600114612e995750610c909250038361319f565b84915060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906000915b858310612ede575050610c90935082010185611220565b80548389018501528794508693909201918101612ec7565b82346102a85760203660031901126102a85735906001600160e01b031982168083036102a85760209263780e9d6360e01b82148015612f80575b80928115612f59575b50508115612f49575b5015158152f35b612f539150613b3d565b83612f42565b91925063152a902d60e11b909114908115612f78575b50908480612f39565b905084612f6f565b506380ac58cd60e01b82148015612fa6575b80612f305750612fa181613b3d565b612f30565b50635b5e139f60e01b8214612f92565b60005b838110612fc95750506000910152565b8181015183820152602001612fb9565b90602091612ff281518092818552858086019101612fb6565b601f01601f1916010190565b600435906001600160a01b03821682036102a857565b602435906001600160a01b03821682036102a857565b9181601f840112156102a8578235916001600160401b0383116102a8576020808501948460061b0101116102a857565b9060406003198301126102a85760043591602435906001600160401b0382116102a8576130899160040161302a565b9091565b60609060031901126102a857600435906024359060443590565b60609060031901126102a8576001600160a01b039060043582811681036102a8579160243590811681036102a8579060443590565b60208082019080835283518092528060408094019401926000905b83821061310657505050505090565b845180516001600160a01b031687528301516001600160601b03168684015294850194938201936001909101906130f7565b60a081019081106001600160401b0382111761315357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761315357604052565b602081019081106001600160401b0382111761315357604052565b90601f801991011681019081106001600160401b0382111761315357604052565b6001600160401b03811161315357601f01601f191660200190565b9291926131e7826131c0565b916131f5604051938461319f565b8294818452818301116102a8578281602093846000960137010152565b600435906001600160601b03821682036102a857565b90600182811c92168015613258575b602083101461324257565b634e487b7160e01b600052602260045260246000fd5b91607f1691613237565b600081815260036020526040902054613285906001600160a01b03161515613a15565b6000908152600560205260409020546001600160a01b031690565b156132a757565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b156132ec57565b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b8181029291811591840414171561333b57565b634e487b7160e01b600052601160045260246000fd5b805490600090600081558261336557505050565b6000526020600020918201915b82811061337e57505050565b818155600101613372565b91908110156133995760061b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036102a85790565b156133ca57565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036102a85790565b9190916001600160601b038080941691160191821161333b57565b6009548110156133995760096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190600090565b908154600160401b81101561315357600181018084558110156133995760206116fa916134a89460005281600020019260018060a01b036116e3826133af565b565b156134b157565b60405162461bcd60e51b815260206004820152602b60248201527f526f79616c74696573202b20706c6174666f726d20636f6d6d697373696f6e2060448201526a657863656564203130302560a81b6064820152608490fd5b602080825280820184905260409182019391906000905b83821061353057505050505090565b9091929394853560018060a01b0381168091036102a857815281860135906001600160601b0382168092036102a85782810191909152830194830193929160010190613521565b6009549060005b82811061358d57505050600090565b613596816138a7565b6000526017602052604060002060ff60048201541690816135c7575b506135bf5760010161357e565b505050600190565b546001600160a01b038481169116149050386135b2565b906001600160401b038211613153576040519161360160208260051b018461319f565b8252565b9060405161361281613169565b91546001600160a01b038116835260a01c6020830152565b60125490613637826135de565b9160208084019060126000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34446000925b848410613676575050505050565b600183819261368485613605565b815201920193019290613668565b90815461369e816135de565b9260208085019160005260206000206000925b8484106136bf575050505050565b60018381926136cd85613605565b8152019201930192906136b1565b9190820391821161333b57565b8051156133995760200190565b80518210156133995760209160051b010190565b9190820180921161333b57565b1561371d57565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b908154613784816135de565b9260208085019160005260206000206000925b8484106137a5575050505050565b60018381926137b385613605565b815201920193019290613797565b91909161271090816137e06001600160601b0395866016541690613328565b049060005260156020526040600020805415156000146138415761380390613778565b8051613816575050509050600090600090565b90613823613831926136e8565b519460208601511690613328565b92516001600160a01b0316920490565b506138036013613778565b6134a892610e90926040519261386184613184565b60008452610e80610e7b8433613bec565b6000818152601460205260409020541561389e57600052601460205261389b6040600020613692565b90565b5061389b61362a565b6009548110156138c4576138ba90613431565b90549060031b1c90565b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b60008181526015602090815260408220541561394957508061389b9260409252601560205220613692565b915060135490613958826135de565b60138252927f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090602085015b84841061399257505050505090565b60018381926139a085613605565b815201920193019290613983565b156139b557565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b15613a1c57565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152600360205260409020546001600160a01b031661389b811515613a15565b6001600160a01b03168015613aa457600052600460205260406000205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b15613b0257565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b63ffffffff60e01b16637965db0b60e01b8114908115613b5b575090565b6301ffc9a760e01b14919050565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526134a891613bab82613138565b6142b1565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526134a891613bab60648361319f565b906001600160a01b038080613c0084613a61565b16931691838314938415613c33575b508315613c1d575b50505090565b613c2991929350613262565b1614388080613c17565b909350600052600660205260406000208260005260205260ff604060002054169238613c0f565b15613c6157565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b613cd891613cc184613a61565b6001600160a01b0393848416939185168414613c5a565b838216938415613d7c57613cf186613d01948694614681565b613cfa86613a61565b1614613c5a565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526005602052604081206001600160601b0360a01b9081815416905583825260046020526040822060001981540190558482526040822060018154019055858252600360205284604083209182541617905580a4565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b600090808252602090828252604092838120338252835260ff848220541615613df65750505050565b8351916001600160401b03903360608501838111868210176140ef578752602a855285850191873684378551156140db5760308353855191600192600110156140c7576078602188015360295b83811161405d575061401b579087519360808501908582109082111761400757885260428452868401946060368737845115613ff35760308653845160011015613ff35790607860218601536041915b818311613f8557505050613f4357613f3f938693613f2393613f14604894613eeb9a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c8801525180926037880190612fb6565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190612fb6565b0103602881018752018561319f565b5192839262461bcd60e51b845260048401526024830190612fd9565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015613fdf576f181899199a1a9b1b9c1cb0b131b232b360811b901a613fb58588614b41565b5360041c928015613fcb57600019019190613e93565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b86526041600452602486fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156140b3576f181899199a1a9b1b9c1cb0b131b232b360811b901a61408b838a614b41565b5360041c90801561409f5760001901613e43565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b85526041600452602485fd5b6001600160a01b031660008181527f64d20ad6c082d9621149fdda479032d4fb46f976cd92c72281623a586193c3b860205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff1661416b57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff60408420541661416b57505050565b156141e657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b1561429857565b60405162461bcd60e51b815280613f3f6004820161423e565b60018060a01b0316906143106040516142c981613169565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af161430a614962565b91614b52565b805191821591848315614382575b50505090501561432b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9193818094500103126143a9578201519081151582036143a657508038808461431e565b80fd5b5080fd5b6001600160a01b038181169283159290919083156145fa575060095482600052600a60205280604060002055600160401b81101561315357826129178260016143f99401600955613431565b6009546000198082019291831161333b57600094848652602091600a83526040946144278689205491613431565b90549060031b1c61443b8161291784613431565b8852600a845285882055858752868581205560095480156145e6570161447461446382613431565b8154906000199060031b1b19169055565b60095580156145de575b614498578385526017815260ff60048487200154166144a0575b505050505050565b6144a984613a61565b958486526017825283862090838254161490816145d3575b81156145b0575b501561456157838552601781528285209260028401544210156144ec575b50614498565b60178392614529848760047fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da990160ff1981541690555416613577565b15614548575b868852528520541694169280a4388080808080806144e6565b86885281815261455c84848a205416614103565b61452f565b60849083519062461bcd60e51b825260048201526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152fd5b33888516149150816145c4575b50386144c8565b600291500154421015386145bd565b8784161591506144c1565b50600161447e565b634e487b7160e01b88526031600452602488fd5b61460390613a84565b600019810190811161333b57600090838252602090600882526040918284205482810361464a575b50858452838381205587845260078152828420918452528120556143f9565b888552600782528385208386528252838520548986526007835284862082875283528085872055855260088252838520553861462b565b6001600160a01b03808216939092909184159081156148ca575060095483600052600a60205280604060002055600160401b81101561315357836129178260016146ce9401600955613431565b81841691821590811561488957506009546000199081810190811161333b57600090868252600a602052614706604083205491613431565b90549060031b1c61471a8161291784613431565b8252600a602052604082205585815280604081205560095490811561487557500161474761446382613431565b6009555b811561486d575b506148675760009282845260206017815260409260ff600485882001541661477e575b50505050505050565b61478785613a61565b9685875260178352848720908482541614918261485b575b508115614838575b5015614561578385526017815282852092600284015442106147755760178392614800848760047fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da990160ff1981541690555416613577565b1561481f575b868852528520541694169280a438808080808080614775565b86885281815261483384848a205416614103565b614806565b338885161491508161484c575b50386147a7565b60029150015442101538614845565b8885161491503861479f565b50505050565b905038614752565b634e487b7160e01b81526031600452602490fd5b868403614897575b5061474b565b6148a090613a84565b60406000858152600760205281812083825260205286828220558681526008602052205538614891565b84831686036148da575b506146ce565b6148e390613a84565b600019810190811161333b57600090848252602090600882526040918284205482810361492b575b5086845283838120558884526007815282842091845252812055386148d4565b898552600782528385208386528252838520548a86526007835284862082875283528085872055855260088252838520553861490b565b3d1561498d573d90614973826131c0565b91614981604051938461319f565b82523d6000602084013e565b606090565b909190803b156135bf576020604051809281630a85bd0160e11b96878252336004830152816149db60009889938460248501526044840152608060648401526084830190612fd9565b03926001600160a01b03165af190829082614a33575b5050614a25576149ff614962565b80519081614a205760405162461bcd60e51b815280613f3f6004820161423e565b602001fd5b6001600160e01b0319161490565b909192506020813d602011614a74575b81614a506020938361319f565b810103126143a95751906001600160e01b0319821682036143a657509038806149f1565b3d9150614a43565b9290803b15614aec57614acc9160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190612fd9565b03916000968791165af190829082614a33575050614a25576149ff614962565b50505050600190565b15614afc57565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b908151811015613399570160200190565b91929015614bb45750815115614b66575090565b3b15614b6f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015614bc75750805190602001fd5b60405162461bcd60e51b815260206004820152908190613f3f906024830190612fd956fed329ff8a035c3ce5df2b0dae604d660c0d8783bf7e64be00c1d10db96c0b87b4b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214ea2646970667358221220a7a31f008ac903e56ad50fd4ee69ef54f58903bc26b743ad649183e301ebef5864736f6c634300081800332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
  "deployedBytecode": "0x6080806040526004908136101561001557600080fd5b60003560e01c90816301ffc9a714612ef65750806306fdde0314612e48578063081812fc14612e2a578063095ea7b314612caf5780630a0a351514612b7e5780630daf4c9714612b5157806311eac85514612b0c5780631249c58b146127f257806318160ddd146127d45780631c2098dc1461241857806323b872dd146123f4578063248a9ca3146123c657806327dc3fbd1461233a5780632a55205a146122fd5780632f2ff15d1461224b5780632f745c591461219857806336568abe146121085780633e11741f14611da85780633f4ba83a14611cf157806342842e0e14611cda57806342966c6814611b91578063463dace014611b72578063492ae5a3146119c35780634f6ccce7146119a557806355f804b3146117db5780635c975abb146117b85780635e27a7751461178d578063602481b6146114ae5780636352211e1461147e5780636817c76c1461146057806370824c5c1461142557806370a08231146113fa5780638456cb59146113455780638a71bb2d1461131e57806391d14854146112d157806392303e06146112aa57806395d89b41146111db57806397491d6f146110975780639f6d68b014610fbe578063a217fddf14610fa2578063a22cb46514610ec7578063aa15d40f14610e95578063b88d4fde14610e10578063b97c9f7714610dd5578063c87b56dd14610afd578063c8a9aabc14610861578063d547741f14610820578063dbe55e56146107ff578063e58378bb146107d6578063e5f2e0cc1461056f578063e985e9c514610519578063f249fd16146102ad5763f4a0a5281461026857600080fd5b346102a85760203660031901126102a857336000908152600080516020614bec83398151915260205260409020546102a29060ff166132a0565b35600f55005b600080fd5b50346102a85760403660031901126102a8576102c7613212565b6102cf613014565b336000908152600080516020614bec83398151915260209081526040909120549091906102fe9060ff166132a0565b6001600160a01b0381169283156104d5576001600160601b0316936107d08511610491577f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460408686868660115460601c906001600160601b03199060601b168417601155828103610377575b508351928352820152a1005b7f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9081600052600083528560002081600052835260ff866000205416610426575b5080600052600082528460002083600052825260ff85600020541661036b5780600052600082528460002083600052825284600020600160ff198254161790558233917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a48561036b565b81600052600083528560002081600052835260ff866000205416156103b8578160005260008352856000208160005283528560002060ff1981541690553390827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a4866103b8565b60405162461bcd60e51b8152908101839052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b60405162461bcd60e51b8152808601849052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b346102a85760403660031901126102a857610532612ffe565b61053a613014565b9060018060a01b03809116600052600660205260406000209116600052602052602060ff604060002054166040519015158152f35b50346102a85761057e3661305a565b90600080516020614c0c8339815191526000526020936000855260406000203360005285526105b460ff604060002054166132a0565b6000848152600360205260409020546105d7906001600160a01b031615156132e5565b8360005260158086526105ed6040600020613351565b6000906000905b858210610764575050612710610615816001600160601b03809416146139ae565b84158015610656575b867fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62087876106516040519283928361350a565b0390a2005b61074f57610663846133af565b61067c836106728a8801613402565b16928311156141df565b6001600160a01b0390811693841561070b575090610701939291600c7fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e6209899604051956106c887613169565b865280860193845260008b815291905260409020935191516001600160a01b039190921616911660a01b6001600160a01b031916179055565b839238808061061e565b60405162461bcd60e51b8152908101899052601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b603283634e487b7160e01b6000525260246000fd5b90916001906107ae906107936001600160a01b0361078b610786888c8c613389565b6133af565b1615156133c3565b6107a88a6107a2878b8b613389565b01613402565b90613416565b92876000528289526107cf60406000206107c9838a8a613389565b90613468565b01906105f4565b346102a85760003660031901126102a8576020604051600080516020614c0c8339815191528152f35b346102a85760003660031901126102a857602060115460601c604051908152f35b50346102a85760403660031901126102a85761085f903561083f613014565b9080600052600060205261085a600160406000200154613dcd565b6141af565b005b50346102a8576108703661308d565b600083815260036020526040902054909190610896906001600160a01b031615156132e5565b82600052602093601785526108b460ff826040600020015416613afb565b8115610aa6578215610a50576108c984613a61565b60008581526017875260409020549091906001600160a01b03163303610a0c575061094d906127106109066001600160601b036011541686613328565b049061091282866136db565b917f00000000000000000000000000000000000000000000000000000000000000009061094187303385613b69565b806109c5575b50613bb0565b82600052601784526109686002604060002001918254613709565b905581600052601783526109856003604060002001918254613709565b905580600052601782527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b6109d58160115460601c84613bb0565b877f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c68a60115460601c93604051908152a338610947565b60405162461bcd60e51b8152908101869052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b8152908101859052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b8152908101859052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b50346102a857602090816003193601126102a857803560008181526003602052604090205490918391610b3a906001600160a01b03161515613a15565b60405190600060105491610b4d83613228565b808552848681019360019588600182169182600014610dba575050600114610d5c575b610b7c9250038561319f565b835115610d40578586916000977a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000009081811015610d32575b50506d04ee2d6d415b85acef810000000080841015610d24575b50662386f26fc1000080841015610d15575b506305f5e10080841015610d06575b5061271080841015610cf8575b50506064821015610ce8575b600a80921015610cde575b926001870193816021610c39610c23886131c0565b97610c31604051998a61319f565b8089526131c0565b878a019a90601f1901368c37870101905b610ca8575b5050505093610c8e939291610c82610c739660405197889551809288880190612fb6565b84019151809386840190612fb6565b0103808452018261319f565b905b610ca4604051928284938452830190612fd9565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215610cd957919082610c4a565b610c4f565b9560010195610c0e565b9590606460029104910195610c03565b970196909104903880610bf7565b60089198930492019638610bea565b60109198930492019638610bdb565b879198930492019638610bc9565b604099500492503880610baf565b505050505050604051610d5281613184565b6000815290610c90565b5050601060005284867f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672866000915b858310610da1575050610b7c9350820101610b70565b80919294505483858b0101520191018790868893610d8b565b60ff19168752610b7c94151560051b8401019150610b709050565b346102a85760003660031901126102a85760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b50346102a85760803660031901126102a857610e2a612ffe565b90610e33613014565b91604435606435936001600160401b0385116102a857366023860112156102a857610e6d610e909486602461085f983693013591016131db565b92610e80610e7b8433613bec565b613716565b610e8b838383613cb4565b614a7c565b614291565b50346102a85760203660031901126102a85760ff81602092356000526017835260406000200154166040519015158152f35b50346102a85760403660031901126102a857610ee1612ffe565b602435801515918282036102a8576001600160a01b031692338414610f5e5750610f309033600052600660205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60649060206040519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b346102a85760003660031901126102a857602060405160008152f35b50346102a85760203660031901126102a8576001600160601b03610fe0613212565b336000908152600080516020614bec83398151915260205260409020546110099060ff166132a0565b1690610bb88211611053577f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e3602083806001600160601b03196016541617601655604051908152a1005b60649060206040519162461bcd60e51b8352820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b50346102a85760203660031901126102a85780356000818152600360205260409020549091906110d1906001600160a01b031615156132e5565b8160005260176020526110ed60ff826040600020015416613afb565b6110f682613a61565b6001600160a01b03929083169133831480156111c2575b1561117257816000526017602052604060002093845416930160ff19815416905561113783613577565b15611164575b7fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4005b61116d83614103565b61113d565b60849060206040519162461bcd60e51b8352820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152fd5b508160005260176020528360406000205416331461110d565b346102a85760003660031901126102a8576040516002546000826111fe83613228565b918282526020936001908560018216918260001461128a57505060011461122d575b50610c909250038361319f565b84915060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906000915b858310611272575050610c90935082010185611220565b8054838901850152879450869390920191810161125b565b60ff191685820152610c9095151560051b85010192508791506112209050565b346102a85760003660031901126102a85760206001600160601b0360115416604051908152f35b50346102a85760403660031901126102a8576112eb613014565b9035600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102a85760003660031901126102a85760206001600160601b0360165416604051908152f35b50346102a85760003660031901126102a857336000908152600080516020614bec83398151915260205260409020546113809060ff166132a0565b600d549060ff82166113c35760018260ff191617600d557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b60649060206040519162461bcd60e51b8352820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152fd5b346102a85760203660031901126102a857602061141d611418612ffe565b613a84565b604051908152f35b346102a85760003660031901126102a85760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346102a85760003660031901126102a8576020600f54604051908152f35b50346102a85760203660031901126102a85761149c60209135613a61565b6040516001600160a01b039091168152f35b50346102a857602090816003193601126102a85780356001600160401b0381116102a8576114df903690830161302a565b91600080516020614c0c83398151915260005260008452604060002033600052845261151260ff604060002054166132a0565b60138054600082558061174a575b5060009060005b858110611650575050612710611548816001600160601b03809416146139ae565b84158015611587575b6040517fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b908061158289898361350a565b0390a1005b61074f57611594846133af565b6115ae6115a2888701613402565b938416928311156141df565b6001600160a01b031692831561160c57507fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b956040516115ed81613169565b848152015260a01b6001600160a01b03191617600b5538808080611551565b60405162461bcd60e51b8152908101879052601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606490fd5b6001600160a01b039261167e9061166f8561078b610786868c8c613389565b6107a8896107a2858b8b613389565b9261168a828888613389565b8354600160401b811015611735576001810180865581101561172057916116fa8a61171a9360019695886000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09001936116e3826133af565b85546001600160a01b031916911617845501613402565b81546001600160a01b031660a09190911b6001600160a01b031916179055565b01611527565b603287634e487b7160e01b6000525260246000fd5b604187634e487b7160e01b6000525260246000fd5b816000527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090908101905b8181106117815750611520565b60008155600101611774565b50346102a85760203660031901126102a8576117ac610ca4913561391e565b604051918291826130dc565b346102a85760003660031901126102a857602060ff600d54166040519015158152f35b50346102a8576020806003193601126102a8576001600160401b039082358281116102a857366023820112156102a85761181e90369060248187013591016131db565b92600080516020614c0c83398151915260005260008252604060002033600052825261185160ff604060002054166132a0565b83519283116119905750611866601054613228565b601f811161192c575b5080601f83116001146118ab575081926000926118a0575b5050600019600383901b1c191660019190911b17601055005b015190503880611887565b90601f1983169360106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672926000905b86821061191457505083600195106118fb575b505050811b01601055005b015160001960f88460031b161c191690553880806118f0565b806001859682949686015181550195019301906118dd565b60106000527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672601f840160051c810191838510611986575b601f0160051c01905b81811061197a575061186f565b6000815560010161196d565b9091508190611964565b604190634e487b7160e01b6000525260246000fd5b50346102a85760203660031901126102a85761141d602091356138a7565b50346102a85760209060206003193601126102a85780356001600160401b0381116102a8576119f5903690830161302a565b336000908152600080516020614bec8339815191526020526040902054909290611a219060ff166132a0565b60129384546000865580611b2f575b5060009460005b858110611a96577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d708686611a876127108b611a7f6001600160601b0391826011541690613416565b1611156134aa565b6115826040519283928361350a565b6001600160a01b0396611ac490611ab58961078b610786868c8c613389565b6107a8856107a2858b8b613389565b96611ad0828888613389565b8354600160401b811015611735576001810180865581101561172057916116fa86611b299360019695886000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec344401936116e3826133af565b01611a37565b856000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec3444908101905b818110611b665750611a30565b60008155600101611b59565b50346102a85760203660031901126102a8576117ac610ca49135613872565b50346102a857602090816003193601126102a857803590611bb182613a61565b6001600160a01b03903390821603611ca457826000526017845260ff826040600020015416611c605760038394611bf285611bed600097613a61565b6143ad565b611bfb86613a61565b928686526005825260408620936001600160601b0360a01b9485815416905516938486528152604085208519815401905585855252604083209081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4005b60405162461bcd60e51b8152808301859052601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b60405162461bcd60e51b8152808301859052600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152606490fd5b346102a85761085f611ceb366130a7565b9161384c565b50346102a85760003660031901126102a857336000908152600080516020614bec8339815191526020526040902054611d2c9060ff166132a0565b600d549060ff821615611d6d575060ff1916600d557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60649060206040519162461bcd60e51b8352820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152fd5b50346102a85760603660031901126102a857611dc2612ffe565b90611dce602435613a61565b906001600160a01b03821633036120c457602435600052601760205260ff8160406000200154166120805750612710611e146001600160601b0360165416604435613328565b0491612710611e306001600160601b0360115416604435613328565b04611e46611e3e8286613709565b6044356136db565b90611e7560443530857f0000000000000000000000000000000000000000000000000000000000000000613b69565b84611f6c575b611eb09293945080611f01575b50837f0000000000000000000000000000000000000000000000000000000000000000613bb0565b611ebd602435828461384c565b60405160443581526001600160a01b039182169290911690602435907f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af955690602090a4005b611f318160115460601c7f0000000000000000000000000000000000000000000000000000000000000000613bb0565b60115460601c906040519081527f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6602060243592a338611e88565b602435600090815260156020526040902080541561207557611f8d90613778565b8051611f9a575b50611e7b565b9290939160005b84518110156120645780612710611fd16001600160601b036020611fc76001968b6136f5565b510151168a613328565b0480611fdf575b5001611fa1565b61201c81848060a01b03611ff3858b6136f5565b5151167f0000000000000000000000000000000000000000000000000000000000000000613bb0565b828060a01b0361202c83896136f5565b515116906040519081527f5afae38153b1f3a22beefc75f2c88831b35f5359c45067c73310b55352c6c225602060243592a338611fd8565b509194508493909250611eb0611f94565b50611f8d6013613778565b60649060206040519162461bcd60e51b8352820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152fd5b60649060206040519162461bcd60e51b8352820152601960248201527f4f6e6c7920746f6b656e206f776e65722063616e2073656c6c000000000000006044820152fd5b50346102a85760403660031901126102a857612122613014565b336001600160a01b0382160361213c5761085f91356141af565b60405162461bcd60e51b8152602081840152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b50346102a85760403660031901126102a8576121b2612ffe565b602435916121bf82613a84565b8310156121f3575060018060a01b031660005260076020526040600020906000526020526020604060002054604051908152f35b60849060206040519162461bcd60e51b8352820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152fd5b50346102a85760403660031901126102a85735612266613014565b816000526000602052612280600160406000200154613dcd565b81600052600060205260406000209060018060a01b0316908160005260205260ff60406000205416156122af57005b8160005260006020526040600020816000526020526040600020600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4005b50346102a85760403660031901126102a85761231d9060243590356137c1565b604080516001600160a01b03939093168352602083019190915290f35b50346102a85760203660031901126102a8578060a091356000526017602052608060406000206040519261236d84613138565b600180861b038254169384815260018301549081602082015260ff600285015493846040840152600386015495866060850152015416151594859101526040519485526020850152604084015260608301526080820152f35b50346102a85760203660031901126102a8573560005260006020526020600160406000200154604051908152f35b346102a85761085f612405366130a7565b91612413610e7b8433613bec565b613cb4565b50346102a8576124273661308d565b600083815260036020526040902054919390929161244f906001600160a01b031615156132e5565b816000526020926017845260ff82604060002001541661279057841561273d5780156126ed5761247e83613a61565b946001600160a01b0392838716331461269f57916125f07f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b194926125a66060956125246127106124d96001600160601b036011541688613328565b048c8c6124e6838a6136db565b928d7f0000000000000000000000000000000000000000000000000000000000000000926125168c303387613b69565b82612658575b505050613bb0565b61252e8342613709565b90898b6040519361253e85613138565b3385528185014281526040860191825260178c8701938b8552608088019560018752600052528a60406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b7f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8060005260008952604060002033600052895260ff6040600020541615612606575b5042613709565b60405196428852870152604086015233951693a4005b806000526000895260406000203360005289526040600020600160ff19825416179055339033907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4386125e9565b7f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c69061268a8460115460601c87613bb0565b6011548f1c93604051908152a3388d8f61251c565b60405162461bcd60e51b8152908101869052602160248201527f4f776e65722063616e6e6f742072656e74207468656972206f776e20746f6b656044820152603760f91b6064820152608490fd5b60405162461bcd60e51b8152808301859052602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b60405162461bcd60e51b8152808301859052602660248201527f52656e74616c206475726174696f6e206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608490fd5b60405162461bcd60e51b8152808301859052601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b346102a85760003660031901126102a8576020600954604051908152f35b50346102a85760003660031901126102a857600f5490612710916001600160601b039083612824836011541683613328565b049161282e61362a565b9261283981846136db565b906128677f000000000000000000000000000000000000000000000000000000000000000094303387613b69565b80612af6575b506000918451612a7c575b5061288692939495506136db565b9081612a38575b505050600e5460018101600e55604051906128a782613184565b6000825233156129f4576000818152600360205260409020546128d6906001600160a01b031615155b15614af5565b60095481600052602090600a825280604060002055600160401b8110156129df57829161085f95612930610e90969561291785600160039701600955613431565b90919082549060031b91821b91600019901b1916179055565b61293933613a84565b336000526007835260406000208160005283528460406000205584600052600883526040600020556129836128d085600052600360205260018060a01b0360406000205416151590565b33600052815260406000206001815401905582600052526040600020336001600160601b0360a01b825416179055803360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a433614992565b604185634e487b7160e01b6000525260246000fd5b60405162461bcd60e51b8152602081850181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606490fd5b825115612a6657612a5e926001600160a01b0390612a55906136e8565b51511690613bb0565b38808061288d565b612a77925060115460601c90613bb0565b612a5e565b60005b8551811015612ae75787612aa3836020612a99858b6136f5565b5101511685613328565b0480612ab3575b50600101612a7f565b9093600191612ae091612adb826001600160a01b03612ad28a8d6136f5565b5151168a613bb0565b613709565b9390612aaa565b50949550859450612886612878565b612b069060115460601c85613bb0565b3861286d565b346102a85760003660031901126102a8576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102a85760203660031901126102a8576020612b74612b6f612ffe565b613577565b6040519015158152f35b346102a857612b8c3661305a565b336000908152600080516020614bec833981519152602090815260409091205490939290612bbc9060ff166132a0565b600083815260036020526040902054612bdf906001600160a01b031615156132e5565b82600052601480602052612bf66040600020613351565b6000946000905b848210612c5657505050612c476127107faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b59495611a7f6001600160601b0391826011541690613416565b6106516040519283928361350a565b9195909190600190612c8a90612c7b6001600160a01b0361078b610786888b8b613389565b6107a8846107a2878a8a613389565b9286600052878352612ca560406000206107c9838989613389565b0190959195612bfd565b50346102a85760403660031901126102a857612cc9612ffe565b602435916001600160a01b03908180612ce186613a61565b16931692808414612ddc57803314908115612db7575b5015612d4d5750600083815260056020526040902080546001600160a01b03191683179055612d2583613a61565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60849060206040519162461bcd60e51b8352820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152fd5b9050600052600660205260406000203360005260205260ff6040600020541638612cf7565b60405162461bcd60e51b8152602081840152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b50346102a85760203660031901126102a85761149c60209135613262565b346102a85760003660031901126102a857604051600060018260015492612e6e84613228565b928383526020948560018216918260001461128a575050600114612e995750610c909250038361319f565b84915060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906000915b858310612ede575050610c90935082010185611220565b80548389018501528794508693909201918101612ec7565b82346102a85760203660031901126102a85735906001600160e01b031982168083036102a85760209263780e9d6360e01b82148015612f80575b80928115612f59575b50508115612f49575b5015158152f35b612f539150613b3d565b83612f42565b91925063152a902d60e11b909114908115612f78575b50908480612f39565b905084612f6f565b506380ac58cd60e01b82148015612fa6575b80612f305750612fa181613b3d565b612f30565b50635b5e139f60e01b8214612f92565b60005b838110612fc95750506000910152565b8181015183820152602001612fb9565b90602091612ff281518092818552858086019101612fb6565b601f01601f1916010190565b600435906001600160a01b03821682036102a857565b602435906001600160a01b03821682036102a857565b9181601f840112156102a8578235916001600160401b0383116102a8576020808501948460061b0101116102a857565b9060406003198301126102a85760043591602435906001600160401b0382116102a8576130899160040161302a565b9091565b60609060031901126102a857600435906024359060443590565b60609060031901126102a8576001600160a01b039060043582811681036102a8579160243590811681036102a8579060443590565b60208082019080835283518092528060408094019401926000905b83821061310657505050505090565b845180516001600160a01b031687528301516001600160601b03168684015294850194938201936001909101906130f7565b60a081019081106001600160401b0382111761315357604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761315357604052565b602081019081106001600160401b0382111761315357604052565b90601f801991011681019081106001600160401b0382111761315357604052565b6001600160401b03811161315357601f01601f191660200190565b9291926131e7826131c0565b916131f5604051938461319f565b8294818452818301116102a8578281602093846000960137010152565b600435906001600160601b03821682036102a857565b90600182811c92168015613258575b602083101461324257565b634e487b7160e01b600052602260045260246000fd5b91607f1691613237565b600081815260036020526040902054613285906001600160a01b03161515613a15565b6000908152600560205260409020546001600160a01b031690565b156132a757565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b156132ec57565b60405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b8181029291811591840414171561333b57565b634e487b7160e01b600052601160045260246000fd5b805490600090600081558261336557505050565b6000526020600020918201915b82811061337e57505050565b818155600101613372565b91908110156133995760061b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036102a85790565b156133ca57565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036102a85790565b9190916001600160601b038080941691160191821161333b57565b6009548110156133995760096000527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0190600090565b908154600160401b81101561315357600181018084558110156133995760206116fa916134a89460005281600020019260018060a01b036116e3826133af565b565b156134b157565b60405162461bcd60e51b815260206004820152602b60248201527f526f79616c74696573202b20706c6174666f726d20636f6d6d697373696f6e2060448201526a657863656564203130302560a81b6064820152608490fd5b602080825280820184905260409182019391906000905b83821061353057505050505090565b9091929394853560018060a01b0381168091036102a857815281860135906001600160601b0382168092036102a85782810191909152830194830193929160010190613521565b6009549060005b82811061358d57505050600090565b613596816138a7565b6000526017602052604060002060ff60048201541690816135c7575b506135bf5760010161357e565b505050600190565b546001600160a01b038481169116149050386135b2565b906001600160401b038211613153576040519161360160208260051b018461319f565b8252565b9060405161361281613169565b91546001600160a01b038116835260a01c6020830152565b60125490613637826135de565b9160208084019060126000527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34446000925b848410613676575050505050565b600183819261368485613605565b815201920193019290613668565b90815461369e816135de565b9260208085019160005260206000206000925b8484106136bf575050505050565b60018381926136cd85613605565b8152019201930192906136b1565b9190820391821161333b57565b8051156133995760200190565b80518210156133995760209160051b010190565b9190820180921161333b57565b1561371d57565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b908154613784816135de565b9260208085019160005260206000206000925b8484106137a5575050505050565b60018381926137b385613605565b815201920193019290613797565b91909161271090816137e06001600160601b0395866016541690613328565b049060005260156020526040600020805415156000146138415761380390613778565b8051613816575050509050600090600090565b90613823613831926136e8565b519460208601511690613328565b92516001600160a01b0316920490565b506138036013613778565b6134a892610e90926040519261386184613184565b60008452610e80610e7b8433613bec565b6000818152601460205260409020541561389e57600052601460205261389b6040600020613692565b90565b5061389b61362a565b6009548110156138c4576138ba90613431565b90549060031b1c90565b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b60008181526015602090815260408220541561394957508061389b9260409252601560205220613692565b915060135490613958826135de565b60138252927f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a090602085015b84841061399257505050505090565b60018381926139a085613605565b815201920193019290613983565b156139b557565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b15613a1c57565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152600360205260409020546001600160a01b031661389b811515613a15565b6001600160a01b03168015613aa457600052600460205260406000205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b15613b0257565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b63ffffffff60e01b16637965db0b60e01b8114908115613b5b575090565b6301ffc9a760e01b14919050565b6040516323b872dd60e01b60208201526001600160a01b0392831660248201529290911660448301526064808301939093529181526134a891613bab82613138565b6142b1565b60405163a9059cbb60e01b60208201526001600160a01b039290921660248301526044808301939093529181526134a891613bab60648361319f565b906001600160a01b038080613c0084613a61565b16931691838314938415613c33575b508315613c1d575b50505090565b613c2991929350613262565b1614388080613c17565b909350600052600660205260406000208260005260205260ff604060002054169238613c0f565b15613c6157565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b613cd891613cc184613a61565b6001600160a01b0393848416939185168414613c5a565b838216938415613d7c57613cf186613d01948694614681565b613cfa86613a61565b1614613c5a565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526005602052604081206001600160601b0360a01b9081815416905583825260046020526040822060001981540190558482526040822060018154019055858252600360205284604083209182541617905580a4565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b600090808252602090828252604092838120338252835260ff848220541615613df65750505050565b8351916001600160401b03903360608501838111868210176140ef578752602a855285850191873684378551156140db5760308353855191600192600110156140c7576078602188015360295b83811161405d575061401b579087519360808501908582109082111761400757885260428452868401946060368737845115613ff35760308653845160011015613ff35790607860218601536041915b818311613f8557505050613f4357613f3f938693613f2393613f14604894613eeb9a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c8801525180926037880190612fb6565b8401917001034b99036b4b9b9b4b733903937b6329607d1b603784015251809386840190612fb6565b0103602881018752018561319f565b5192839262461bcd60e51b845260048401526024830190612fd9565b0390fd5b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015613fdf576f181899199a1a9b1b9c1cb0b131b232b360811b901a613fb58588614b41565b5360041c928015613fcb57600019019190613e93565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b634e487b7160e01b86526041600452602486fd5b60648789519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156140b3576f181899199a1a9b1b9c1cb0b131b232b360811b901a61408b838a614b41565b5360041c90801561409f5760001901613e43565b634e487b7160e01b87526011600452602487fd5b634e487b7160e01b88526032600452602488fd5b634e487b7160e01b86526032600452602486fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b85526041600452602485fd5b6001600160a01b031660008181527f64d20ad6c082d9621149fdda479032d4fb46f976cd92c72281623a586193c3b860205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff1661416b57505050565b80835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835282602052604083209160018060a01b03169182845260205260ff60408420541661416b57505050565b156141e657565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b1561429857565b60405162461bcd60e51b815280613f3f6004820161423e565b60018060a01b0316906143106040516142c981613169565b6020938482527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564858301526000808587829751910182855af161430a614962565b91614b52565b805191821591848315614382575b50505090501561432b5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b9193818094500103126143a9578201519081151582036143a657508038808461431e565b80fd5b5080fd5b6001600160a01b038181169283159290919083156145fa575060095482600052600a60205280604060002055600160401b81101561315357826129178260016143f99401600955613431565b6009546000198082019291831161333b57600094848652602091600a83526040946144278689205491613431565b90549060031b1c61443b8161291784613431565b8852600a845285882055858752868581205560095480156145e6570161447461446382613431565b8154906000199060031b1b19169055565b60095580156145de575b614498578385526017815260ff60048487200154166144a0575b505050505050565b6144a984613a61565b958486526017825283862090838254161490816145d3575b81156145b0575b501561456157838552601781528285209260028401544210156144ec575b50614498565b60178392614529848760047fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da990160ff1981541690555416613577565b15614548575b868852528520541694169280a4388080808080806144e6565b86885281815261455c84848a205416614103565b61452f565b60849083519062461bcd60e51b825260048201526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152fd5b33888516149150816145c4575b50386144c8565b600291500154421015386145bd565b8784161591506144c1565b50600161447e565b634e487b7160e01b88526031600452602488fd5b61460390613a84565b600019810190811161333b57600090838252602090600882526040918284205482810361464a575b50858452838381205587845260078152828420918452528120556143f9565b888552600782528385208386528252838520548986526007835284862082875283528085872055855260088252838520553861462b565b6001600160a01b03808216939092909184159081156148ca575060095483600052600a60205280604060002055600160401b81101561315357836129178260016146ce9401600955613431565b81841691821590811561488957506009546000199081810190811161333b57600090868252600a602052614706604083205491613431565b90549060031b1c61471a8161291784613431565b8252600a602052604082205585815280604081205560095490811561487557500161474761446382613431565b6009555b811561486d575b506148675760009282845260206017815260409260ff600485882001541661477e575b50505050505050565b61478785613a61565b9685875260178352848720908482541614918261485b575b508115614838575b5015614561578385526017815282852092600284015442106147755760178392614800848760047fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da990160ff1981541690555416613577565b1561481f575b868852528520541694169280a438808080808080614775565b86885281815261483384848a205416614103565b614806565b338885161491508161484c575b50386147a7565b60029150015442101538614845565b8885161491503861479f565b50505050565b905038614752565b634e487b7160e01b81526031600452602490fd5b868403614897575b5061474b565b6148a090613a84565b60406000858152600760205281812083825260205286828220558681526008602052205538614891565b84831686036148da575b506146ce565b6148e390613a84565b600019810190811161333b57600090848252602090600882526040918284205482810361492b575b5086845283838120558884526007815282842091845252812055386148d4565b898552600782528385208386528252838520548a86526007835284862082875283528085872055855260088252838520553861490b565b3d1561498d573d90614973826131c0565b91614981604051938461319f565b82523d6000602084013e565b606090565b909190803b156135bf576020604051809281630a85bd0160e11b96878252336004830152816149db60009889938460248501526044840152608060648401526084830190612fd9565b03926001600160a01b03165af190829082614a33575b5050614a25576149ff614962565b80519081614a205760405162461bcd60e51b815280613f3f6004820161423e565b602001fd5b6001600160e01b0319161490565b909192506020813d602011614a74575b81614a506020938361319f565b810103126143a95751906001600160e01b0319821682036143a657509038806149f1565b3d9150614a43565b9290803b15614aec57614acc9160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190612fd9565b03916000968791165af190829082614a33575050614a25576149ff614962565b50505050600190565b15614afc57565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b908151811015613399570160200190565b91929015614bb45750815115614b66575090565b3b15614b6f5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015614bc75750805190602001fd5b60405162461bcd60e51b815260206004820152908190613f3f906024830190612fd956fed329ff8a035c3ce5df2b0dae604d660c0d8783bf7e64be00c1d10db96c0b87b4b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214ea2646970667358221220a7a31f008ac903e56ad50fd4ee69ef54f58903bc26b743ad649183e301ebef5864736f6c63430008180033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
