kamiweb3-sdk
Version:
TypeScript SDK for KAMI721-C, KAMI721-AC, and KAMI1155-C smart contracts
1,889 lines • 169 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "KAMI721ACUpgradable",
"sourceName": "contracts/KAMI721ACUpgradable.sol",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "previousAdmin",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "AdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "caller",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "recipients",
"type": "address[]"
}
],
"name": "BatchClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": false,
"internalType": "address[]",
"name": "recipients",
"type": "address[]"
},
{
"indexed": false,
"internalType": "uint256",
"name": "totalPayment",
"type": "uint256"
}
],
"name": "BatchClaimedFor",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "beacon",
"type": "address"
}
],
"name": "BeaconUpgraded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"indexed": false,
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "MintRoyaltiesUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "platformAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "PlatformCommissionPaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint96",
"name": "newPercentage",
"type": "uint96"
},
{
"indexed": false,
"internalType": "address",
"name": "newPlatformAddress",
"type": "address"
}
],
"name": "PlatformCommissionUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "renter",
"type": "address"
}
],
"name": "RentalEnded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "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": "address",
"name": "claimer",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "paymentAmount",
"type": "uint256"
}
],
"name": "TokenClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"indexed": false,
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "TokenMintRoyaltiesUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "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 KamiNFTLibrary.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 KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "TransferRoyaltiesUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "TransferRoyaltyPaid",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "requiredAmount",
"type": "uint256"
}
],
"name": "TransferRoyaltyRequired",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "implementation",
"type": "address"
}
],
"name": "Upgraded",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "OWNER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "PLATFORM_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RENTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UPGRADER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "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": "address[]",
"name": "recipients",
"type": "address[]"
}
],
"name": "batchClaim",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "recipients",
"type": "address[]"
}
],
"name": "batchClaimFor",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claim",
"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 KamiNFTLibrary.RoyaltyData[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getRentalInfo",
"outputs": [
{
"internalType": "address",
"name": "renter",
"type": "address"
},
{
"internalType": "uint256",
"name": "startTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "endTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rentalPrice",
"type": "uint256"
},
{
"internalType": "bool",
"name": "active",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getTransferRoyaltyReceivers",
"outputs": [
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "",
"type": "tuple[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "hasActiveRentals",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "hasClaimed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "paymentToken_",
"type": "address"
},
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "string",
"name": "baseURI_",
"type": "string"
},
{
"internalType": "uint256",
"name": "mintPrice_",
"type": "uint256"
},
{
"internalType": "address",
"name": "platformAddress_",
"type": "address"
},
{
"internalType": "uint96",
"name": "platformCommissionPercentage_",
"type": "uint96"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
}
],
"name": "initiateTransferWithRoyalty",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "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": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
}
],
"name": "isTransferRoyaltyRequired",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"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": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
}
],
"name": "payTransferRoyalty",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "paymentToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "platformAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "platformCommissionPercentage",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "duration",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "rentalPrice",
"type": "uint256"
}
],
"name": "rentToken",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "salePrice",
"type": "uint256"
}
],
"name": "royaltyInfo",
"outputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint256",
"name": "royaltyAmount",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "royaltyPercentage",
"outputs": [
{
"internalType": "uint96",
"name": "",
"type": "uint96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "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 KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "setMintRoyalties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint96",
"name": "newPlatformCommissionPercentage",
"type": "uint96"
},
{
"internalType": "address",
"name": "newPlatformAddress",
"type": "address"
}
],
"name": "setPlatformCommission",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint96",
"name": "newRoyaltyPercentage",
"type": "uint96"
}
],
"name": "setRoyaltyPercentage",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "setTokenMintRoyalties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "setTokenTransferRoyalties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
},
{
"internalType": "uint96",
"name": "feeNumerator",
"type": "uint96"
}
],
"internalType": "struct KamiNFTLibrary.RoyaltyData[]",
"name": "royalties",
"type": "tuple[]"
}
],
"name": "setTransferRoyalties",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"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": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"bytecode": "0x60a08060405234620000e157306080526000549060ff8260081c166200008f575060ff8082160362000053575b604051616dba9081620000e78239608051818181612159015281816122660152612ee00152f35b60ff90811916176000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a1386200002c565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146140415750806303107da714613ef357806306fdde0314613e57578063081812fc14613e39578063095ea7b314613cbe5780630a0a351514613b0c5780630daf4c9714613ad757806310c551c51461393157806318160ddd146139125780631c2098dc1461356e5780631eae6ed7146134745780631fc7f7e9146133f557806323b872dd146133d1578063248a9ca3146133a257806327dc3fbd1461333e5780632a55205a146133025780632f2ff15d146132615780632f745c59146131ae5780633013ce291461318457806336568abe146130f25780633659cfe614612ebb5780633e11741f14612d005780633f4ba83a14612c4a57806342842e0e14612c3357806342966c68146128c1578063463dace0146128a2578063492ae5a3146126115780634e71d92d1461251d5780634f1ef286146122285780634f6ccce71461220a57806352d1902d1461214657806355f804b314611fc55780635c975abb14611fa15780635e27a77514611f76578063602481b614611d3a5780636352211e14611d0a5780636817c76c14611ceb57806370824c5c14611cb057806370a0823114611c8557806373b2e80e14611c455780638456cb5914611bc95780638a71bb2d14611b9557806391d1485414611b4857806392303e0614611b1457806395d89b4114611a5757806397491d6f1461191b5780639f6d68b0146117ff578063a217fddf146117e3578063a22cb46514611707578063aa15d40f146116be578063b88d4fde1461164a578063b97c9f771461160f578063c87b56dd1461134a578063c8a9aabc146110c8578063d547741f14611089578063dbe55e561461105b578063de6fb96c1461085b578063e58378bb14610832578063e5f2e0cc14610660578063e985e9c514610609578063f249fd1614610477578063f4a0a52814610434578063f72c0d8b146103f95763fb5f749f146102df57600080fd5b346103f4576102ed36614102565b906102f982151561441a565b610306606483111561445f565b60005b828110610351575061034c7f5f3c9cc400a6e4d8a7ee0835f4f43f9bb0fdd28b79013b92de0dabd527ef4c0c916040519182916020835233956020840191614586565b0390a2005b8061036761036260019386866144b4565b6144da565b828060a01b03908181169061037d8215156144ee565b816000526101fd916103db6020928484526103a060ff604060002054161561453a565b6101f986815416966103ba6101fa988954908530916149e7565b6101fc976103d1895480958d9b8c83019055614a2e565b5491541691614c21565b6000525260406000209060ff1982541617905501610309565b600080fd5b346103f45760003660031901126103f45760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346103f45760203660031901126103f457336000908152600080516020616d65833981519152602052604090205461046e9060ff16614413565b6004356101fa55005b346103f45760403660031901126103f4576104906143fd565b6104986141ac565b600080516020616ca58339815191525460601c916001600160a01b0382166104c1811515615da9565b6104e26001600160601b038316926104dd6107d0851115615df5565b615cac565b600080516020616ca583398151915280546001600160601b0316606085901b6001600160601b0319161790556040519182527f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460406020938385820152a1830361054857005b610597927f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e918260005260c98152604060002082600052815260ff60406000205416610599575b505050615041565b005b8260005260c98152604060002082600052815260ff604060002054161561058f578260005260c981526040600020908260005252604060002060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a482808061058f565b346103f45760403660031901126103f457610622614196565b61062a6141ac565b9060018060a01b0380911660005261010060205260406000209116600052602052602060ff604060002054166040519015158152f35b346103f45761066e36614206565b604051632474521560e21b8152600080516020616c45833981519152600482015233602482015260209392908481604481305afa908115610826576000916107f9575b50156107b757826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28938085526106ec6040600020614d8a565b6000946000905b848210610744575050506107356127106001600160601b037fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62095961614615c03565b61034c60405192839283614e9a565b919590919060019061078c906107716001600160a01b03610769610362888b8b614dc2565b161515614dd2565b61078684610780878a8a614dc2565b01614e11565b90614e25565b92866000528783526107ad60406000206107a7838989614dc2565b90614e40565b01909591956106f3565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b0390fd5b6108199150853d871161081f575b610811818361437a565b810190614d72565b856106b1565b503d610807565b6040513d6000823e3d90fd5b346103f45760003660031901126103f4576020604051600080516020616c458339815191528152f35b346103f45760e03660031901126103f457610874614196565b6024356001600160401b0381116103f4576108939036906004016143b6565b906044356001600160401b0381116103f4576108b39036906004016143b6565b916064356001600160401b0381116103f4576108d39036906004016143b6565b9160a4356001600160a01b03811690036103f4576001600160601b0360c4351660c435036103f4576000549160ff8360081c16159283809461104e575b8015611037575b15610fdb5760ff19811660011760005583610fc9575b5061095a60ff60005460081c1661094381615d49565b61094c81615d49565b61095581615d49565b615d49565b8051906001600160401b038211610dd357819061097860fb546145ca565b601f8111610f55575b50602090601f8311600114610edd57600092610ed2575b50508160011b916000199060031b1c19161760fb555b83516001600160401b038111610dd3576109c960fc546145ca565b601f8111610e69575b506020601f8211600114610df4578192939495600092610de9575b50508160011b916000199060031b1c19161760fc555b610a1860ff60005460081c1661094381615d49565b610191805460ff191690556101f980546001600160a01b0319166001600160a01b039092169190911790556084356101fa5581516001600160401b038111610dd357610a666101fb546145ca565b601f8111610d65575b50602092601f8211600114610cf35792819293600092610ce8575b50508160011b916000199060031b1c1916176101fb555b610ab760a4356001600160a01b03161515615da9565b610ad06107d06001600160601b0360c435161115615df5565b600080516020616ca583398151915280546001600160601b031660a43560601b6001600160601b031916179055610b0860c435615cac565b600080516020616c6583398151915280546001600160601b0319166103e81790553360009081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756602052604090205460c99060ff1615610ca9575b600080516020616c45833981519152806000528160205260406000203360005260205260ff6040600020541615610c68575b50610ba260a435615041565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390816000528060205260406000203360005260205260ff6040600020541615610c27575b5050610bef57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b816000526020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a48180610be7565b80600052816020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a482610b96565b60008052806020526040600020336000526020526040600020600160ff1982541617905533336000600080516020616c058339815191528180a4610b64565b015190508380610a8a565b601f198216936101fb600052600080516020616ce58339815191529160005b868110610d4d5750836001959610610d34575b505050811b016101fb55610aa1565b015160001960f88460031b161c19169055838080610d25565b91926020600181928685015181550194019201610d12565b6101fb600052601f820160051c600080516020616ce5833981519152019060208310610dbd575b601f0160051c600080516020616ce583398151915201905b818110610db15750610a6f565b60008155600101610da4565b600080516020616ce58339815191529150610d8c565b634e487b7160e01b600052604160045260246000fd5b0151905085806109ed565b60fc600052600080516020616d058339815191529060005b601f1984168110610e51575060019394959683601f19811610610e38575b505050811b0160fc55610a03565b015160001960f88460031b161c19169055858080610e2a565b9091602060018192858b015181550193019101610e0c565b60fc600052601f820160051c600080516020616d058339815191520160208310610ebd575b601f820160051c600080516020616d05833981519152018110610eb157506109d2565b60008155600101610e8e565b50600080516020616d05833981519152610e8e565b015190508680610998565b925060fb600052600080516020616d25833981519152906000935b601f1984168510610f3a576001945083601f19811610610f21575b505050811b0160fb556109ae565b015160001960f88460031b161c19169055868080610f13565b81810151835560209485019460019093019290910190610ef8565b90915060fb600052601f830160051c600080516020616d258339815191520160208410610fb4575b908392915b601f820160051c600080516020616d25833981519152018110610fa55750610981565b60008155849350600101610f82565b50600080516020616d25833981519152610f7d565b61ffff1916610101176000558561092d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109175750600160ff821614610917565b50600160ff821610610910565b346103f45760003660031901126103f4576020600080516020616ca58339815191525460601c604051908152f35b346103f45760403660031901126103f4576105976004356110a86141ac565b908060005260c96020526110c3600160406000200154615720565b615acc565b346103f4576110d636614263565b6110e1929192614f0d565b6110ea8261491e565b9060018060a01b0393846101f9541684600052600080516020616c258339815191529360209685885261112760ff60046040600020015416615c6a565b83156112f257841561129b5786600052858852604060002054163303611256579061119c91600080516020616ca5833981519152916127106111736001600160601b03855416886144a1565b048861117f8289614c07565b9461118c893033876149e7565b8b83611210575b50505050615f21565b836000528285526111b66002604060002001918254614c14565b9055826000528184526111d26003604060002001918254614c14565b90558160005282527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b81611241857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c88615f21565b5460601c93604051908152a38988818b611193565b60405162461bcd60e51b815260048101889052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b815260048101899052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b815260048101899052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b346103f4576020806003193601126103f457600435600081815260fd6020526040902054611382906001600160a01b031615156148d2565b8160405160006101fb80549183611398846145ca565b9182825286820193600195886001821691826000146115f15750506001146115a5575b506113c89250038461437a565b82511561158a57600094807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000818181101561157c575b50506d04ee2d6d415b85acef81000000008083101561156e575b50662386f26fc100008083101561155f575b506305f5e10080831015611550575b5061271080831015611541575b506064821015611531575b600a80921015611527575b92600187019381602161148261146c8861439b565b9761147a604051998a61437a565b80895261439b565b878a019a90601f1901368c37870101905b6114f1575b50505050936114d79392916114cb6114bc966040519788955180928888019061414e565b8401915180938684019061414e565b0103808452018261437a565b905b6114ed604051928284938452830190614171565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561152257919082611493565b611498565b9560010195611457565b959060646002910491019561144c565b60049197920491019588611441565b60089197920491019588611434565b60109197920491019588611425565b869197920491019588611413565b6040985004915088806113f9565b505050505060405161159b81614344565b60008152906114d9565b9150506000528385600080516020616ce5833981519152856000915b8583106115d85750506113c89350820101896113bb565b80919294505483858a01015201910186908587936115c1565b60ff191687526113c895151560051b85010192508b91506113bb9050565b346103f45760003660031901126103f45760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b346103f45760803660031901126103f457611663614196565b61166b6141ac565b90606435906044356001600160401b0383116103f457610597936116966116b99436906004016143b6565b926116a96116a484336150e0565b614642565b6116b48383836151a9565b616285565b615d29565b346103f45760203660031901126103f4576116d7614f0d565b600435600052600080516020616c25833981519152602052602060ff600460406000200154166040519015158152f35b346103f45760403660031901126103f457611720614196565b60243590811515908183036103f4576001600160a01b03169133831461179e57611770903360005261010060205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b346103f45760003660031901126103f457602060405160008152f35b346103f4576020806003193601126103f4576118196143fd565b604051632474521560e21b8152600080516020616c4583398151915260048201523360248201528281604481305afa908115610826576000916118fe575b50156107b7576001600160601b031690610bb882116118ba57600080516020616c6583398151915280546001600160601b031916831790556040519182527f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e391a1005b6064906040519062461bcd60e51b82526004820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b6119159150833d851161081f57610811818361437a565b83611857565b346103f45760203660031901126103f457600435611937614f0d565b6119408161491e565b9080600052600080516020616c25833981519152908160205261196d60ff60046040600020015416615c6a565b6001600160a01b039283163381148015611a3f575b156119ee576119d39282600052602052604060002090600485835416920160ff198154169055827fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a461549d565b51166119de81614f52565b156119e557005b61059790615a1f565b60405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152608490fd5b50816000528260205283604060002054163314611982565b346103f45760003660031901126103f45760405160fc54600082611a7a836145ca565b9182825260209360019085600182169182600014611af4575050600114611aa9575b506114d99250038361437a565b84915060fc600052600080516020616d05833981519152906000915b858310611adc5750506114d9935082010185611a9c565b80548389018501528794508693909201918101611ac5565b60ff1916858201526114d995151560051b8501019250879150611a9c9050565b346103f45760003660031901126103f45760206001600160601b03600080516020616ca58339815191525416604051908152f35b346103f45760403660031901126103f457611b616141ac565b60043560005260c960205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346103f45760003660031901126103f45760206001600160601b03600080516020616c658339815191525416604051908152f35b346103f45760003660031901126103f457336000908152600080516020616d658339815191526020526040902054611c039060ff16614413565b611c0b614f0d565b610191600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346103f45760203660031901126103f4576001600160a01b03611c66614196565b166000526101fd602052602060ff604060002054166040519015158152f35b346103f45760203660031901126103f4576020611ca8611ca3614196565b614944565b604051908152f35b346103f45760003660031901126103f45760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346103f45760003660031901126103f45760206101fa54604051908152f35b346103f45760203660031901126103f4576020611d2860043561491e565b6040516001600160a01b039091168152f35b346103f4576020806003193601126103f4576004356001600160401b0381116103f457611d6b9036906004016141d6565b90604051632474521560e21b8152600080516020616c4583398151915260048201526024903360248201528481604481305afa90811561082657600091611f59575b50156107b7577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28919081546000835580611f16575b5060009460005b858110611e3c577fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b8686611e286127106001600160601b038c1614615c03565b611e3760405192839283614e9a565b0390a1005b6001600160a01b0396611e6a90611e5b89610769610362868c8c614dc2565b61078684610780858b8b614dc2565b96611e76828888614dc2565b855491600160401b831015611f015760018301808855831015611eec5790600193929187600052611ea6826144da565b16906001600160a01b031990611ebd908701614e11565b60a01b1617907fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee015501611de8565b85634e487b7160e01b60005260326004526000fd5b85634e487b7160e01b60005260416004526000fd5b826000527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee908101905b818110611f4d5750611de1565b60008155600101611f40565b611f709150853d871161081f57610811818361437a565b85611dad565b346103f45760203660031901126103f4576114ed611f95600435615606565b604051918291826142b2565b346103f45760003660031901126103f457602060ff61019154166040519015158152f35b346103f4576020806003193601126103f4576001600160401b03906004358281116103f457611ff89036906004016143b6565b91600080516020616c4583398151915260005260c98252604060002033600052825261202b60ff60406000205416614413565b8251908111610dd3576101fb9161204283546145ca565b601f81116120f5575b5080601f8311600114612087575081929360009261207c575b5050600019600383901b1c191660019190911b179055005b015190508380612064565b90601f1983169484600052600080516020616ce5833981519152926000905b8782106120dd5750508360019596106120c4575b505050811b019055005b015160001960f88460031b161c191690558380806120ba565b806001859682949686015181550195019301906120a6565b83600052600080516020616ce5833981519152601f840160051c81019183851061213c575b601f0160051c01905b818110612130575061204b565b60008155600101612123565b909150819061211a565b346103f45760003660031901126103f4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361219f576020604051600080516020616cc58339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b346103f45760203660031901126103f4576020611ca860043561485a565b60403660031901126103f45761223c614196565b6024356001600160401b0381116103f45761225b9036906004016143b6565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811661229330821415614739565b6122b0600080516020616cc583398151915291838354161461479a565b3360009081527f5bd066a11de3c39d5a00651506dcc7d8e5d6a879bde036d3aa74ff1af7e95495602090815260409091205490929060ff16156124dc577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156123245750505061059791506160d4565b83929316906040516352d1902d60e01b81528481600481865afa600091816124ad575b506123a85760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612456576123b6826160d4565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061244e575b6123ec57005b60008061059794604051946124008661435f565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4612448616164565b91616b6b565b5060016123e6565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508581813d83116124d5575b6124c5818361437a565b810103126103f457519087612347565b503d6124bb565b60405162461bcd60e51b815260048101849052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346103f45760003660031901126103f457336000526101fd8060205260ff604060002054166125da576101f980546101fa80546001600160a01b0394919391926125949291612571913090339089166149e7565b6101fc948554956001870190556125888633614a2e565b84549154169085614c21565b336000526020526040600020600160ff19825416179055546040519081527fcb1e26772e882480176a3e649a5f7937dc0ec3f50126283faf56f927b070be8060203392a3005b60405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606490fd5b346103f4576020806003193601126103f4576004356001600160401b0381116103f4576126429036906004016141d6565b90604051632474521560e21b8152600080516020616c4583398151915260048201526024903360248201528481604481305afa90811561082657600091612885575b50156107b7577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289080546000825580612842575b5060009160005b858110612768575050506001600160601b0361271091160361270c577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d709250611e3760405192839283614e9a565b60405162461bcd60e51b815260048101849052602e60248201527f546f74616c206d696e7420726f79616c74792070657263656e7461676573206d60448201526d75737420657175616c203130302560901b6064820152608490fd5b6001600160a01b03936127969061278786610769610362868c8c614dc2565b61078689610780858b8b614dc2565b936127a2828888614dc2565b845491600160401b83101561282d576001830180875583101561281857906001939291866000526127d2826144da565b16906001600160a01b0319906127e9908c01614e11565b60a01b1617907fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c80155016126be565b84634e487b7160e01b60005260326004526000fd5b84634e487b7160e01b60005260416004526000fd5b816000527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8908101905b81811061287957506126b7565b6000815560010161286c565b61289c9150853d871161081f57610811818361437a565b85612684565b346103f45760203660031901126103f4576114ed611f95600435615afd565b346103f4576020806003193601126103f457600435906128e08261491e565b6001600160a01b0391903390831603612bfd5782600052600080516020616c258339815191529182825260ff60046040600020015416612bb8576129238461491e565b91818316801591908215612b17575061012f805487600052610130835280604060002055600160401b811015610dd357612967816129809360018b94019055614823565b90919082549060031b91821b91600019901b1916179055565b61012f9182549460001995868101908111612b0157886000526101308085526129ae60406000205492614823565b90549060031b1c6129c28161296785614823565b600052845260406000205587600052600060408120558354918215612aeb5760009760fd9588612a379501906129f782614823565b8b82549160031b1b1916905555898952845260ff600460408a2001541680612ad5575b612aa5575b8714612a9457612a31875b828a61634a565b87616a59565b612a408661491e565b9286865260ff825260408620936001600160601b0360a01b94858154169055169384865260fe8252604086209081540190558585525260408320908154169055600080516020616d458339815191528280a4005b612a31612aa08961491e565b612a2a565b85612aaf8a61549d565b5116612aba81614f52565b15612ac6575b50612a1f565b612acf90615a1f565b89612ac0565b506040612ae18a61549d565b0151421015612a1a565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b612b2085614944565b600019810191908211612b01578760005261012e80845260406000205490838203612b72575b5050876000526000604081205560005261012d8252604060002090600052815260006040812055612980565b8260005261012d80865260406000208560005286526040600020549084600052865260406000208360005286528060406000205560005284526040600020558880612b46565b60405162461bcd60e51b815260048101839052601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b6064906040519062461bcd60e51b82526004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152fd5b346103f457610597612c443661427d565b916147fb565b346103f45760003660031901126103f457336000908152600080516020616d658339815191526020526040902054612c849060ff16614413565b610191805460ff811615612cc45760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346103f457612d0e36614239565b91612d188261491e565b6101f9546001600160a01b03949082861690861633829003612e76577f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af9556602061059798612df0899485600052600080516020616c258339815191528452612d8a60ff6004604060002001541615614fc7565b612dc86001600160601b03612db081600080516020616c6583398151915254168b6144a1565b50600080516020616ca58339815191525416896144a1565b50612dd588308c846149e7565b88612dea612de4838b8a615f5d565b8a614c07565b91615f21565b60405182810190612e1681612e088a8d8d8b88615013565b03601f19810183528261437a565b519020600052600080516020616c8583398151915282526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e2825285604060002055604051958652871694a46147fb565b60405162461bcd60e51b815260206004820152601960248201527f4f6e6c7920746f6b656e206f776e65722063616e2073656c6c000000000000006044820152606490fd5b346103f4576020806003193601126103f457612ed5614196565b6001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316612f0d30821415614739565b612f2a600080516020616cc583398151915291858354161461479a565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e360005260c98252604060002033600052825260ff60406000205416156130b15760405193612f7885614344565b600085527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612fb35750505061059791506160d4565b83929316906040516352d1902d60e01b81528481600481865afa60009181613082575b506130375760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b0361245657613045826160d4565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061307a576123ec57005b5060006123e6565b9091508581813d83116130aa575b61309a818361437a565b810103126103f457519087612fd6565b503d613090565b60405162461bcd60e51b815260048101839052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346103f45760403660031901126103f45761310b6141ac565b336001600160a01b038216036131275761059790600435615acc565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b346103f45760003660031901126103f4576101f9546040516001600160a01b039091168152602090f35b346103f45760403660031901126103f4576131c7614196565b602435906131d481614944565b8210156132085760018060a01b031660005261012d6020526040600020906000526020526020604060002054604051908152f35b60405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608490fd5b346103f45760403660031901126103f45760043561327d6141ac565b8160005260c9602052613297600160406000200154615720565b8160005260c960205260406000209060018060a01b0316908160005260205260ff60406000205416156132c657005b8160005260c96020526040600020816000526020526040600020600160ff198254161790553391600080516020616c05833981519152600080a4005b346103f45760403660031901126103f4576133216024356004356146c5565b604080516001600160a01b03939093168352602083019190915290f35b346103f45760203660031901126103f457613357614f0d565b60a061336460043561549d565b600180831b03815116906020810151906040810151608060608301519201511515926040519485526020850152604084015260608301526080820152f35b346103f45760203660031901126103f45760043560005260c96020526020600160406000200154604051908152f35b346103f4576105976133e23661427d565b916133f06116a484336150e0565b6151a9565b346103f45760803660031901126103f45761340e614196565b612e0861343561341c6141ac565b9260405192839160208301956064359160443588615013565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df602052602060ff604060002054166040519015158152f35b346103f45761348236614239565b907f771e304e88a13ffdb75cacc5fbef9827e376630b3548262bab37c8325715aec4602060018060a01b0380806101f95416966135226134c18761491e565b986134ce893085846149e7565b61350c6001600160601b036134f481600080516020616c6583398151915254168c6144a1565b50600080516020616ca583398151915254168a6144a1565b5089612dea61351c838c8c615f5d565b8b614c07565b6040518481019061353a81612e088b86808d88615013565b519020600052600080516020616c8583398151915284526040600020600160ff1982541617905560405196875216951693a4005b346103f45761357c36614263565b9091613586614f0d565b61358f8161491e565b9260018060a01b03806101f954169083600052600080516020616c258339815191528060205260ff600460406000200154166138cd5783156138795785156138285733828816146137d9577f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b1936136dd6136e392613658898b606098600080516020616ca58339815191528c6127106136326001600160601b03845416876144a1565b049161364a6136418488614c07565b963033876149e7565b82613793575b505050615f21565b60046136648442614c14565b91604051926136728461430e565b338452602084019042825260408501908152898501918d83526080860193600185528d6000526020528960406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b42614c14565b94604051954287526020870152604086015233951693a43360009081527fae9dd2dcc535af370be4014a6d4b7776c23f15bd6edc387532e3e6bbd8edcbac60205260409020547f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff161561375557005b8060005260c96020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a4005b6020816137c6857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c88615f21565b548e1c93604051908152a38e8c81613650565b60405162461bcd60e51b815260206004820152602160248201527f4f776e65722063616e6e6f742072656e74207468656972206f776e20746f6b656044820152603760f91b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602660248201527f52656e74616c206475726174696f6e206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608490fd5b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b346103f45760003660031901126103f457602061012f54604051908152f35b346103f45761393f36614239565b906139498161491e565b6001600160a01b0380821693909133859003613a835783600052602092600080516020616c25833981519152845261398c60ff6004604060002001541615614fc7565b8616958615613a3e5790826139d27f3c03dadf3cda1d8a0b15eaf862e12cdc0dabbcdd0f5f87342a0c10793a056a8b959493612e08604051938492888401968b88615013565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df82526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e0825280604060002055604051908152a4005b60405162461bcd60e51b815260048101859052601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606490fd5b60405162461bcd60e51b815260206004820152602660248201527f4f6e6c7920746f6b656e206f776e65722063616e20696e69746961746520747260448201526530b739b332b960d11b6064820152608490fd5b346103f45760203660031901126103f4576020613b02613af5614196565b613afd614f0d565b614f52565b6040519015158152f35b346103f457613b1a36614206565b604051632474521560e21b8152600080516020616c45833981519152600482015233602482015260209392908481604481305afa90811561082657600091613ca1575b50156107b757826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2892808552613b986040600020614d8a565b6000906000905b848210613c4e5750506001600160601b03612710911603613bec57907faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b59161034c60405192839283614e9a565b60405162461bcd60e51b815260048101859052603460248201527f546f74616c20746f6b656e206d696e7420726f79616c74792070657263656e7460448201527361676573206d75737420657175616c203130302560601b6064820152608490fd5b9091600190613c7f90613c706001600160a01b03610769610362888b8b614dc2565b61078689610780878a8a614dc2565b9286600052828852613c9a60406000206107a7838989614dc2565b0190613b9f565b613cb89150853d871161081f57610811818361437a565b85613b5d565b346103f45760403660031901126103f457613cd7614196565b602435906001600160a01b038080613cee8561491e565b16921691808314613dea57803314908115613dc4575b5015613d5957600083815260ff6020526040902080546001600160a01b03191683179055613d318361491e565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b905060005261010060205260406000203360005260205260ff6040600020541684613d04565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b346103f45760203660031901126103f4576020611d28600435614604565b346103f45760003660031901126103f45760405160fb54600082613e7a836145ca565b9182825260209360019085600182169182600014611af4575050600114613ea857506114d99250038361437a565b84915060fb600052600080516020616d25833981519152906000915b858310613edb5750506114d9935082010185611a9c565b80548389018501528794508693909201918101613ec4565b346103f457613f0136614102565b336000908152600080516020616d65833981519152602090815260409091205460ff929190613f31908416614413565b613f3c82151561441a565b613f49606483111561445f565b6101fa613f578382546144a1565b9360018060a01b03926101f993613f758782875416309033906149e7565b60005b868110613fc657877fc790cf53c8ec5abcec9e7425457455b2f05a3384ca5ced92b25ffcd8eb3238a188613fb88c60405192604084526040840191614586565b9260208201528033930390a2005b80613fd76103626001938a8d6144b4565b838116613fe58115156144ee565b806000526101fd9081875261400188604060002054161561453a565b6140276101fc9361401b8554809289978883019055614a2e565b8a54888d541691614c21565b600052855260406000209060ff1982541617905501613f78565b346103f45760203660031901126103f457600435906001600160e01b031982168083036103f45760209263780e9d6360e01b821480156140cc575b809281156140a5575b50508115614095575b5015158152f35b61409f91506149bb565b8361408e565b91925063152a902d60e11b9091149081156140c4575b50908480614085565b9050846140bb565b506380ac58cd60e01b821480156140f2575b8061407c57506140ed816149bb565b61407c565b50635b5e139f60e01b82146140de565b9060206003198301126103f4576004356001600160401b03928382116103f457806023830112156103f45781600401359384116103f45760248460051b830101116103f4576024019190565b60005b8381106141615750506000910152565b8181015183820152602001614151565b9060209161418a8151809281855285808601910161414e565b601f01601f1916010190565b600435906001600160a01b03821682036103f457565b602435906001600160a01b03821682036103f457565b35906001600160a01b03821682036103f457565b9181601f840112156103f4578235916001600160401b0383116103f4576020808501948460061b0101116103f457565b9060406003198301126103f45760043591602435906001600160401b0382116103f457614235916004016141d6565b9091565b60609060031901126103f4576004356001600160a01b03811681036103f457906024359060443590565b60609060031901126103f457600435906024359060443590565b60609060031901126103f4576001600160a01b039060043582811681036103f4579160243590811681036103f4579060443590565b60208082019080835283518092528060408094019401926000905b8382106142dc57505050505090565b845180516001600160a01b031687528301516001600160601b03168684015294850194938201936001909101906142cd565b60a081019081106001600160401b03821117610dd357604052565b604081019081106001600160401b03821117610dd357604052565b602081019081106001600160401b03821117610dd357604052565b606081019081106001600160401b03821117610dd357604052565b90601f801991011681019081106001600160401b03821117610dd357604052565b6001600160401b038111610dd357601f01601f191660200190565b81601f820112156103f4578035906143cd8261439b565b926143db604051948561437a565b828452602083830101116103f457816000926020809301838601378301015290565b600435906001600160601b03821682036103f457565b156107b757565b1561442157565b60405162461bcd60e51b8152602060048201526016602482015275456d70747920726563697069656e747320617272617960501b6044820152606490fd5b1561446657565b60405162461bcd60e51b8152602060048201526013602482015272546f6f206d616e7920726563697069656e747360681b6044820152606490fd5b81810292918115918404141715612b0157565b91908110156144c45760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036103f45790565b156144f557565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e742061646472657373000000000000006044820152606490fd5b1561454157565b60405162461bcd60e51b815260206004820152601960248201527f526563697069656e7420616c726561647920636c61696d6564000000000000006044820152606490fd5b91908082526020809201929160005b8281106145a3575050505090565b909192938280600192838060a01b036145bb896141c2565b16815201950193929101614595565b90600182811c921680156145fa575b60208310146145e457565b634e487b7160e01b600052602260045260246000fd5b91607f16916145d9565b600081815260fd6020526040902054614627906001600160a01b031615156148d2565b600090815260ff60205260409020546001600160a01b031690565b1561464957565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b8051156144c45760200190565b80518210156144c45760209160051b010190565b919091612710906146fb826146f46001600160601b039687600080516020616c658339815191525416906144a1565b0491615606565b805161470e575050509050600090600090565b9061471b614729926146a4565b5194602086015116906144a1565b92516001600160a01b0316920490565b1561474057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156147a157565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b614821926116b9926040519261481084614344565b600084526116a96116a484336150e0565b565b61012f80548210156144c4576000527f232da9e50dad2971456a78fb5cd6ff6b75019984d6e918139ce990999420f9790190600090565b61012f548110156148785761486e90614823565b90549060031b1c90565b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b156148d957565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b600090815260fd60205260409020546001600160a01b03166149418115156148d2565b90565b6001600160a01b031680156149645760005260fe60205260406000205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b63ffffffff60e01b16637965db0b60e01b81149081156149d9575090565b6301ffc9a760e01b14919050565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261482191614a298261430e565b615e41565b90604091825192614a3e84614344565b60008085526001600160a01b0383811692908315614bc457600086815260fd6020526040902054614a7b906001600160a01b031615155b156162fe565b61012f90815487855260209261013084528185872055600160401b821015614bb0578896936148219a989693614ac2896129678660fd966116b99f9b986001019055614823565b614acb88614944565b86865261012d83528486208187528352878587205587865261012e835284862055600080516020616c25833981519152825260ff600485872001541680614b9b575b614b74575b50600086815260fd6020526040902054614b36906001600160a01b03161515614a75565b84845260fe81528284208054600101905585845252812080546001600160a01b03191683179055600080516020616d458339815191528180a4616194565b614b7d8761549d565b5116614b8881614f52565b614b1257614b9590615a1f565b38614b12565b5083614ba68861549d565b0151421015614b0d565b634e487b7160e01b86526041600452602486fd5b6064825162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b91908203918211612b0157565b91908201809211612b0157565b9291600080516020616ca583398151915293845494614c6c61271096614c666001600160601b039489614c568785168a6144a1565b04928380614d5e575b5050615afd565b95614c07565b908451151580614d55575b15614d37575060009160005b8551811015614ceb5787614ca7836020614c9d858b6146b1565b51015116856144a1565b0480614cb7575b50600101614c83565b9093600191614ce491614cdf826001600160a01b03614cd68a8d6146b1565b5151168a615f21565b614c14565b9390614cae565b5050614cfa9293949550614c07565b9081151580614d2d575b614d0e575b505050565b614821926001600160a01b0390614d24906146a4565b51511690615f21565b5082511515614d04565b94955092505081614d4757505050565b614821925460601c90615f21565b50811515614c77565b614d6b9160601c89615f21565b3883614c5f565b908160209103126103f4575180151581036103f45790565b8054906000906000815582614d9e57505050565b6000526020600020918201915b828110614db757505050565b818155600101614dab565b91908110156144c45760061b0190565b15614dd957565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036103f45790565b9190916001600160601b0380809416911601918211612b0157565b805490600160401b821015610dd357600182018082558210156144c45760009081526020902001906001600160a01b03614e79826144da565b16906001600160a01b031990614e9190602001614e11565b60a01b16179055565b90916020918160208201602083525260408091019392600080915b848310614ec55750505050505090565b90919293949560018060a01b03614edb886141c2565b168152818701356001600160601b038116809103614f09578282015284019584019493926001019190614eb5565b8380fd5b60ff6101915416614f1a57565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b61012f549060005b828110614f6957505050600090565b614f728161485a565b600052600080516020616c25833981519152602052604060002060ff6004820154169081614fb0575b50614fa857600101614f5a565b505050600190565b546001600160a01b03848116911614905038614f9b565b15614fce57565b60405162461bcd60e51b815260206004820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152606490fd5b92606894929184526001600160601b0319809260601b16602085015260601b16603483015260488201520190565b6001600160a01b031660008181527fc5b9302118403b4b3973a5e92f01a648957f99af1cb6de48b0d849d5c2b5279760205260408120549091907f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9060ff16156150aa57505050565b80835260c96020526040832082845260205260408320600160ff19825416179055600080516020616c05833981519152339380a4565b906001600160a01b0380806150f48461491e565b16931691838314938415615127575b508315615111575b50505090565b61511d91929350614604565b161438808061510b565b90935060005261010060205260406000208260005260205260ff604060002054169238615103565b1561515657565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b6151ce906151b68461491e565b6001600160a01b03808316939092918316841461514f565b81841693841561544c57831590848215615377575061012f8054948860005261013060205285604060002055600160401b861015610dd357615284615294936152318b6129678a8c976001600080516020616d458339815191529d019055614823565b838a03615343575b6000968b8852600080516020616c25833981519152602052604096848d60ff60048b8d200154168061532e575b6152fd575b5050156152e85761527e8883838f616767565b8b616af9565b61528d8961491e565b161461514f565b85825260ff60205284818320916001600160601b0360a01b9283815416905585845260fe60205280842060001981540190558184528084206001815401905587845260fd60205283209182541617905580a4565b61527e8c83836152f78361491e565b92616767565b6153069061549d565b511661531181614f52565b1561531f575b50848d61526b565b61532890615a1f565b38615317565b50896153398261549d565b0151421015615266565b61534c81614944565b604060008c815261012d6020528181208382526020528d828220558d815261012e6020522055615239565b9086820361539d575b90600080516020616d458339815191529461528461529493615231565b90506153a883614944565b600019810191908211612b0157600080516020616d45833981519152946152848792615294946000908c825261012e908d6020908382526040938486205490848203615415575b50508452838381205587845261012d815282842091845252812055929350509450615380565b8a875261012d808552868820868952855286882054908c8952855286882083895285528087892055875283528486205538806153ef565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b608060409182516154ad8161430e565b6000928184809352826020820152828682015282606082015201526154e78160005260fd60205260018060a01b0360406000205416151590565b1561554b57828260049260ff9452600080516020616c25833981519152602052208351936155148561430e565b81546001600160a01b0316855260018201546020860152600282015490850152600381015460608501520154161515608082015290565b825162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b9081546001600160401b038111610dd357602092604093604051946155b160208560051b018761437a565b83865260208601926000526020600020906000935b8585106155d557505050505050565b600184819284516155e581614329565b8654848060a01b038116825260a01c838201528152019301940193916155c6565b60008181527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289360208181526040808420549294919215615653575092829161494194604094525220615586565b935050907f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2891918254926001600160401b03841161570c57916040519461569e838660051b018761437a565b8486528286019382527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee91935b8585106156db5750505050505090565b600184819284516156eb81614329565b8654848060a01b038116825260a01c838201528152019301940193916156cb565b634e487b7160e01b83526041600452602483fd5b60009080825260209060c98252604092838120338252835260ff84822054161561574a5750505050565b338451926157578461435f565b602a84528484019086368337845115615a0b5760308253845192600193600110156159f7576078602187015360295b84811161598d575061594b57865192608084018481106001600160401b03821117614bb05788526042845286840194606036873784511561593757603086538451600110156159375790607860218601536041915b8183116158c957505050615887576107f593869361586b9361585c6048946158339a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c880152518092603788019061414e565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180938684019061414e565b0103602881018752018561437a565b5192839262461bcd60e51b845260048401526024830190614171565b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015615923576f181899199a1a9b1b9c1cb0b131b232b360811b901a6158f98588616b5a565b5360041c92801561590f576000190191906157db565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156159e3576f181899199a1a9b1b9c1cb0b131b232b360811b901a6159bb8389616b5a565b5360041c9080156159cf5760001901615786565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b6001600160a01b031660008181527fae9dd2dcc535af370be4014a6d4b7776c23f15bd6edc387532e3e6bbd8edcbac60205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff16615a8757505050565b80835260c9602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835260c9602052604083209160018060a01b03169182845260205260ff604084205416615a8757505050565b60008181527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289260208181526040808420549294919215615b4a575092829161494194604094525220615586565b935050907f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2890918254926001600160401b03841161570c579160405194615b95838660051b018761437a565b8486528286019382527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c891935b858510615bd25750505050505090565b60018481928451615be281614329565b8654848060a01b038116825260a01c83820152815201930194019391615bc2565b15615c0a57565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b15615c7157565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b6001600160601b03600080516020616ca583398151915291166001600160601b0319825416179055565b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b15615d3057565b60405162461bcd60e51b8152806107f560048201615cd6565b15615d5057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b15615db057565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b15615dfc57565b60405162461bcd60e51b815260206004820152601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b604051615e99916001600160a01b0316615e5a82614329565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1612448616164565b805190828215928315615f09575b50505015615eb25750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b615f199350820181019101614d72565b388281615ea7565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261482191614a2960648361437a565b91600080516020616ca5833981519152938454936127109081615fbb615fa26001600160601b039383615f92868c168b6144a1565b04998a806160c0575b5050615606565b9683600080516020616c658339815191525416906144a1565b049685511515806160b7575b156160915750600092835b86518110156160355783615ff6846020615fec858c6146b1565b510151168b6144a1565b0480616006575b50600101615fd2565b909460019161602e91614cdf826001600160a01b036160258b8e6146b1565b5151168b615f21565b9490615ffd565b50966149419694925061604c915092809593614c07565b9182151580616087575b616063575b505050614c14565b8261607e949592614cdf92614d2460018060a01b03916146a4565b9038808061605b565b5080511515616056565b92959694505050826160a257505050565b82614941949592614cdf925460601c90615f21565b50871515615fc7565b6160cd9160601c8a615f21565b388a615f9b565b803b1561610957600080516020616cc583398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b3d1561618f573d906161758261439b565b91616183604051938461437a565b82523d6000602084013e565b606090565b909190803b15614fa8576020604051809281630a85bd0160e11b96878252336004830152816161dd60009889938460248501526044840152608060648401526084830190614171565b03926001600160a01b03165af190829082616235575b505061622757616201616164565b805190816162225760405162461bcd60e51b8152806107f560048201615cd6565b602001fd5b6001600160e01b0319161490565b909192506020813d60201161627d575b816162526020938361437a565b810103126162795751906001600160e01b03198216820361627657509038806161f3565b80fd5b5080fd5b3d9150616245565b9290803b156162f5576162d59160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190614171565b03916000968791165af19082908261623557505061622757616201616164565b50505050600190565b1561630557565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b6001600160a01b038281169290919083158015908161675f575b61675757600090838252600080516020616c25833981519152946020968688526040968785209960ff9360049b60ff8d820154166166ba575b506001600160601b03600080516020616c6583398151915254169586151590816166b2575b506163d6575b505050505050505050505050565b620f424095808702908782040361669f57612710879104106163c8578387526101008b528987203388528b5260ff8a8820541692831561668a575b8988528b528987209160ff8d84015416948561667d575b5084616671575b505060020154908115159182616666575b5015918261665d575b5081616654575b5061645f575b808080806163c8565b8294825b633b9aca008111156165cc575b50851561652d575b50505050501561648c578080808080616456565b5162461bcd60e51b815291820152606b60248201527f526f79616c7479207061796d656e74207265717569726564206265666f72652060448201527f7472616e736665722e2055736520696e6974696174655472616e73666572576960648201527f7468526f79616c747920616e64207061795472616e73666572526f79616c747960848201526a10333ab731ba34b7b7399760a91b60a482015260c49150fd5b825b633b9aca00811115616542575b50616478565b8751898101838152606088901b6001600160601b031916602082015260006034820152604881018390529061657a8160688401612e08565b5190208552600080516020616c8583398151915289528288862054166165b8578381018091111561652f57634e487b7160e01b855260118a52602485fd5b50505050505050600138808080808061653c565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906166048160688401612e08565b5190208552600080516020616c85833981519152895282888620541661664957600a90818102918183041490151761646357634e487b7160e01b855260118a52602485fd5b506001955038616470565b90501538616450565b15915038616449565b421015915038616440565b1615925060023861642f565b8354831614945038616428565b925033816166978b614604565b161492616411565b634e487b7160e01b885260118d52602488fd5b9050386163c2565b818154168514908161674c575b8115616729575b50156166da573861639d565b895162461bcd60e51b8152808d018c90526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152608490fd5b338484161491508161673d575b50386166ce565b60029150015442101538616736565b8383161591506166c7565b505050505050565b506001616364565b916001600160a01b03828116929083158015616a4f575b61675757600090858252600080516020616c25833981519152966020968888526040968785209960ff9360049b60ff8d820154166169fe575b506001600160601b03600080516020616c65833981519152541695861515806169f2575b6167ef575b50505050505050505050505050565b620f42409680880290888204036169de57612710889104106167e0578c918489526101008d528b8920338a528d5260ff8c8a2054169384156169c9575b868a528d5260ff8c8a20938401541694856169bc575b50846169ac575b5050600201549081151591826169a1575b50159182616998575b508161698f575b50616879575b808080806167e0565b8395835b633b9aca00811115616928575b5086156168a8575b5050505050501561648c57808080808080616870565b835b633b9aca008111156168bd575b50616892565b88518a8101906168d481612e0885878d8a88615013565b5190208652600080516020616c858339815191528a5283898720541661691257848101809111156168aa57634e487b7160e01b865260118b52602486fd5b50505050505050506001388080808080806168b7565b88518a81019061693f81612e0885878d8a88615013565b5190208652600080516020616c858339815191528a5283898720541661698457600a90818102918183041490151761687d57634e487b7160e01b865260118b52602486fd5b50600196503861688a565b9050153861686a565b15915038616863565b42101591503861685a565b8a82169116149250600238616849565b8354831614945038616842565b935033826169d688614604565b16149361682c565b50634e487b7160e01b885260118d52602488fd5b50808a168414156167db565b8681541684149081616a41575b8115616a1e575b50156166da57386167b7565b3383891614915081616a32575b5038616a12565b60029150015442101538616a2b565b8a8816838916149150616a0b565b508083161561677e565b906001600160a01b039081169081158015616af1575b614d095782600052600080516020616c25833981519152602052604060002060048101805460ff811680616ae3575b616aaa57505050505050565b60ff191690555416917fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4388080808080616757565b506002830154421015616a9e565b506001616a6f565b916001600160a01b03918216919082159082908215616b4f575b5050614d095782600052600080516020616c25833981519152602052604060002060048101805460ff811680616ae357616aaa57505050505050565b161590508138616b13565b9081518110156144c4570160200190565b91929015616bcd5750815115616b7f575090565b3b15616b885790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015616be05750805190602001fd5b60405162461bcd60e51b8152602060048201529081906107f590602483019061417156fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0defbf0e557c8acb6e3deb011ac697e5553b802e419ed4680395101c0ddc5e8723b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d288f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e1de1159fbbeca73b2aca5752c42b257ca18171ae3b3d3bbf22c7938e3a961a0cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9d06c41780d40edbd7db829bd5119eb5f61b9cf80346346f17e157b0b6b1a8e4371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c03e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b9c60e99117f5032802dca1150f0b5e8c20c85aaaf9b6948c204e6687095705a2646970667358221220ebaf5563bb28a2b06027c5acddfcc0ce2c55820f6bc77c524e93e915563922ae64736f6c63430008180033",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146140415750806303107da714613ef357806306fdde0314613e57578063081812fc14613e39578063095ea7b314613cbe5780630a0a351514613b0c5780630daf4c9714613ad757806310c551c51461393157806318160ddd146139125780631c2098dc1461356e5780631eae6ed7146134745780631fc7f7e9146133f557806323b872dd146133d1578063248a9ca3146133a257806327dc3fbd1461333e5780632a55205a146133025780632f2ff15d146132615780632f745c59146131ae5780633013ce291461318457806336568abe146130f25780633659cfe614612ebb5780633e11741f14612d005780633f4ba83a14612c4a57806342842e0e14612c3357806342966c68146128c1578063463dace0146128a2578063492ae5a3146126115780634e71d92d1461251d5780634f1ef286146122285780634f6ccce71461220a57806352d1902d1461214657806355f804b314611fc55780635c975abb14611fa15780635e27a77514611f76578063602481b614611d3a5780636352211e14611d0a5780636817c76c14611ceb57806370824c5c14611cb057806370a0823114611c8557806373b2e80e14611c455780638456cb5914611bc95780638a71bb2d14611b9557806391d1485414611b4857806392303e0614611b1457806395d89b4114611a5757806397491d6f1461191b5780639f6d68b0146117ff578063a217fddf146117e3578063a22cb46514611707578063aa15d40f146116be578063b88d4fde1461164a578063b97c9f771461160f578063c87b56dd1461134a578063c8a9aabc146110c8578063d547741f14611089578063dbe55e561461105b578063de6fb96c1461085b578063e58378bb14610832578063e5f2e0cc14610660578063e985e9c514610609578063f249fd1614610477578063f4a0a52814610434578063f72c0d8b146103f95763fb5f749f146102df57600080fd5b346103f4576102ed36614102565b906102f982151561441a565b610306606483111561445f565b60005b828110610351575061034c7f5f3c9cc400a6e4d8a7ee0835f4f43f9bb0fdd28b79013b92de0dabd527ef4c0c916040519182916020835233956020840191614586565b0390a2005b8061036761036260019386866144b4565b6144da565b828060a01b03908181169061037d8215156144ee565b816000526101fd916103db6020928484526103a060ff604060002054161561453a565b6101f986815416966103ba6101fa988954908530916149e7565b6101fc976103d1895480958d9b8c83019055614a2e565b5491541691614c21565b6000525260406000209060ff1982541617905501610309565b600080fd5b346103f45760003660031901126103f45760206040517f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e38152f35b346103f45760203660031901126103f457336000908152600080516020616d65833981519152602052604090205461046e9060ff16614413565b6004356101fa55005b346103f45760403660031901126103f4576104906143fd565b6104986141ac565b600080516020616ca58339815191525460601c916001600160a01b0382166104c1811515615da9565b6104e26001600160601b038316926104dd6107d0851115615df5565b615cac565b600080516020616ca583398151915280546001600160601b0316606085901b6001600160601b0319161790556040519182527f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460406020938385820152a1830361054857005b610597927f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e918260005260c98152604060002082600052815260ff60406000205416610599575b505050615041565b005b8260005260c98152604060002082600052815260ff604060002054161561058f578260005260c981526040600020908260005252604060002060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a482808061058f565b346103f45760403660031901126103f457610622614196565b61062a6141ac565b9060018060a01b0380911660005261010060205260406000209116600052602052602060ff604060002054166040519015158152f35b346103f45761066e36614206565b604051632474521560e21b8152600080516020616c45833981519152600482015233602482015260209392908481604481305afa908115610826576000916107f9575b50156107b757826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28938085526106ec6040600020614d8a565b6000946000905b848210610744575050506107356127106001600160601b037fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62095961614615c03565b61034c60405192839283614e9a565b919590919060019061078c906107716001600160a01b03610769610362888b8b614dc2565b161515614dd2565b61078684610780878a8a614dc2565b01614e11565b90614e25565b92866000528783526107ad60406000206107a7838989614dc2565b90614e40565b01909591956106f3565b60405162461bcd60e51b815260206004820152601660248201527521b0b63632b91034b9903737ba1030b71037bbb732b960511b6044820152606490fd5b0390fd5b6108199150853d871161081f575b610811818361437a565b810190614d72565b856106b1565b503d610807565b6040513d6000823e3d90fd5b346103f45760003660031901126103f4576020604051600080516020616c458339815191528152f35b346103f45760e03660031901126103f457610874614196565b6024356001600160401b0381116103f4576108939036906004016143b6565b906044356001600160401b0381116103f4576108b39036906004016143b6565b916064356001600160401b0381116103f4576108d39036906004016143b6565b9160a4356001600160a01b03811690036103f4576001600160601b0360c4351660c435036103f4576000549160ff8360081c16159283809461104e575b8015611037575b15610fdb5760ff19811660011760005583610fc9575b5061095a60ff60005460081c1661094381615d49565b61094c81615d49565b61095581615d49565b615d49565b8051906001600160401b038211610dd357819061097860fb546145ca565b601f8111610f55575b50602090601f8311600114610edd57600092610ed2575b50508160011b916000199060031b1c19161760fb555b83516001600160401b038111610dd3576109c960fc546145ca565b601f8111610e69575b506020601f8211600114610df4578192939495600092610de9575b50508160011b916000199060031b1c19161760fc555b610a1860ff60005460081c1661094381615d49565b610191805460ff191690556101f980546001600160a01b0319166001600160a01b039092169190911790556084356101fa5581516001600160401b038111610dd357610a666101fb546145ca565b601f8111610d65575b50602092601f8211600114610cf35792819293600092610ce8575b50508160011b916000199060031b1c1916176101fb555b610ab760a4356001600160a01b03161515615da9565b610ad06107d06001600160601b0360c435161115615df5565b600080516020616ca583398151915280546001600160601b031660a43560601b6001600160601b031916179055610b0860c435615cac565b600080516020616c6583398151915280546001600160601b0319166103e81790553360009081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756602052604090205460c99060ff1615610ca9575b600080516020616c45833981519152806000528160205260406000203360005260205260ff6040600020541615610c68575b50610ba260a435615041565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e390816000528060205260406000203360005260205260ff6040600020541615610c27575b5050610bef57005b61ff0019600054166000557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a1005b816000526020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a48180610be7565b80600052816020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a482610b96565b60008052806020526040600020336000526020526040600020600160ff1982541617905533336000600080516020616c058339815191528180a4610b64565b015190508380610a8a565b601f198216936101fb600052600080516020616ce58339815191529160005b868110610d4d5750836001959610610d34575b505050811b016101fb55610aa1565b015160001960f88460031b161c19169055838080610d25565b91926020600181928685015181550194019201610d12565b6101fb600052601f820160051c600080516020616ce5833981519152019060208310610dbd575b601f0160051c600080516020616ce583398151915201905b818110610db15750610a6f565b60008155600101610da4565b600080516020616ce58339815191529150610d8c565b634e487b7160e01b600052604160045260246000fd5b0151905085806109ed565b60fc600052600080516020616d058339815191529060005b601f1984168110610e51575060019394959683601f19811610610e38575b505050811b0160fc55610a03565b015160001960f88460031b161c19169055858080610e2a565b9091602060018192858b015181550193019101610e0c565b60fc600052601f820160051c600080516020616d058339815191520160208310610ebd575b601f820160051c600080516020616d05833981519152018110610eb157506109d2565b60008155600101610e8e565b50600080516020616d05833981519152610e8e565b015190508680610998565b925060fb600052600080516020616d25833981519152906000935b601f1984168510610f3a576001945083601f19811610610f21575b505050811b0160fb556109ae565b015160001960f88460031b161c19169055868080610f13565b81810151835560209485019460019093019290910190610ef8565b90915060fb600052601f830160051c600080516020616d258339815191520160208410610fb4575b908392915b601f820160051c600080516020616d25833981519152018110610fa55750610981565b60008155849350600101610f82565b50600080516020616d25833981519152610f7d565b61ffff1916610101176000558561092d565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156109175750600160ff821614610917565b50600160ff821610610910565b346103f45760003660031901126103f4576020600080516020616ca58339815191525460601c604051908152f35b346103f45760403660031901126103f4576105976004356110a86141ac565b908060005260c96020526110c3600160406000200154615720565b615acc565b346103f4576110d636614263565b6110e1929192614f0d565b6110ea8261491e565b9060018060a01b0393846101f9541684600052600080516020616c258339815191529360209685885261112760ff60046040600020015416615c6a565b83156112f257841561129b5786600052858852604060002054163303611256579061119c91600080516020616ca5833981519152916127106111736001600160601b03855416886144a1565b048861117f8289614c07565b9461118c893033876149e7565b8b83611210575b50505050615f21565b836000528285526111b66002604060002001918254614c14565b9055826000528184526111d26003604060002001918254614c14565b90558160005282527f43ed7a287a535d13f2389230befff1329b7724a3890189bb8727976119e6c6c3600260406000200154926040519384523393a3005b81611241857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c88615f21565b5460601c93604051908152a38988818b611193565b60405162461bcd60e51b815260048101889052601d60248201527f4f6e6c792072656e7465722063616e20657874656e642072656e74616c0000006044820152606490fd5b60405162461bcd60e51b815260048101899052602960248201527f4164646974696f6e616c207061796d656e74206d75737420626520677265617460448201526806572207468616e20360bc1b6064820152608490fd5b60405162461bcd60e51b815260048101899052602a60248201527f4164646974696f6e616c206475726174696f6e206d75737420626520677265616044820152690746572207468616e20360b41b6064820152608490fd5b346103f4576020806003193601126103f457600435600081815260fd6020526040902054611382906001600160a01b031615156148d2565b8160405160006101fb80549183611398846145ca565b9182825286820193600195886001821691826000146115f15750506001146115a5575b506113c89250038461437a565b82511561158a57600094807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000818181101561157c575b50506d04ee2d6d415b85acef81000000008083101561156e575b50662386f26fc100008083101561155f575b506305f5e10080831015611550575b5061271080831015611541575b506064821015611531575b600a80921015611527575b92600187019381602161148261146c8861439b565b9761147a604051998a61437a565b80895261439b565b878a019a90601f1901368c37870101905b6114f1575b50505050936114d79392916114cb6114bc966040519788955180928888019061414e565b8401915180938684019061414e565b0103808452018261437a565b905b6114ed604051928284938452830190614171565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530491821561152257919082611493565b611498565b9560010195611457565b959060646002910491019561144c565b60049197920491019588611441565b60089197920491019588611434565b60109197920491019588611425565b869197920491019588611413565b6040985004915088806113f9565b505050505060405161159b81614344565b60008152906114d9565b9150506000528385600080516020616ce5833981519152856000915b8583106115d85750506113c89350820101896113bb565b80919294505483858a01015201910186908587936115c1565b60ff191687526113c895151560051b85010192508b91506113bb9050565b346103f45760003660031901126103f45760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b346103f45760803660031901126103f457611663614196565b61166b6141ac565b90606435906044356001600160401b0383116103f457610597936116966116b99436906004016143b6565b926116a96116a484336150e0565b614642565b6116b48383836151a9565b616285565b615d29565b346103f45760203660031901126103f4576116d7614f0d565b600435600052600080516020616c25833981519152602052602060ff600460406000200154166040519015158152f35b346103f45760403660031901126103f457611720614196565b60243590811515908183036103f4576001600160a01b03169133831461179e57611770903360005261010060205260406000208460005260205260406000209060ff801983541691151516179055565b6040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b346103f45760003660031901126103f457602060405160008152f35b346103f4576020806003193601126103f4576118196143fd565b604051632474521560e21b8152600080516020616c4583398151915260048201523360248201528281604481305afa908115610826576000916118fe575b50156107b7576001600160601b031690610bb882116118ba57600080516020616c6583398151915280546001600160601b031916831790556040519182527f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e391a1005b6064906040519062461bcd60e51b82526004820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b6119159150833d851161081f57610811818361437a565b83611857565b346103f45760203660031901126103f457600435611937614f0d565b6119408161491e565b9080600052600080516020616c25833981519152908160205261196d60ff60046040600020015416615c6a565b6001600160a01b039283163381148015611a3f575b156119ee576119d39282600052602052604060002090600485835416920160ff198154169055827fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a461549d565b51166119de81614f52565b156119e557005b61059790615a1f565b60405162461bcd60e51b815260206004820152602360248201527f4f6e6c79206f776e6572206f722072656e7465722063616e20656e642072656e6044820152621d185b60ea1b6064820152608490fd5b50816000528260205283604060002054163314611982565b346103f45760003660031901126103f45760405160fc54600082611a7a836145ca565b9182825260209360019085600182169182600014611af4575050600114611aa9575b506114d99250038361437a565b84915060fc600052600080516020616d05833981519152906000915b858310611adc5750506114d9935082010185611a9c565b80548389018501528794508693909201918101611ac5565b60ff1916858201526114d995151560051b8501019250879150611a9c9050565b346103f45760003660031901126103f45760206001600160601b03600080516020616ca58339815191525416604051908152f35b346103f45760403660031901126103f457611b616141ac565b60043560005260c960205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346103f45760003660031901126103f45760206001600160601b03600080516020616c658339815191525416604051908152f35b346103f45760003660031901126103f457336000908152600080516020616d658339815191526020526040902054611c039060ff16614413565b611c0b614f0d565b610191600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1005b346103f45760203660031901126103f4576001600160a01b03611c66614196565b166000526101fd602052602060ff604060002054166040519015158152f35b346103f45760203660031901126103f4576020611ca8611ca3614196565b614944565b604051908152f35b346103f45760003660031901126103f45760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b346103f45760003660031901126103f45760206101fa54604051908152f35b346103f45760203660031901126103f4576020611d2860043561491e565b6040516001600160a01b039091168152f35b346103f4576020806003193601126103f4576004356001600160401b0381116103f457611d6b9036906004016141d6565b90604051632474521560e21b8152600080516020616c4583398151915260048201526024903360248201528481604481305afa90811561082657600091611f59575b50156107b7577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d28919081546000835580611f16575b5060009460005b858110611e3c577fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b8686611e286127106001600160601b038c1614615c03565b611e3760405192839283614e9a565b0390a1005b6001600160a01b0396611e6a90611e5b89610769610362868c8c614dc2565b61078684610780858b8b614dc2565b96611e76828888614dc2565b855491600160401b831015611f015760018301808855831015611eec5790600193929187600052611ea6826144da565b16906001600160a01b031990611ebd908701614e11565b60a01b1617907fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee015501611de8565b85634e487b7160e01b60005260326004526000fd5b85634e487b7160e01b60005260416004526000fd5b826000527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee908101905b818110611f4d5750611de1565b60008155600101611f40565b611f709150853d871161081f57610811818361437a565b85611dad565b346103f45760203660031901126103f4576114ed611f95600435615606565b604051918291826142b2565b346103f45760003660031901126103f457602060ff61019154166040519015158152f35b346103f4576020806003193601126103f4576001600160401b03906004358281116103f457611ff89036906004016143b6565b91600080516020616c4583398151915260005260c98252604060002033600052825261202b60ff60406000205416614413565b8251908111610dd3576101fb9161204283546145ca565b601f81116120f5575b5080601f8311600114612087575081929360009261207c575b5050600019600383901b1c191660019190911b179055005b015190508380612064565b90601f1983169484600052600080516020616ce5833981519152926000905b8782106120dd5750508360019596106120c4575b505050811b019055005b015160001960f88460031b161c191690558380806120ba565b806001859682949686015181550195019301906120a6565b83600052600080516020616ce5833981519152601f840160051c81019183851061213c575b601f0160051c01905b818110612130575061204b565b60008155600101612123565b909150819061211a565b346103f45760003660031901126103f4577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361219f576020604051600080516020616cc58339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b346103f45760203660031901126103f4576020611ca860043561485a565b60403660031901126103f45761223c614196565b6024356001600160401b0381116103f45761225b9036906004016143b6565b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811661229330821415614739565b6122b0600080516020616cc583398151915291838354161461479a565b3360009081527f5bd066a11de3c39d5a00651506dcc7d8e5d6a879bde036d3aa74ff1af7e95495602090815260409091205490929060ff16156124dc577f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156123245750505061059791506160d4565b83929316906040516352d1902d60e01b81528481600481865afa600091816124ad575b506123a85760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b03612456576123b6826160d4565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061244e575b6123ec57005b60008061059794604051946124008661435f565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4612448616164565b91616b6b565b5060016123e6565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508581813d83116124d5575b6124c5818361437a565b810103126103f457519087612347565b503d6124bb565b60405162461bcd60e51b815260048101849052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346103f45760003660031901126103f457336000526101fd8060205260ff604060002054166125da576101f980546101fa80546001600160a01b0394919391926125949291612571913090339089166149e7565b6101fc948554956001870190556125888633614a2e565b84549154169085614c21565b336000526020526040600020600160ff19825416179055546040519081527fcb1e26772e882480176a3e649a5f7937dc0ec3f50126283faf56f927b070be8060203392a3005b60405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e4818db185a5b5959608a1b6044820152606490fd5b346103f4576020806003193601126103f4576004356001600160401b0381116103f4576126429036906004016141d6565b90604051632474521560e21b8152600080516020616c4583398151915260048201526024903360248201528481604481305afa90811561082657600091612885575b50156107b7577f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289080546000825580612842575b5060009160005b858110612768575050506001600160601b0361271091160361270c577f89bf541e521f4acc4850978648c2c61d31963c71ae31181f246302f902941d709250611e3760405192839283614e9a565b60405162461bcd60e51b815260048101849052602e60248201527f546f74616c206d696e7420726f79616c74792070657263656e7461676573206d60448201526d75737420657175616c203130302560901b6064820152608490fd5b6001600160a01b03936127969061278786610769610362868c8c614dc2565b61078689610780858b8b614dc2565b936127a2828888614dc2565b845491600160401b83101561282d576001830180875583101561281857906001939291866000526127d2826144da565b16906001600160a01b0319906127e9908c01614e11565b60a01b1617907fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c80155016126be565b84634e487b7160e01b60005260326004526000fd5b84634e487b7160e01b60005260416004526000fd5b816000527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c8908101905b81811061287957506126b7565b6000815560010161286c565b61289c9150853d871161081f57610811818361437a565b85612684565b346103f45760203660031901126103f4576114ed611f95600435615afd565b346103f4576020806003193601126103f457600435906128e08261491e565b6001600160a01b0391903390831603612bfd5782600052600080516020616c258339815191529182825260ff60046040600020015416612bb8576129238461491e565b91818316801591908215612b17575061012f805487600052610130835280604060002055600160401b811015610dd357612967816129809360018b94019055614823565b90919082549060031b91821b91600019901b1916179055565b61012f9182549460001995868101908111612b0157886000526101308085526129ae60406000205492614823565b90549060031b1c6129c28161296785614823565b600052845260406000205587600052600060408120558354918215612aeb5760009760fd9588612a379501906129f782614823565b8b82549160031b1b1916905555898952845260ff600460408a2001541680612ad5575b612aa5575b8714612a9457612a31875b828a61634a565b87616a59565b612a408661491e565b9286865260ff825260408620936001600160601b0360a01b94858154169055169384865260fe8252604086209081540190558585525260408320908154169055600080516020616d458339815191528280a4005b612a31612aa08961491e565b612a2a565b85612aaf8a61549d565b5116612aba81614f52565b15612ac6575b50612a1f565b612acf90615a1f565b89612ac0565b506040612ae18a61549d565b0151421015612a1a565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b612b2085614944565b600019810191908211612b01578760005261012e80845260406000205490838203612b72575b5050876000526000604081205560005261012d8252604060002090600052815260006040812055612980565b8260005261012d80865260406000208560005286526040600020549084600052865260406000208360005286528060406000205560005284526040600020558880612b46565b60405162461bcd60e51b815260048101839052601a60248201527f43616e6e6f74206275726e20612072656e74656420746f6b656e0000000000006044820152606490fd5b6064906040519062461bcd60e51b82526004820152600f60248201526e2737ba103a37b5b2b71037bbb732b960891b6044820152fd5b346103f457610597612c443661427d565b916147fb565b346103f45760003660031901126103f457336000908152600080516020616d658339815191526020526040902054612c849060ff16614413565b610191805460ff811615612cc45760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1005b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b346103f457612d0e36614239565b91612d188261491e565b6101f9546001600160a01b03949082861690861633829003612e76577f3d5eb834b5d6cadc063c171c3f25f60bca8ea892ba9db25342278927d0af9556602061059798612df0899485600052600080516020616c258339815191528452612d8a60ff6004604060002001541615614fc7565b612dc86001600160601b03612db081600080516020616c6583398151915254168b6144a1565b50600080516020616ca58339815191525416896144a1565b50612dd588308c846149e7565b88612dea612de4838b8a615f5d565b8a614c07565b91615f21565b60405182810190612e1681612e088a8d8d8b88615013565b03601f19810183528261437a565b519020600052600080516020616c8583398151915282526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e2825285604060002055604051958652871694a46147fb565b60405162461bcd60e51b815260206004820152601960248201527f4f6e6c7920746f6b656e206f776e65722063616e2073656c6c000000000000006044820152606490fd5b346103f4576020806003193601126103f457612ed5614196565b6001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316612f0d30821415614739565b612f2a600080516020616cc583398151915291858354161461479a565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e360005260c98252604060002033600052825260ff60406000205416156130b15760405193612f7885614344565b600085527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612fb35750505061059791506160d4565b83929316906040516352d1902d60e01b81528481600481865afa60009181613082575b506130375760405162461bcd60e51b815260048101869052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b0361245657613045826160d4565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a282511580159061307a576123ec57005b5060006123e6565b9091508581813d83116130aa575b61309a818361437a565b810103126103f457519087612fd6565b503d613090565b60405162461bcd60e51b815260048101839052601960248201527821b0b63632b91034b9903737ba1030b7103ab833b930b232b960391b6044820152606490fd5b346103f45760403660031901126103f45761310b6141ac565b336001600160a01b038216036131275761059790600435615acc565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b346103f45760003660031901126103f4576101f9546040516001600160a01b039091168152602090f35b346103f45760403660031901126103f4576131c7614196565b602435906131d481614944565b8210156132085760018060a01b031660005261012d6020526040600020906000526020526020604060002054604051908152f35b60405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608490fd5b346103f45760403660031901126103f45760043561327d6141ac565b8160005260c9602052613297600160406000200154615720565b8160005260c960205260406000209060018060a01b0316908160005260205260ff60406000205416156132c657005b8160005260c96020526040600020816000526020526040600020600160ff198254161790553391600080516020616c05833981519152600080a4005b346103f45760403660031901126103f4576133216024356004356146c5565b604080516001600160a01b03939093168352602083019190915290f35b346103f45760203660031901126103f457613357614f0d565b60a061336460043561549d565b600180831b03815116906020810151906040810151608060608301519201511515926040519485526020850152604084015260608301526080820152f35b346103f45760203660031901126103f45760043560005260c96020526020600160406000200154604051908152f35b346103f4576105976133e23661427d565b916133f06116a484336150e0565b6151a9565b346103f45760803660031901126103f45761340e614196565b612e0861343561341c6141ac565b9260405192839160208301956064359160443588615013565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df602052602060ff604060002054166040519015158152f35b346103f45761348236614239565b907f771e304e88a13ffdb75cacc5fbef9827e376630b3548262bab37c8325715aec4602060018060a01b0380806101f95416966135226134c18761491e565b986134ce893085846149e7565b61350c6001600160601b036134f481600080516020616c6583398151915254168c6144a1565b50600080516020616ca583398151915254168a6144a1565b5089612dea61351c838c8c615f5d565b8b614c07565b6040518481019061353a81612e088b86808d88615013565b519020600052600080516020616c8583398151915284526040600020600160ff1982541617905560405196875216951693a4005b346103f45761357c36614263565b9091613586614f0d565b61358f8161491e565b9260018060a01b03806101f954169083600052600080516020616c258339815191528060205260ff600460406000200154166138cd5783156138795785156138285733828816146137d9577f61619ae64b505b7a930ddc60df40a5c2746b1778b429ddb19ff5236f28ba83b1936136dd6136e392613658898b606098600080516020616ca58339815191528c6127106136326001600160601b03845416876144a1565b049161364a6136418488614c07565b963033876149e7565b82613793575b505050615f21565b60046136648442614c14565b91604051926136728461430e565b338452602084019042825260408501908152898501918d83526080860193600185528d6000526020528960406000209651166001600160601b0360a01b87541617865551600186015551600285015551600384015551151591019060ff801983541691151516179055565b42614c14565b94604051954287526020870152604086015233951693a43360009081527fae9dd2dcc535af370be4014a6d4b7776c23f15bd6edc387532e3e6bbd8edcbac60205260409020547f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff161561375557005b8060005260c96020526040600020336000526020526040600020600160ff1982541617905533903390600080516020616c05833981519152600080a4005b6020816137c6857f2a0edbc96cbdf959b1243e79c51b9bb83b7867279441dc220825d561c2fbb2c6945460601c88615f21565b548e1c93604051908152a38e8c81613650565b60405162461bcd60e51b815260206004820152602160248201527f4f776e65722063616e6e6f742072656e74207468656972206f776e20746f6b656044820152603760f91b6064820152608490fd5b60405162461bcd60e51b815260206004820152602360248201527f52656e74616c207072696365206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602660248201527f52656e74616c206475726174696f6e206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608490fd5b60405162461bcd60e51b815260206004820152601760248201527f546f6b656e20697320616c72656164792072656e7465640000000000000000006044820152606490fd5b346103f45760003660031901126103f457602061012f54604051908152f35b346103f45761393f36614239565b906139498161491e565b6001600160a01b0380821693909133859003613a835783600052602092600080516020616c25833981519152845261398c60ff6004604060002001541615614fc7565b8616958615613a3e5790826139d27f3c03dadf3cda1d8a0b15eaf862e12cdc0dabbcdd0f5f87342a0c10793a056a8b959493612e08604051938492888401968b88615013565b5190206000527f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3df82526040600020600160ff198254161790557f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e0825280604060002055604051908152a4005b60405162461bcd60e51b815260048101859052601f60248201527f43616e6e6f74207472616e7366657220746f207a65726f2061646472657373006044820152606490fd5b60405162461bcd60e51b815260206004820152602660248201527f4f6e6c7920746f6b656e206f776e65722063616e20696e69746961746520747260448201526530b739b332b960d11b6064820152608490fd5b346103f45760203660031901126103f4576020613b02613af5614196565b613afd614f0d565b614f52565b6040519015158152f35b346103f457613b1a36614206565b604051632474521560e21b8152600080516020616c45833981519152600482015233602482015260209392908481604481305afa90811561082657600091613ca1575b50156107b757826000527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2892808552613b986040600020614d8a565b6000906000905b848210613c4e5750506001600160601b03612710911603613bec57907faaf4e53c3b98ff4419060c1d6732d9fdaf27c8d404b09e9b4049b6442b71e8b59161034c60405192839283614e9a565b60405162461bcd60e51b815260048101859052603460248201527f546f74616c20746f6b656e206d696e7420726f79616c74792070657263656e7460448201527361676573206d75737420657175616c203130302560601b6064820152608490fd5b9091600190613c7f90613c706001600160a01b03610769610362888b8b614dc2565b61078689610780878a8a614dc2565b9286600052828852613c9a60406000206107a7838989614dc2565b0190613b9f565b613cb89150853d871161081f57610811818361437a565b85613b5d565b346103f45760403660031901126103f457613cd7614196565b602435906001600160a01b038080613cee8561491e565b16921691808314613dea57803314908115613dc4575b5015613d5957600083815260ff6020526040902080546001600160a01b03191683179055613d318361491e565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4005b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b905060005261010060205260406000203360005260205260ff6040600020541684613d04565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b346103f45760203660031901126103f4576020611d28600435614604565b346103f45760003660031901126103f45760405160fb54600082613e7a836145ca565b9182825260209360019085600182169182600014611af4575050600114613ea857506114d99250038361437a565b84915060fb600052600080516020616d25833981519152906000915b858310613edb5750506114d9935082010185611a9c565b80548389018501528794508693909201918101613ec4565b346103f457613f0136614102565b336000908152600080516020616d65833981519152602090815260409091205460ff929190613f31908416614413565b613f3c82151561441a565b613f49606483111561445f565b6101fa613f578382546144a1565b9360018060a01b03926101f993613f758782875416309033906149e7565b60005b868110613fc657877fc790cf53c8ec5abcec9e7425457455b2f05a3384ca5ced92b25ffcd8eb3238a188613fb88c60405192604084526040840191614586565b9260208201528033930390a2005b80613fd76103626001938a8d6144b4565b838116613fe58115156144ee565b806000526101fd9081875261400188604060002054161561453a565b6140276101fc9361401b8554809289978883019055614a2e565b8a54888d541691614c21565b600052855260406000209060ff1982541617905501613f78565b346103f45760203660031901126103f457600435906001600160e01b031982168083036103f45760209263780e9d6360e01b821480156140cc575b809281156140a5575b50508115614095575b5015158152f35b61409f91506149bb565b8361408e565b91925063152a902d60e11b9091149081156140c4575b50908480614085565b9050846140bb565b506380ac58cd60e01b821480156140f2575b8061407c57506140ed816149bb565b61407c565b50635b5e139f60e01b82146140de565b9060206003198301126103f4576004356001600160401b03928382116103f457806023830112156103f45781600401359384116103f45760248460051b830101116103f4576024019190565b60005b8381106141615750506000910152565b8181015183820152602001614151565b9060209161418a8151809281855285808601910161414e565b601f01601f1916010190565b600435906001600160a01b03821682036103f457565b602435906001600160a01b03821682036103f457565b35906001600160a01b03821682036103f457565b9181601f840112156103f4578235916001600160401b0383116103f4576020808501948460061b0101116103f457565b9060406003198301126103f45760043591602435906001600160401b0382116103f457614235916004016141d6565b9091565b60609060031901126103f4576004356001600160a01b03811681036103f457906024359060443590565b60609060031901126103f457600435906024359060443590565b60609060031901126103f4576001600160a01b039060043582811681036103f4579160243590811681036103f4579060443590565b60208082019080835283518092528060408094019401926000905b8382106142dc57505050505090565b845180516001600160a01b031687528301516001600160601b03168684015294850194938201936001909101906142cd565b60a081019081106001600160401b03821117610dd357604052565b604081019081106001600160401b03821117610dd357604052565b602081019081106001600160401b03821117610dd357604052565b606081019081106001600160401b03821117610dd357604052565b90601f801991011681019081106001600160401b03821117610dd357604052565b6001600160401b038111610dd357601f01601f191660200190565b81601f820112156103f4578035906143cd8261439b565b926143db604051948561437a565b828452602083830101116103f457816000926020809301838601378301015290565b600435906001600160601b03821682036103f457565b156107b757565b1561442157565b60405162461bcd60e51b8152602060048201526016602482015275456d70747920726563697069656e747320617272617960501b6044820152606490fd5b1561446657565b60405162461bcd60e51b8152602060048201526013602482015272546f6f206d616e7920726563697069656e747360681b6044820152606490fd5b81810292918115918404141715612b0157565b91908110156144c45760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036103f45790565b156144f557565b60405162461bcd60e51b815260206004820152601960248201527f496e76616c696420726563697069656e742061646472657373000000000000006044820152606490fd5b1561454157565b60405162461bcd60e51b815260206004820152601960248201527f526563697069656e7420616c726561647920636c61696d6564000000000000006044820152606490fd5b91908082526020809201929160005b8281106145a3575050505090565b909192938280600192838060a01b036145bb896141c2565b16815201950193929101614595565b90600182811c921680156145fa575b60208310146145e457565b634e487b7160e01b600052602260045260246000fd5b91607f16916145d9565b600081815260fd6020526040902054614627906001600160a01b031615156148d2565b600090815260ff60205260409020546001600160a01b031690565b1561464957565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b8051156144c45760200190565b80518210156144c45760209160051b010190565b919091612710906146fb826146f46001600160601b039687600080516020616c658339815191525416906144a1565b0491615606565b805161470e575050509050600090600090565b9061471b614729926146a4565b5194602086015116906144a1565b92516001600160a01b0316920490565b1561474057565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b156147a157565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b614821926116b9926040519261481084614344565b600084526116a96116a484336150e0565b565b61012f80548210156144c4576000527f232da9e50dad2971456a78fb5cd6ff6b75019984d6e918139ce990999420f9790190600090565b61012f548110156148785761486e90614823565b90549060031b1c90565b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b156148d957565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b600090815260fd60205260409020546001600160a01b03166149418115156148d2565b90565b6001600160a01b031680156149645760005260fe60205260406000205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b63ffffffff60e01b16637965db0b60e01b81149081156149d9575090565b6301ffc9a760e01b14919050565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261482191614a298261430e565b615e41565b90604091825192614a3e84614344565b60008085526001600160a01b0383811692908315614bc457600086815260fd6020526040902054614a7b906001600160a01b031615155b156162fe565b61012f90815487855260209261013084528185872055600160401b821015614bb0578896936148219a989693614ac2896129678660fd966116b99f9b986001019055614823565b614acb88614944565b86865261012d83528486208187528352878587205587865261012e835284862055600080516020616c25833981519152825260ff600485872001541680614b9b575b614b74575b50600086815260fd6020526040902054614b36906001600160a01b03161515614a75565b84845260fe81528284208054600101905585845252812080546001600160a01b03191683179055600080516020616d458339815191528180a4616194565b614b7d8761549d565b5116614b8881614f52565b614b1257614b9590615a1f565b38614b12565b5083614ba68861549d565b0151421015614b0d565b634e487b7160e01b86526041600452602486fd5b6064825162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b91908203918211612b0157565b91908201809211612b0157565b9291600080516020616ca583398151915293845494614c6c61271096614c666001600160601b039489614c568785168a6144a1565b04928380614d5e575b5050615afd565b95614c07565b908451151580614d55575b15614d37575060009160005b8551811015614ceb5787614ca7836020614c9d858b6146b1565b51015116856144a1565b0480614cb7575b50600101614c83565b9093600191614ce491614cdf826001600160a01b03614cd68a8d6146b1565b5151168a615f21565b614c14565b9390614cae565b5050614cfa9293949550614c07565b9081151580614d2d575b614d0e575b505050565b614821926001600160a01b0390614d24906146a4565b51511690615f21565b5082511515614d04565b94955092505081614d4757505050565b614821925460601c90615f21565b50811515614c77565b614d6b9160601c89615f21565b3883614c5f565b908160209103126103f4575180151581036103f45790565b8054906000906000815582614d9e57505050565b6000526020600020918201915b828110614db757505050565b818155600101614dab565b91908110156144c45760061b0190565b15614dd957565b60405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103932b1b2b4bb32b960811b6044820152606490fd5b356001600160601b03811681036103f45790565b9190916001600160601b0380809416911601918211612b0157565b805490600160401b821015610dd357600182018082558210156144c45760009081526020902001906001600160a01b03614e79826144da565b16906001600160a01b031990614e9190602001614e11565b60a01b16179055565b90916020918160208201602083525260408091019392600080915b848310614ec55750505050505090565b90919293949560018060a01b03614edb886141c2565b168152818701356001600160601b038116809103614f09578282015284019584019493926001019190614eb5565b8380fd5b60ff6101915416614f1a57565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b61012f549060005b828110614f6957505050600090565b614f728161485a565b600052600080516020616c25833981519152602052604060002060ff6004820154169081614fb0575b50614fa857600101614f5a565b505050600190565b546001600160a01b03848116911614905038614f9b565b15614fce57565b60405162461bcd60e51b815260206004820152601960248201527f546f6b656e2069732063757272656e746c792072656e746564000000000000006044820152606490fd5b92606894929184526001600160601b0319809260601b16602085015260601b16603483015260488201520190565b6001600160a01b031660008181527fc5b9302118403b4b3973a5e92f01a648957f99af1cb6de48b0d849d5c2b5279760205260408120549091907f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9060ff16156150aa57505050565b80835260c96020526040832082845260205260408320600160ff19825416179055600080516020616c05833981519152339380a4565b906001600160a01b0380806150f48461491e565b16931691838314938415615127575b508315615111575b50505090565b61511d91929350614604565b161438808061510b565b90935060005261010060205260406000208260005260205260ff604060002054169238615103565b1561515657565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b6151ce906151b68461491e565b6001600160a01b03808316939092918316841461514f565b81841693841561544c57831590848215615377575061012f8054948860005261013060205285604060002055600160401b861015610dd357615284615294936152318b6129678a8c976001600080516020616d458339815191529d019055614823565b838a03615343575b6000968b8852600080516020616c25833981519152602052604096848d60ff60048b8d200154168061532e575b6152fd575b5050156152e85761527e8883838f616767565b8b616af9565b61528d8961491e565b161461514f565b85825260ff60205284818320916001600160601b0360a01b9283815416905585845260fe60205280842060001981540190558184528084206001815401905587845260fd60205283209182541617905580a4565b61527e8c83836152f78361491e565b92616767565b6153069061549d565b511661531181614f52565b1561531f575b50848d61526b565b61532890615a1f565b38615317565b50896153398261549d565b0151421015615266565b61534c81614944565b604060008c815261012d6020528181208382526020528d828220558d815261012e6020522055615239565b9086820361539d575b90600080516020616d458339815191529461528461529493615231565b90506153a883614944565b600019810191908211612b0157600080516020616d45833981519152946152848792615294946000908c825261012e908d6020908382526040938486205490848203615415575b50508452838381205587845261012d815282842091845252812055929350509450615380565b8a875261012d808552868820868952855286882054908c8952855286882083895285528087892055875283528486205538806153ef565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b608060409182516154ad8161430e565b6000928184809352826020820152828682015282606082015201526154e78160005260fd60205260018060a01b0360406000205416151590565b1561554b57828260049260ff9452600080516020616c25833981519152602052208351936155148561430e565b81546001600160a01b0316855260018201546020860152600282015490850152600381015460608501520154161515608082015290565b825162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b6044820152606490fd5b9081546001600160401b038111610dd357602092604093604051946155b160208560051b018761437a565b83865260208601926000526020600020906000935b8585106155d557505050505050565b600184819284516155e581614329565b8654848060a01b038116825260a01c838201528152019301940193916155c6565b60008181527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289360208181526040808420549294919215615653575092829161494194604094525220615586565b935050907f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2891918254926001600160401b03841161570c57916040519461569e838660051b018761437a565b8486528286019382527fa4041d101acf3009d39ef8ac90ad14bf6c598ff2cd8eba13e657a61f9865a1ee91935b8585106156db5750505050505090565b600184819284516156eb81614329565b8654848060a01b038116825260a01c838201528152019301940193916156cb565b634e487b7160e01b83526041600452602483fd5b60009080825260209060c98252604092838120338252835260ff84822054161561574a5750505050565b338451926157578461435f565b602a84528484019086368337845115615a0b5760308253845192600193600110156159f7576078602187015360295b84811161598d575061594b57865192608084018481106001600160401b03821117614bb05788526042845286840194606036873784511561593757603086538451600110156159375790607860218601536041915b8183116158c957505050615887576107f593869361586b9361585c6048946158339a519a8b957f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008c880152518092603788019061414e565b8401917001034b99036b4b9b9b4b733903937b6329607d1b60378401525180938684019061414e565b0103602881018752018561437a565b5192839262461bcd60e51b845260048401526024830190614171565b60648587519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015615923576f181899199a1a9b1b9c1cb0b131b232b360811b901a6158f98588616b5a565b5360041c92801561590f576000190191906157db565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b60648688519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b90600f811660108110156159e3576f181899199a1a9b1b9c1cb0b131b232b360811b901a6159bb8389616b5a565b5360041c9080156159cf5760001901615786565b634e487b7160e01b86526011600452602486fd5b634e487b7160e01b87526032600452602487fd5b634e487b7160e01b85526032600452602485fd5b634e487b7160e01b84526032600452602484fd5b6001600160a01b031660008181527fae9dd2dcc535af370be4014a6d4b7776c23f15bd6edc387532e3e6bbd8edcbac60205260408120549091907f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d9060ff16615a8757505050565b80835260c9602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4565b9060009180835260c9602052604083209160018060a01b03169182845260205260ff604084205416615a8757505050565b60008181527f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d289260208181526040808420549294919215615b4a575092829161494194604094525220615586565b935050907f1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d2890918254926001600160401b03841161570c579160405194615b95838660051b018761437a565b8486528286019382527fda8fae54e8f39a93d00f604d8561e99df7ed8f0c7e4aac42d41ab365ccba74c891935b858510615bd25750505050505090565b60018481928451615be281614329565b8654848060a01b038116825260a01c83820152815201930194019391615bc2565b15615c0a57565b60405162461bcd60e51b815260206004820152603260248201527f546f74616c207472616e7366657220726f79616c74792070657263656e7461676044820152716573206d75737420657175616c203130302560701b6064820152608490fd5b15615c7157565b60405162461bcd60e51b8152602060048201526013602482015272151bdad95b881a5cc81b9bdd081c995b9d1959606a1b6044820152606490fd5b6001600160601b03600080516020616ca583398151915291166001600160601b0319825416179055565b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b15615d3057565b60405162461bcd60e51b8152806107f560048201615cd6565b15615d5057565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b15615db057565b60405162461bcd60e51b815260206004820152601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b15615dfc57565b60405162461bcd60e51b815260206004820152601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b604051615e99916001600160a01b0316615e5a82614329565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1612448616164565b805190828215928315615f09575b50505015615eb25750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b615f199350820181019101614d72565b388281615ea7565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261482191614a2960648361437a565b91600080516020616ca5833981519152938454936127109081615fbb615fa26001600160601b039383615f92868c168b6144a1565b04998a806160c0575b5050615606565b9683600080516020616c658339815191525416906144a1565b049685511515806160b7575b156160915750600092835b86518110156160355783615ff6846020615fec858c6146b1565b510151168b6144a1565b0480616006575b50600101615fd2565b909460019161602e91614cdf826001600160a01b036160258b8e6146b1565b5151168b615f21565b9490615ffd565b50966149419694925061604c915092809593614c07565b9182151580616087575b616063575b505050614c14565b8261607e949592614cdf92614d2460018060a01b03916146a4565b9038808061605b565b5080511515616056565b92959694505050826160a257505050565b82614941949592614cdf925460601c90615f21565b50871515615fc7565b6160cd9160601c8a615f21565b388a615f9b565b803b1561610957600080516020616cc583398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b3d1561618f573d906161758261439b565b91616183604051938461437a565b82523d6000602084013e565b606090565b909190803b15614fa8576020604051809281630a85bd0160e11b96878252336004830152816161dd60009889938460248501526044840152608060648401526084830190614171565b03926001600160a01b03165af190829082616235575b505061622757616201616164565b805190816162225760405162461bcd60e51b8152806107f560048201615cd6565b602001fd5b6001600160e01b0319161490565b909192506020813d60201161627d575b816162526020938361437a565b810103126162795751906001600160e01b03198216820361627657509038806161f3565b80fd5b5080fd5b3d9150616245565b9290803b156162f5576162d59160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190614171565b03916000968791165af19082908261623557505061622757616201616164565b50505050600190565b1561630557565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b6001600160a01b038281169290919083158015908161675f575b61675757600090838252600080516020616c25833981519152946020968688526040968785209960ff9360049b60ff8d820154166166ba575b506001600160601b03600080516020616c6583398151915254169586151590816166b2575b506163d6575b505050505050505050505050565b620f424095808702908782040361669f57612710879104106163c8578387526101008b528987203388528b5260ff8a8820541692831561668a575b8988528b528987209160ff8d84015416948561667d575b5084616671575b505060020154908115159182616666575b5015918261665d575b5081616654575b5061645f575b808080806163c8565b8294825b633b9aca008111156165cc575b50851561652d575b50505050501561648c578080808080616456565b5162461bcd60e51b815291820152606b60248201527f526f79616c7479207061796d656e74207265717569726564206265666f72652060448201527f7472616e736665722e2055736520696e6974696174655472616e73666572576960648201527f7468526f79616c747920616e64207061795472616e73666572526f79616c747960848201526a10333ab731ba34b7b7399760a91b60a482015260c49150fd5b825b633b9aca00811115616542575b50616478565b8751898101838152606088901b6001600160601b031916602082015260006034820152604881018390529061657a8160688401612e08565b5190208552600080516020616c8583398151915289528288862054166165b8578381018091111561652f57634e487b7160e01b855260118a52602485fd5b50505050505050600138808080808061653c565b8751898101838152606088901b6001600160601b03191660208201526000603482015260488101839052906166048160688401612e08565b5190208552600080516020616c85833981519152895282888620541661664957600a90818102918183041490151761646357634e487b7160e01b855260118a52602485fd5b506001955038616470565b90501538616450565b15915038616449565b421015915038616440565b1615925060023861642f565b8354831614945038616428565b925033816166978b614604565b161492616411565b634e487b7160e01b885260118d52602488fd5b9050386163c2565b818154168514908161674c575b8115616729575b50156166da573861639d565b895162461bcd60e51b8152808d018c90526024808201527f546f6b656e206973206c6f636b656420647572696e672072656e74616c2070656044820152631c9a5bd960e21b6064820152608490fd5b338484161491508161673d575b50386166ce565b60029150015442101538616736565b8383161591506166c7565b505050505050565b506001616364565b916001600160a01b03828116929083158015616a4f575b61675757600090858252600080516020616c25833981519152966020968888526040968785209960ff9360049b60ff8d820154166169fe575b506001600160601b03600080516020616c65833981519152541695861515806169f2575b6167ef575b50505050505050505050505050565b620f42409680880290888204036169de57612710889104106167e0578c918489526101008d528b8920338a528d5260ff8c8a2054169384156169c9575b868a528d5260ff8c8a20938401541694856169bc575b50846169ac575b5050600201549081151591826169a1575b50159182616998575b508161698f575b50616879575b808080806167e0565b8395835b633b9aca00811115616928575b5086156168a8575b5050505050501561648c57808080808080616870565b835b633b9aca008111156168bd575b50616892565b88518a8101906168d481612e0885878d8a88615013565b5190208652600080516020616c858339815191528a5283898720541661691257848101809111156168aa57634e487b7160e01b865260118b52602486fd5b50505050505050506001388080808080806168b7565b88518a81019061693f81612e0885878d8a88615013565b5190208652600080516020616c858339815191528a5283898720541661698457600a90818102918183041490151761687d57634e487b7160e01b865260118b52602486fd5b50600196503861688a565b9050153861686a565b15915038616863565b42101591503861685a565b8a82169116149250600238616849565b8354831614945038616842565b935033826169d688614604565b16149361682c565b50634e487b7160e01b885260118d52602488fd5b50808a168414156167db565b8681541684149081616a41575b8115616a1e575b50156166da57386167b7565b3383891614915081616a32575b5038616a12565b60029150015442101538616a2b565b8a8816838916149150616a0b565b508083161561677e565b906001600160a01b039081169081158015616af1575b614d095782600052600080516020616c25833981519152602052604060002060048101805460ff811680616ae3575b616aaa57505050505050565b60ff191690555416917fdfd6ab3fc2a0e563c3389917592f1a850824730b5f05f16be9363c4adfc268da600080a4388080808080616757565b506002830154421015616a9e565b506001616a6f565b916001600160a01b03918216919082159082908215616b4f575b5050614d095782600052600080516020616c25833981519152602052604060002060048101805460ff811680616ae357616aaa57505050505050565b161590508138616b13565b9081518110156144c4570160200190565b91929015616bcd5750815115616b7f575090565b3b15616b885790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015616be05750805190602001fd5b60405162461bcd60e51b8152602060048201529081906107f590602483019061417156fe2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0defbf0e557c8acb6e3deb011ac697e5553b802e419ed4680395101c0ddc5e8723b19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e1aa44fcb526383bd2f7c6231f8c09a41edc5b654966336907d6f785a5b3d288f6b770677edae0e90cca492948fa872f24dbe9c82ebeb8d39118b033a5e1bd3e1de1159fbbeca73b2aca5752c42b257ca18171ae3b3d3bbf22c7938e3a961a0cb360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9d06c41780d40edbd7db829bd5119eb5f61b9cf80346346f17e157b0b6b1a8e4371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c03e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b9c60e99117f5032802dca1150f0b5e8c20c85aaaf9b6948c204e6687095705a2646970667358221220ebaf5563bb28a2b06027c5acddfcc0ce2c55820f6bc77c524e93e915563922ae64736f6c63430008180033",
"linkReferences": {},
"deployedLinkReferences": {}
}