From 8d64de35b6a3e27e25982539ed734ffe22ed9896 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 14 Jun 2023 11:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9sbt=20nft=E7=9A=84=E5=90=8D?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{SoulboundNFT.json => NFTSbt.json} | 640 +++++++++--------- contracts/tokens/erc721/NFTSbt.sol | 2 +- 2 files changed, 321 insertions(+), 321 deletions(-) rename build/contracts/{SoulboundNFT.json => NFTSbt.json} (97%) diff --git a/build/contracts/SoulboundNFT.json b/build/contracts/NFTSbt.json similarity index 97% rename from build/contracts/SoulboundNFT.json rename to build/contracts/NFTSbt.json index 58bcd2a..b253c12 100644 --- a/build/contracts/SoulboundNFT.json +++ b/build/contracts/NFTSbt.json @@ -1,5 +1,5 @@ { - "contractName": "SoulboundNFT", + "contractName": "NFTSbt", "abi": [ { "inputs": [ @@ -730,9 +730,9 @@ "type": "function" } ], - "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supplyLimt\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeBurnRole(address)\":{\"details\":\"Remove burn role to address\"},\"removeMintRole(address)\":{\"details\":\"Remove mint role to address\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBurnRole(address)\":{\"details\":\"Grant burn role to address\"},\"setMintRole(address)\":{\"details\":\"Grant mint role to address\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/NFTSbt.sol\":\"SoulboundNFT\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/NFTSbt.sol\":{\"keccak256\":\"0xb30b84bd812e353cb2a19e4a460fbc9dedbf8ee65ac2e93982491c4def6f58ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9a685bcfc7011539aaa84132e494c68d82bd6c1ee534a062bdcee673e4bf48b\",\"dweb:/ipfs/QmdWDfvM5wWgRYYVicUhVMtc11JJhhxxxN9tyqnjDEkECa\"]}},\"version\":1}", - "bytecode": "0x60a060405260405180606001604052806027815260200162004b5f60279139600b9080519060200190620000359291906200038e565b503480156200004357600080fd5b5060405162004b8638038062004b86833981810160405281019062000069919062000616565b82828160019080519060200190620000839291906200038e565b5080600290805190602001906200009c9291906200038e565b5050508060808181525050620000dc7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa226000801b6200019360201b60201c565b620001117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000801b6200019360201b60201c565b620001266000801b33620001f660201b60201c565b620001587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001f660201b60201c565b6200018a7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2233620001f660201b60201c565b50505062000715565b6000620001a6836200020c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200020882826200022b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200023d82826200031c60201b60201c565b6200031857600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002bd6200038660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200039c90620006df565b90600052602060002090601f016020900481019282620003c057600085556200040c565b82601f10620003db57805160ff19168380011785556200040c565b828001600101855582156200040c579182015b828111156200040b578251825591602001919060010190620003ee565b5b5090506200041b91906200041f565b5090565b5b808211156200043a57600081600090555060010162000420565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a7826200045c565b810181811067ffffffffffffffff82111715620004c957620004c86200046d565b5b80604052505050565b6000620004de6200043e565b9050620004ec82826200049c565b919050565b600067ffffffffffffffff8211156200050f576200050e6200046d565b5b6200051a826200045c565b9050602081019050919050565b60005b83811015620005475780820151818401526020810190506200052a565b8381111562000557576000848401525b50505050565b6000620005746200056e84620004f1565b620004d2565b90508281526020810184848401111562000593576200059262000457565b5b620005a084828562000527565b509392505050565b600082601f830112620005c057620005bf62000452565b5b8151620005d28482602086016200055d565b91505092915050565b6000819050919050565b620005f081620005db565b8114620005fc57600080fd5b50565b6000815190506200061081620005e5565b92915050565b60008060006060848603121562000632576200063162000448565b5b600084015167ffffffffffffffff8111156200065357620006526200044d565b5b6200066186828701620005a8565b935050602084015167ffffffffffffffff8111156200068557620006846200044d565b5b6200069386828701620005a8565b9250506040620006a686828701620005ff565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006f857607f821691505b602082108114156200070f576200070e620006b0565b5b50919050565b6080516144206200073f600039600081816108af01528181610da20152610dc901526144206000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612cd2565b61065f565b60405161021c9190612d1a565b60405180910390f35b61022d610671565b60405161023a9190612dce565b60405180910390f35b61025d60048036038101906102589190612e26565b610703565b60405161026a9190612e94565b60405180910390f35b61028d60048036038101906102889190612edb565b610788565b005b6102976108a0565b6040516102a49190612f2a565b60405180910390f35b6102b56108ad565b6040516102c29190612f2a565b60405180910390f35b6102e560048036038101906102e09190612f45565b6108d1565b005b61030160048036038101906102fc9190612f72565b6108fe565b005b61031d60048036038101906103189190612ffb565b61095e565b60405161032a9190613037565b60405180910390f35b61034d60048036038101906103489190613052565b61097d565b005b61036960048036038101906103649190612edb565b6109a6565b6040516103769190612f2a565b60405180910390f35b61039960048036038101906103949190612f45565b610a4b565b005b6103b560048036038101906103b09190613052565b610a78565b005b6103d160048036038101906103cc9190612f72565b610afb565b005b6103ed60048036038101906103e89190612e26565b610b1b565b005b61040960048036038101906104049190612e26565b610baa565b6040516104169190612f2a565b60405180910390f35b61043960048036038101906104349190612f45565b610c1b565b005b61045560048036038101906104509190612e26565b610c48565b6040516104629190612e94565b60405180910390f35b61048560048036038101906104809190612f45565b610cfa565b6040516104929190612f2a565b60405180910390f35b6104b560048036038101906104b09190612f45565b610e6a565b6040516104c29190612f2a565b60405180910390f35b6104e560048036038101906104e09190613052565b610f22565b6040516104f29190612d1a565b60405180910390f35b610515600480360381019061051091906130f7565b610f8c565b005b61051f610fb8565b60405161052c9190612dce565b60405180910390f35b61054f600480360381019061054a9190612f45565b61104a565b005b610559611077565b6040516105669190613037565b60405180910390f35b61058960048036038101906105849190613170565b61107e565b005b6105a560048036038101906105a091906132e0565b611094565b005b6105af6110f6565b6040516105bc9190613037565b60405180910390f35b6105df60048036038101906105da9190612e26565b61111a565b6040516105ec9190612dce565b60405180910390f35b6105fd6111c1565b60405161060a9190613037565b60405180910390f35b61062d60048036038101906106289190613052565b6111e5565b005b61064960048036038101906106449190613363565b61120e565b6040516106569190612d1a565b60405180910390f35b600061066a826112a2565b9050919050565b606060018054610680906133d2565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906133d2565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e8261131c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490613476565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613508565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611388565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611388565b61120e565b5b610891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108889061359a565b60405180910390fd5b61089b8383611390565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826111e5565b50565b61090f610909611388565b82611449565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061362c565b60405180910390fd5b610959838383611527565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611388565b61178e565b6109a1838361182b565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906136be565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613750565b60405180910390fd5b610af7828261190b565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611388565b61178e565b610b5e610b58611388565b83611449565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906137bc565b60405180910390fd5b610ba6826119ec565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061384e565b60405180910390fd5b60098281548110610c0957610c0861386e565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061390f565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611388565b61178e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061397b565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906139ca565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613a6c565b60405180910390fd5b5b6000610e4a600c611b09565b9050610e56600c611b17565b610e608482611b2d565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613afe565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611388565b61178e565b8282600b9190610fb2929190612bc3565b50505050565b606060028054610fc7906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff3906133d2565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22826111e5565b50565b6000801b81565b611090611089611388565b8383611b4b565b5050565b6110a561109f611388565b83611449565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061362c565b60405180910390fd5b6110f084848484611cb8565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606111258261131c565b611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613b90565b60405180910390fd5b600061116e611d14565b9050600081511161118e57604051806020016040528060008152506111b9565b8061119884611da6565b6040516020016111a9929190613bec565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ee8261095e565b6111ff816111fa611388565b61178e565b611209838361190b565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611315575061131482611f07565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661140383610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006114548261131c565b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613c82565b60405180910390fd5b600061149e83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061150d57508373ffffffffffffffffffffffffffffffffffffffff166114f584610703565b73ffffffffffffffffffffffffffffffffffffffff16145b8061151e575061151d818561120e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661154782610c48565b73ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613da6565b60405180910390fd5b611618838383611fe9565b611623600082611390565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116739190613dc6565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca91906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461178983838361209f565b505050565b6117988282610f22565b611827576117bd8173ffffffffffffffffffffffffffffffffffffffff1660146120a4565b6117cb8360001c60206120a4565b6040516020016117dc929190613e92565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9190612dce565b60405180910390fd5b5050565b6118358282610f22565b61190757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118ac611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119158282610f22565b156119e857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061198d611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006119f782610c48565b9050611a0581600084611fe9565b611a10600083611390565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a609190613dc6565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b058160008461209f565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611b478282604051806020016040528060008152506122e0565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f18565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cab9190612d1a565b60405180910390a3505050565b611cc3848484611527565b611ccf8484848461233b565b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613faa565b60405180910390fd5b50505050565b6060600b8054611d23906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4f906133d2565b8015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b5050505050905090565b60606000821415611dee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f02565b600082905060005b60008214611e20578080611e0990613fca565b915050600a82611e199190614042565b9150611df6565b60008167ffffffffffffffff811115611e3c57611e3b6131b5565b5b6040519080825280601f01601f191660200182016040528015611e6e5781602001600182028036833780820191505090505b5090505b60008514611efb57600182611e879190613dc6565b9150600a85611e969190614073565b6030611ea291906139ca565b60f81b818381518110611eb857611eb761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ef49190614042565b9450611e72565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fd257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fe25750611fe1826124c3565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120505750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61208f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612086906140f0565b60405180910390fd5b61209a83838361253d565b505050565b505050565b6060600060028360026120b79190614110565b6120c191906139ca565b67ffffffffffffffff8111156120da576120d96131b5565b5b6040519080825280601f01601f19166020018201604052801561210c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121445761214361386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121a8576121a761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121e89190614110565b6121f291906139ca565b90505b6001811115612292577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122345761223361386e565b5b1a60f81b82828151811061224b5761224a61386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061228b9061416a565b90506121f5565b50600084146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906141e0565b60405180910390fd5b8091505092915050565b6122ea8383612651565b6122f7600084848461233b565b612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613faa565b60405180910390fd5b505050565b600061235c8473ffffffffffffffffffffffffffffffffffffffff1661282b565b156124b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612385611388565b8786866040518563ffffffff1660e01b81526004016123a79493929190614255565b6020604051808303816000875af19250505080156123e357506040513d601f19601f820116820180604052508101906123e091906142b6565b60015b612466573d8060008114612413576040519150601f19603f3d011682016040523d82523d6000602084013e612418565b606091505b5060008151141561245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590613faa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124bb565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061253657506125358261284e565b5b9050919050565b6125488383836128b8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258b57612586816128bd565b6125ca565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125c9576125c88382612906565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260d5761260881612a73565b61264c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461264b5761264a8282612b44565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b89061432f565b60405180910390fd5b6126ca8161131c565b1561270a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127019061439b565b60405180910390fd5b61271660008383611fe9565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276691906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128276000838361209f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161291384610e6a565b61291d9190613dc6565b9050600060086000848152602001908152602001600020549050818114612a02576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612a879190613dc6565b90506000600a6000848152602001908152602001600020549050600060098381548110612ab757612ab661386e565b5b906000526020600020015490508060098381548110612ad957612ad861386e565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b2857612b276143bb565b5b6001900381819060005260206000200160009055905550505050565b6000612b4f83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b828054612bcf906133d2565b90600052602060002090601f016020900481019282612bf15760008555612c38565b82601f10612c0a57803560ff1916838001178555612c38565b82800160010185558215612c38579182015b82811115612c37578235825591602001919060010190612c1c565b5b509050612c459190612c49565b5090565b5b80821115612c62576000816000905550600101612c4a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612caf81612c7a565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612c70565b5b6000612cf684828501612cbd565b91505092915050565b60008115159050919050565b612d1481612cff565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6f578082015181840152602081019050612d54565b83811115612d7e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612da082612d35565b612daa8185612d40565b9350612dba818560208601612d51565b612dc381612d84565b840191505092915050565b60006020820190508181036000830152612de88184612d95565b905092915050565b6000819050919050565b612e0381612df0565b8114612e0e57600080fd5b50565b600081359050612e2081612dfa565b92915050565b600060208284031215612e3c57612e3b612c70565b5b6000612e4a84828501612e11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7e82612e53565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612e73565b8114612ec357600080fd5b50565b600081359050612ed581612eaf565b92915050565b60008060408385031215612ef257612ef1612c70565b5b6000612f0085828601612ec6565b9250506020612f1185828601612e11565b9150509250929050565b612f2481612df0565b82525050565b6000602082019050612f3f6000830184612f1b565b92915050565b600060208284031215612f5b57612f5a612c70565b5b6000612f6984828501612ec6565b91505092915050565b600080600060608486031215612f8b57612f8a612c70565b5b6000612f9986828701612ec6565b9350506020612faa86828701612ec6565b9250506040612fbb86828701612e11565b9150509250925092565b6000819050919050565b612fd881612fc5565b8114612fe357600080fd5b50565b600081359050612ff581612fcf565b92915050565b60006020828403121561301157613010612c70565b5b600061301f84828501612fe6565b91505092915050565b61303181612fc5565b82525050565b600060208201905061304c6000830184613028565b92915050565b6000806040838503121561306957613068612c70565b5b600061307785828601612fe6565b925050602061308885828601612ec6565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130b7576130b6613092565b5b8235905067ffffffffffffffff8111156130d4576130d3613097565b5b6020830191508360018202830111156130f0576130ef61309c565b5b9250929050565b6000806020838503121561310e5761310d612c70565b5b600083013567ffffffffffffffff81111561312c5761312b612c75565b5b613138858286016130a1565b92509250509250929050565b61314d81612cff565b811461315857600080fd5b50565b60008135905061316a81613144565b92915050565b6000806040838503121561318757613186612c70565b5b600061319585828601612ec6565b92505060206131a68582860161315b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ed82612d84565b810181811067ffffffffffffffff8211171561320c5761320b6131b5565b5b80604052505050565b600061321f612c66565b905061322b82826131e4565b919050565b600067ffffffffffffffff82111561324b5761324a6131b5565b5b61325482612d84565b9050602081019050919050565b82818337600083830152505050565b600061328361327e84613230565b613215565b90508281526020810184848401111561329f5761329e6131b0565b5b6132aa848285613261565b509392505050565b600082601f8301126132c7576132c6613092565b5b81356132d7848260208601613270565b91505092915050565b600080600080608085870312156132fa576132f9612c70565b5b600061330887828801612ec6565b945050602061331987828801612ec6565b935050604061332a87828801612e11565b925050606085013567ffffffffffffffff81111561334b5761334a612c75565b5b613357878288016132b2565b91505092959194509250565b6000806040838503121561337a57613379612c70565b5b600061338885828601612ec6565b925050602061339985828601612ec6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133ea57607f821691505b602082108114156133fe576133fd6133a3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613460602c83612d40565b915061346b82613404565b604082019050919050565b6000602082019050818103600083015261348f81613453565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f2602183612d40565b91506134fd82613496565b604082019050919050565b60006020820190508181036000830152613521816134e5565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613584603883612d40565b915061358f82613528565b604082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613616603183612d40565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006136a8602b83612d40565b91506136b38261364c565b604082019050919050565b600060208201905081810360008301526136d78161369b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061373a602f83612d40565b9150613745826136de565b604082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006137a6602083612d40565b91506137b182613770565b602082019050919050565b600060208201905081810360008301526137d581613799565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613838602c83612d40565b9150613843826137dc565b604082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138f9602983612d40565b91506139048261389d565b604082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613965601b83612d40565b91506139708261392f565b602082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139d582612df0565b91506139e083612df0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1557613a1461399b565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613a56601783612d40565b9150613a6182613a20565b602082019050919050565b60006020820190508181036000830152613a8581613a49565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613ae8602a83612d40565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b7a602f83612d40565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b600081905092915050565b6000613bc682612d35565b613bd08185613bb0565b9350613be0818560208601612d51565b80840191505092915050565b6000613bf88285613bbb565b9150613c048284613bbb565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c6c602c83612d40565b9150613c7782613c10565b604082019050919050565b60006020820190508181036000830152613c9b81613c5f565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613cfe602583612d40565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d90602483612d40565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b6000613dd182612df0565b9150613ddc83612df0565b925082821015613def57613dee61399b565b5b828203905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e30601783613bb0565b9150613e3b82613dfa565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613e7c601183613bb0565b9150613e8782613e46565b601182019050919050565b6000613e9d82613e23565b9150613ea98285613bbb565b9150613eb482613e6f565b9150613ec08284613bbb565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613f02601983612d40565b9150613f0d82613ecc565b602082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f94603283612d40565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b6000613fd582612df0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140085761400761399b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404d82612df0565b915061405883612df0565b92508261406857614067614013565b5b828204905092915050565b600061407e82612df0565b915061408983612df0565b92508261409957614098614013565b5b828206905092915050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b60006140da601683612d40565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b600061411b82612df0565b915061412683612df0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415f5761415e61399b565b5b828202905092915050565b600061417582612df0565b915060008214156141895761418861399b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006141ca602083612d40565b91506141d582614194565b602082019050919050565b600060208201905081810360008301526141f9816141bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422782614200565b614231818561420b565b9350614241818560208601612d51565b61424a81612d84565b840191505092915050565b600060808201905061426a6000830187612e85565b6142776020830186612e85565b6142846040830185612f1b565b8181036060830152614296818461421c565b905095945050505050565b6000815190506142b081612ca6565b92915050565b6000602082840312156142cc576142cb612c70565b5b60006142da848285016142a1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614319602083612d40565b9150614324826142e3565b602082019050919050565b600060208201905081810360008301526143488161430c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614385601c83612d40565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202efe6bfa025b8141bf09f0dfcb8fcfcddfd9f7ecbbd2d22c5323f761f7cd0e4e64736f6c634300080a003368747470733a2f2f6d61726b65742e636562672e67616d65732f6170692f6e66742f696e666f2f", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612cd2565b61065f565b60405161021c9190612d1a565b60405180910390f35b61022d610671565b60405161023a9190612dce565b60405180910390f35b61025d60048036038101906102589190612e26565b610703565b60405161026a9190612e94565b60405180910390f35b61028d60048036038101906102889190612edb565b610788565b005b6102976108a0565b6040516102a49190612f2a565b60405180910390f35b6102b56108ad565b6040516102c29190612f2a565b60405180910390f35b6102e560048036038101906102e09190612f45565b6108d1565b005b61030160048036038101906102fc9190612f72565b6108fe565b005b61031d60048036038101906103189190612ffb565b61095e565b60405161032a9190613037565b60405180910390f35b61034d60048036038101906103489190613052565b61097d565b005b61036960048036038101906103649190612edb565b6109a6565b6040516103769190612f2a565b60405180910390f35b61039960048036038101906103949190612f45565b610a4b565b005b6103b560048036038101906103b09190613052565b610a78565b005b6103d160048036038101906103cc9190612f72565b610afb565b005b6103ed60048036038101906103e89190612e26565b610b1b565b005b61040960048036038101906104049190612e26565b610baa565b6040516104169190612f2a565b60405180910390f35b61043960048036038101906104349190612f45565b610c1b565b005b61045560048036038101906104509190612e26565b610c48565b6040516104629190612e94565b60405180910390f35b61048560048036038101906104809190612f45565b610cfa565b6040516104929190612f2a565b60405180910390f35b6104b560048036038101906104b09190612f45565b610e6a565b6040516104c29190612f2a565b60405180910390f35b6104e560048036038101906104e09190613052565b610f22565b6040516104f29190612d1a565b60405180910390f35b610515600480360381019061051091906130f7565b610f8c565b005b61051f610fb8565b60405161052c9190612dce565b60405180910390f35b61054f600480360381019061054a9190612f45565b61104a565b005b610559611077565b6040516105669190613037565b60405180910390f35b61058960048036038101906105849190613170565b61107e565b005b6105a560048036038101906105a091906132e0565b611094565b005b6105af6110f6565b6040516105bc9190613037565b60405180910390f35b6105df60048036038101906105da9190612e26565b61111a565b6040516105ec9190612dce565b60405180910390f35b6105fd6111c1565b60405161060a9190613037565b60405180910390f35b61062d60048036038101906106289190613052565b6111e5565b005b61064960048036038101906106449190613363565b61120e565b6040516106569190612d1a565b60405180910390f35b600061066a826112a2565b9050919050565b606060018054610680906133d2565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906133d2565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e8261131c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490613476565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613508565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611388565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611388565b61120e565b5b610891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108889061359a565b60405180910390fd5b61089b8383611390565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826111e5565b50565b61090f610909611388565b82611449565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061362c565b60405180910390fd5b610959838383611527565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611388565b61178e565b6109a1838361182b565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906136be565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613750565b60405180910390fd5b610af7828261190b565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611388565b61178e565b610b5e610b58611388565b83611449565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906137bc565b60405180910390fd5b610ba6826119ec565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061384e565b60405180910390fd5b60098281548110610c0957610c0861386e565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061390f565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611388565b61178e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061397b565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906139ca565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613a6c565b60405180910390fd5b5b6000610e4a600c611b09565b9050610e56600c611b17565b610e608482611b2d565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613afe565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611388565b61178e565b8282600b9190610fb2929190612bc3565b50505050565b606060028054610fc7906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff3906133d2565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22826111e5565b50565b6000801b81565b611090611089611388565b8383611b4b565b5050565b6110a561109f611388565b83611449565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061362c565b60405180910390fd5b6110f084848484611cb8565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606111258261131c565b611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613b90565b60405180910390fd5b600061116e611d14565b9050600081511161118e57604051806020016040528060008152506111b9565b8061119884611da6565b6040516020016111a9929190613bec565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ee8261095e565b6111ff816111fa611388565b61178e565b611209838361190b565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611315575061131482611f07565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661140383610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006114548261131c565b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613c82565b60405180910390fd5b600061149e83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061150d57508373ffffffffffffffffffffffffffffffffffffffff166114f584610703565b73ffffffffffffffffffffffffffffffffffffffff16145b8061151e575061151d818561120e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661154782610c48565b73ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613da6565b60405180910390fd5b611618838383611fe9565b611623600082611390565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116739190613dc6565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca91906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461178983838361209f565b505050565b6117988282610f22565b611827576117bd8173ffffffffffffffffffffffffffffffffffffffff1660146120a4565b6117cb8360001c60206120a4565b6040516020016117dc929190613e92565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9190612dce565b60405180910390fd5b5050565b6118358282610f22565b61190757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118ac611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119158282610f22565b156119e857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061198d611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006119f782610c48565b9050611a0581600084611fe9565b611a10600083611390565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a609190613dc6565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b058160008461209f565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611b478282604051806020016040528060008152506122e0565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f18565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cab9190612d1a565b60405180910390a3505050565b611cc3848484611527565b611ccf8484848461233b565b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613faa565b60405180910390fd5b50505050565b6060600b8054611d23906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4f906133d2565b8015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b5050505050905090565b60606000821415611dee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f02565b600082905060005b60008214611e20578080611e0990613fca565b915050600a82611e199190614042565b9150611df6565b60008167ffffffffffffffff811115611e3c57611e3b6131b5565b5b6040519080825280601f01601f191660200182016040528015611e6e5781602001600182028036833780820191505090505b5090505b60008514611efb57600182611e879190613dc6565b9150600a85611e969190614073565b6030611ea291906139ca565b60f81b818381518110611eb857611eb761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ef49190614042565b9450611e72565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fd257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fe25750611fe1826124c3565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120505750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61208f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612086906140f0565b60405180910390fd5b61209a83838361253d565b505050565b505050565b6060600060028360026120b79190614110565b6120c191906139ca565b67ffffffffffffffff8111156120da576120d96131b5565b5b6040519080825280601f01601f19166020018201604052801561210c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121445761214361386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121a8576121a761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121e89190614110565b6121f291906139ca565b90505b6001811115612292577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122345761223361386e565b5b1a60f81b82828151811061224b5761224a61386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061228b9061416a565b90506121f5565b50600084146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906141e0565b60405180910390fd5b8091505092915050565b6122ea8383612651565b6122f7600084848461233b565b612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613faa565b60405180910390fd5b505050565b600061235c8473ffffffffffffffffffffffffffffffffffffffff1661282b565b156124b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612385611388565b8786866040518563ffffffff1660e01b81526004016123a79493929190614255565b6020604051808303816000875af19250505080156123e357506040513d601f19601f820116820180604052508101906123e091906142b6565b60015b612466573d8060008114612413576040519150601f19603f3d011682016040523d82523d6000602084013e612418565b606091505b5060008151141561245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590613faa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124bb565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061253657506125358261284e565b5b9050919050565b6125488383836128b8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258b57612586816128bd565b6125ca565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125c9576125c88382612906565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260d5761260881612a73565b61264c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461264b5761264a8282612b44565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b89061432f565b60405180910390fd5b6126ca8161131c565b1561270a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127019061439b565b60405180910390fd5b61271660008383611fe9565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276691906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128276000838361209f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161291384610e6a565b61291d9190613dc6565b9050600060086000848152602001908152602001600020549050818114612a02576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612a879190613dc6565b90506000600a6000848152602001908152602001600020549050600060098381548110612ab757612ab661386e565b5b906000526020600020015490508060098381548110612ad957612ad861386e565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b2857612b276143bb565b5b6001900381819060005260206000200160009055905550505050565b6000612b4f83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b828054612bcf906133d2565b90600052602060002090601f016020900481019282612bf15760008555612c38565b82601f10612c0a57803560ff1916838001178555612c38565b82800160010185558215612c38579182015b82811115612c37578235825591602001919060010190612c1c565b5b509050612c459190612c49565b5090565b5b80821115612c62576000816000905550600101612c4a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612caf81612c7a565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612c70565b5b6000612cf684828501612cbd565b91505092915050565b60008115159050919050565b612d1481612cff565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6f578082015181840152602081019050612d54565b83811115612d7e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612da082612d35565b612daa8185612d40565b9350612dba818560208601612d51565b612dc381612d84565b840191505092915050565b60006020820190508181036000830152612de88184612d95565b905092915050565b6000819050919050565b612e0381612df0565b8114612e0e57600080fd5b50565b600081359050612e2081612dfa565b92915050565b600060208284031215612e3c57612e3b612c70565b5b6000612e4a84828501612e11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7e82612e53565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612e73565b8114612ec357600080fd5b50565b600081359050612ed581612eaf565b92915050565b60008060408385031215612ef257612ef1612c70565b5b6000612f0085828601612ec6565b9250506020612f1185828601612e11565b9150509250929050565b612f2481612df0565b82525050565b6000602082019050612f3f6000830184612f1b565b92915050565b600060208284031215612f5b57612f5a612c70565b5b6000612f6984828501612ec6565b91505092915050565b600080600060608486031215612f8b57612f8a612c70565b5b6000612f9986828701612ec6565b9350506020612faa86828701612ec6565b9250506040612fbb86828701612e11565b9150509250925092565b6000819050919050565b612fd881612fc5565b8114612fe357600080fd5b50565b600081359050612ff581612fcf565b92915050565b60006020828403121561301157613010612c70565b5b600061301f84828501612fe6565b91505092915050565b61303181612fc5565b82525050565b600060208201905061304c6000830184613028565b92915050565b6000806040838503121561306957613068612c70565b5b600061307785828601612fe6565b925050602061308885828601612ec6565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130b7576130b6613092565b5b8235905067ffffffffffffffff8111156130d4576130d3613097565b5b6020830191508360018202830111156130f0576130ef61309c565b5b9250929050565b6000806020838503121561310e5761310d612c70565b5b600083013567ffffffffffffffff81111561312c5761312b612c75565b5b613138858286016130a1565b92509250509250929050565b61314d81612cff565b811461315857600080fd5b50565b60008135905061316a81613144565b92915050565b6000806040838503121561318757613186612c70565b5b600061319585828601612ec6565b92505060206131a68582860161315b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ed82612d84565b810181811067ffffffffffffffff8211171561320c5761320b6131b5565b5b80604052505050565b600061321f612c66565b905061322b82826131e4565b919050565b600067ffffffffffffffff82111561324b5761324a6131b5565b5b61325482612d84565b9050602081019050919050565b82818337600083830152505050565b600061328361327e84613230565b613215565b90508281526020810184848401111561329f5761329e6131b0565b5b6132aa848285613261565b509392505050565b600082601f8301126132c7576132c6613092565b5b81356132d7848260208601613270565b91505092915050565b600080600080608085870312156132fa576132f9612c70565b5b600061330887828801612ec6565b945050602061331987828801612ec6565b935050604061332a87828801612e11565b925050606085013567ffffffffffffffff81111561334b5761334a612c75565b5b613357878288016132b2565b91505092959194509250565b6000806040838503121561337a57613379612c70565b5b600061338885828601612ec6565b925050602061339985828601612ec6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133ea57607f821691505b602082108114156133fe576133fd6133a3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613460602c83612d40565b915061346b82613404565b604082019050919050565b6000602082019050818103600083015261348f81613453565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f2602183612d40565b91506134fd82613496565b604082019050919050565b60006020820190508181036000830152613521816134e5565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613584603883612d40565b915061358f82613528565b604082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613616603183612d40565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006136a8602b83612d40565b91506136b38261364c565b604082019050919050565b600060208201905081810360008301526136d78161369b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061373a602f83612d40565b9150613745826136de565b604082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006137a6602083612d40565b91506137b182613770565b602082019050919050565b600060208201905081810360008301526137d581613799565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613838602c83612d40565b9150613843826137dc565b604082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138f9602983612d40565b91506139048261389d565b604082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613965601b83612d40565b91506139708261392f565b602082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139d582612df0565b91506139e083612df0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1557613a1461399b565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613a56601783612d40565b9150613a6182613a20565b602082019050919050565b60006020820190508181036000830152613a8581613a49565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613ae8602a83612d40565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b7a602f83612d40565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b600081905092915050565b6000613bc682612d35565b613bd08185613bb0565b9350613be0818560208601612d51565b80840191505092915050565b6000613bf88285613bbb565b9150613c048284613bbb565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c6c602c83612d40565b9150613c7782613c10565b604082019050919050565b60006020820190508181036000830152613c9b81613c5f565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613cfe602583612d40565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d90602483612d40565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b6000613dd182612df0565b9150613ddc83612df0565b925082821015613def57613dee61399b565b5b828203905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e30601783613bb0565b9150613e3b82613dfa565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613e7c601183613bb0565b9150613e8782613e46565b601182019050919050565b6000613e9d82613e23565b9150613ea98285613bbb565b9150613eb482613e6f565b9150613ec08284613bbb565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613f02601983612d40565b9150613f0d82613ecc565b602082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f94603283612d40565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b6000613fd582612df0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140085761400761399b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404d82612df0565b915061405883612df0565b92508261406857614067614013565b5b828204905092915050565b600061407e82612df0565b915061408983612df0565b92508261409957614098614013565b5b828206905092915050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b60006140da601683612d40565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b600061411b82612df0565b915061412683612df0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415f5761415e61399b565b5b828202905092915050565b600061417582612df0565b915060008214156141895761418861399b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006141ca602083612d40565b91506141d582614194565b602082019050919050565b600060208201905081810360008301526141f9816141bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422782614200565b614231818561420b565b9350614241818560208601612d51565b61424a81612d84565b840191505092915050565b600060808201905061426a6000830187612e85565b6142776020830186612e85565b6142846040830185612f1b565b8181036060830152614296818461421c565b905095945050505050565b6000815190506142b081612ca6565b92915050565b6000602082840312156142cc576142cb612c70565b5b60006142da848285016142a1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614319602083612d40565b9150614324826142e3565b602082019050919050565b600060208201905081810360008301526143488161430c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614385601c83612d40565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212202efe6bfa025b8141bf09f0dfcb8fcfcddfd9f7ecbbd2d22c5323f761f7cd0e4e64736f6c634300080a0033", + "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_supplyLimt\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BURN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINTER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"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\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"removeMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setBurnRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"setMintRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"supplyLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":[{\"internalType\":\"string\",\"name\":\"baseTokenURI\",\"type\":\"string\"}],\"name\":\"updateBaseURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"removeBurnRole(address)\":{\"details\":\"Remove burn role to address\"},\"removeMintRole(address)\":{\"details\":\"Remove mint role to address\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setBurnRole(address)\":{\"details\":\"Grant burn role to address\"},\"setMintRole(address)\":{\"details\":\"Grant mint role to address\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"updateBaseURI(string)\":{\"details\":\"Set token URI\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/tokens/erc721/NFTSbt.sol\":\"NFTSbt\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x4a1a0ba12bf1a33f10d9fe226278cf59675c0b929d29e4da99658a079b27fb84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bda1319db846d6d6f92d8a57a9bdee8bde1dc39aa7546165791692c24dd6f30a\",\"dweb:/ipfs/Qma5oZ7DmbdAjd8mpiW7mx896PDtwsQtCQ2hj9Upf7b7JK\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x11b84bb56dc112a6590bfe3e0efa118aa1b5891132342200d04c4ef544cb93de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbc4803332d45dff58f865ed21c942fe4668e47cc7196c8dfe84102040b1d70f\",\"dweb:/ipfs/QmXhZLsocznRWCSyhjo3vo66Z1VsuuNptAVb6ASPYsWtGx\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x516a22876c1fab47f49b1bc22b4614491cd05338af8bd2e7b382da090a079990\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a439187f7126d31add4557f82d8aed6be0162007cd7182c48fd934dbab8f3849\",\"dweb:/ipfs/QmRPLguRFvrRJS7r6F1bcLvsx6q1VrgjEpZafyeL8D7xZh\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xd5fa74b4fb323776fa4a8158800fec9d5ac0fec0d6dd046dd93798632ada265f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33017a30a99cc5411a9e376622c31fc4a55cfc6a335e2f57f00cbf24a817ff3f\",\"dweb:/ipfs/QmWNQtWTPhA7Lo8nbxbc8KFMvZwbFYB8fSeEQ3vuapSV4a\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0x0a79511df8151b10b0a0004d6a76ad956582d32824af4c0f4886bdbdfe5746e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://afbedcf17f31db719e6fdc56caa8f458799c5fa2eb94cb1e94ef18f89af85768\",\"dweb:/ipfs/QmVmqRdBfbgYThpZSoAJ5o9mnAMjx8mCHHjv3Rh8cQAAg3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x32c202bd28995dd20c4347b7c6467a6d3241c74c8ad3edcbb610cd9205916c45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8179c356adb19e70d6b31a1eedc8c5c7f0c00e669e2540f4099e3844c6074d30\",\"dweb:/ipfs/QmWFbivarEobbqhS1go64ootVuHfVohBseerYy9FTEd1W2\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/tokens/erc721/NFTSbt.sol\":{\"keccak256\":\"0x2058348f1959181bbca610faa997f7ee6bac179f22ec65a8701f88699b5adacd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1084d7c54bf05104ebb93a2faaee0d0b2dd1b0fdc5f0d2d9b2a848d53308db09\",\"dweb:/ipfs/QmaKjobU4fVGNpTDfAN9eqGsjtLhzfvRFho1KFQ1HK6gJG\"]}},\"version\":1}", + "bytecode": "0x60a060405260405180606001604052806027815260200162004b5f60279139600b9080519060200190620000359291906200038e565b503480156200004357600080fd5b5060405162004b8638038062004b86833981810160405281019062000069919062000616565b82828160019080519060200190620000839291906200038e565b5080600290805190602001906200009c9291906200038e565b5050508060808181525050620000dc7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa226000801b6200019360201b60201c565b620001117f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66000801b6200019360201b60201c565b620001266000801b33620001f660201b60201c565b620001587f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001f660201b60201c565b6200018a7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2233620001f660201b60201c565b50505062000715565b6000620001a6836200020c60201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b6200020882826200022b60201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b6200023d82826200031c60201b60201c565b6200031857600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002bd6200038660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b8280546200039c90620006df565b90600052602060002090601f016020900481019282620003c057600085556200040c565b82601f10620003db57805160ff19168380011785556200040c565b828001600101855582156200040c579182015b828111156200040b578251825591602001919060010190620003ee565b5b5090506200041b91906200041f565b5090565b5b808211156200043a57600081600090555060010162000420565b5090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620004a7826200045c565b810181811067ffffffffffffffff82111715620004c957620004c86200046d565b5b80604052505050565b6000620004de6200043e565b9050620004ec82826200049c565b919050565b600067ffffffffffffffff8211156200050f576200050e6200046d565b5b6200051a826200045c565b9050602081019050919050565b60005b83811015620005475780820151818401526020810190506200052a565b8381111562000557576000848401525b50505050565b6000620005746200056e84620004f1565b620004d2565b90508281526020810184848401111562000593576200059262000457565b5b620005a084828562000527565b509392505050565b600082601f830112620005c057620005bf62000452565b5b8151620005d28482602086016200055d565b91505092915050565b6000819050919050565b620005f081620005db565b8114620005fc57600080fd5b50565b6000815190506200061081620005e5565b92915050565b60008060006060848603121562000632576200063162000448565b5b600084015167ffffffffffffffff8111156200065357620006526200044d565b5b6200066186828701620005a8565b935050602084015167ffffffffffffffff8111156200068557620006846200044d565b5b6200069386828701620005a8565b9250506040620006a686828701620005ff565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006f857607f821691505b602082108114156200070f576200070e620006b0565b5b50919050565b6080516144206200073f600039600081816108af01528181610da20152610dc901526144206000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612cd2565b61065f565b60405161021c9190612d1a565b60405180910390f35b61022d610671565b60405161023a9190612dce565b60405180910390f35b61025d60048036038101906102589190612e26565b610703565b60405161026a9190612e94565b60405180910390f35b61028d60048036038101906102889190612edb565b610788565b005b6102976108a0565b6040516102a49190612f2a565b60405180910390f35b6102b56108ad565b6040516102c29190612f2a565b60405180910390f35b6102e560048036038101906102e09190612f45565b6108d1565b005b61030160048036038101906102fc9190612f72565b6108fe565b005b61031d60048036038101906103189190612ffb565b61095e565b60405161032a9190613037565b60405180910390f35b61034d60048036038101906103489190613052565b61097d565b005b61036960048036038101906103649190612edb565b6109a6565b6040516103769190612f2a565b60405180910390f35b61039960048036038101906103949190612f45565b610a4b565b005b6103b560048036038101906103b09190613052565b610a78565b005b6103d160048036038101906103cc9190612f72565b610afb565b005b6103ed60048036038101906103e89190612e26565b610b1b565b005b61040960048036038101906104049190612e26565b610baa565b6040516104169190612f2a565b60405180910390f35b61043960048036038101906104349190612f45565b610c1b565b005b61045560048036038101906104509190612e26565b610c48565b6040516104629190612e94565b60405180910390f35b61048560048036038101906104809190612f45565b610cfa565b6040516104929190612f2a565b60405180910390f35b6104b560048036038101906104b09190612f45565b610e6a565b6040516104c29190612f2a565b60405180910390f35b6104e560048036038101906104e09190613052565b610f22565b6040516104f29190612d1a565b60405180910390f35b610515600480360381019061051091906130f7565b610f8c565b005b61051f610fb8565b60405161052c9190612dce565b60405180910390f35b61054f600480360381019061054a9190612f45565b61104a565b005b610559611077565b6040516105669190613037565b60405180910390f35b61058960048036038101906105849190613170565b61107e565b005b6105a560048036038101906105a091906132e0565b611094565b005b6105af6110f6565b6040516105bc9190613037565b60405180910390f35b6105df60048036038101906105da9190612e26565b61111a565b6040516105ec9190612dce565b60405180910390f35b6105fd6111c1565b60405161060a9190613037565b60405180910390f35b61062d60048036038101906106289190613052565b6111e5565b005b61064960048036038101906106449190613363565b61120e565b6040516106569190612d1a565b60405180910390f35b600061066a826112a2565b9050919050565b606060018054610680906133d2565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906133d2565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e8261131c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490613476565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613508565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611388565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611388565b61120e565b5b610891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108889061359a565b60405180910390fd5b61089b8383611390565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826111e5565b50565b61090f610909611388565b82611449565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061362c565b60405180910390fd5b610959838383611527565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611388565b61178e565b6109a1838361182b565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906136be565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613750565b60405180910390fd5b610af7828261190b565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611388565b61178e565b610b5e610b58611388565b83611449565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906137bc565b60405180910390fd5b610ba6826119ec565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061384e565b60405180910390fd5b60098281548110610c0957610c0861386e565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061390f565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611388565b61178e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061397b565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906139ca565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613a6c565b60405180910390fd5b5b6000610e4a600c611b09565b9050610e56600c611b17565b610e608482611b2d565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613afe565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611388565b61178e565b8282600b9190610fb2929190612bc3565b50505050565b606060028054610fc7906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff3906133d2565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22826111e5565b50565b6000801b81565b611090611089611388565b8383611b4b565b5050565b6110a561109f611388565b83611449565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061362c565b60405180910390fd5b6110f084848484611cb8565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606111258261131c565b611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613b90565b60405180910390fd5b600061116e611d14565b9050600081511161118e57604051806020016040528060008152506111b9565b8061119884611da6565b6040516020016111a9929190613bec565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ee8261095e565b6111ff816111fa611388565b61178e565b611209838361190b565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611315575061131482611f07565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661140383610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006114548261131c565b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613c82565b60405180910390fd5b600061149e83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061150d57508373ffffffffffffffffffffffffffffffffffffffff166114f584610703565b73ffffffffffffffffffffffffffffffffffffffff16145b8061151e575061151d818561120e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661154782610c48565b73ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613da6565b60405180910390fd5b611618838383611fe9565b611623600082611390565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116739190613dc6565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca91906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461178983838361209f565b505050565b6117988282610f22565b611827576117bd8173ffffffffffffffffffffffffffffffffffffffff1660146120a4565b6117cb8360001c60206120a4565b6040516020016117dc929190613e92565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9190612dce565b60405180910390fd5b5050565b6118358282610f22565b61190757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118ac611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119158282610f22565b156119e857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061198d611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006119f782610c48565b9050611a0581600084611fe9565b611a10600083611390565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a609190613dc6565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b058160008461209f565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611b478282604051806020016040528060008152506122e0565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f18565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cab9190612d1a565b60405180910390a3505050565b611cc3848484611527565b611ccf8484848461233b565b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613faa565b60405180910390fd5b50505050565b6060600b8054611d23906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4f906133d2565b8015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b5050505050905090565b60606000821415611dee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f02565b600082905060005b60008214611e20578080611e0990613fca565b915050600a82611e199190614042565b9150611df6565b60008167ffffffffffffffff811115611e3c57611e3b6131b5565b5b6040519080825280601f01601f191660200182016040528015611e6e5781602001600182028036833780820191505090505b5090505b60008514611efb57600182611e879190613dc6565b9150600a85611e969190614073565b6030611ea291906139ca565b60f81b818381518110611eb857611eb761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ef49190614042565b9450611e72565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fd257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fe25750611fe1826124c3565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120505750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61208f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612086906140f0565b60405180910390fd5b61209a83838361253d565b505050565b505050565b6060600060028360026120b79190614110565b6120c191906139ca565b67ffffffffffffffff8111156120da576120d96131b5565b5b6040519080825280601f01601f19166020018201604052801561210c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121445761214361386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121a8576121a761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121e89190614110565b6121f291906139ca565b90505b6001811115612292577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122345761223361386e565b5b1a60f81b82828151811061224b5761224a61386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061228b9061416a565b90506121f5565b50600084146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906141e0565b60405180910390fd5b8091505092915050565b6122ea8383612651565b6122f7600084848461233b565b612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613faa565b60405180910390fd5b505050565b600061235c8473ffffffffffffffffffffffffffffffffffffffff1661282b565b156124b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612385611388565b8786866040518563ffffffff1660e01b81526004016123a79493929190614255565b6020604051808303816000875af19250505080156123e357506040513d601f19601f820116820180604052508101906123e091906142b6565b60015b612466573d8060008114612413576040519150601f19603f3d011682016040523d82523d6000602084013e612418565b606091505b5060008151141561245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590613faa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124bb565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061253657506125358261284e565b5b9050919050565b6125488383836128b8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258b57612586816128bd565b6125ca565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125c9576125c88382612906565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260d5761260881612a73565b61264c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461264b5761264a8282612b44565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b89061432f565b60405180910390fd5b6126ca8161131c565b1561270a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127019061439b565b60405180910390fd5b61271660008383611fe9565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276691906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128276000838361209f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161291384610e6a565b61291d9190613dc6565b9050600060086000848152602001908152602001600020549050818114612a02576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612a879190613dc6565b90506000600a6000848152602001908152602001600020549050600060098381548110612ab757612ab661386e565b5b906000526020600020015490508060098381548110612ad957612ad861386e565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b2857612b276143bb565b5b6001900381819060005260206000200160009055905550505050565b6000612b4f83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b828054612bcf906133d2565b90600052602060002090601f016020900481019282612bf15760008555612c38565b82601f10612c0a57803560ff1916838001178555612c38565b82800160010185558215612c38579182015b82811115612c37578235825591602001919060010190612c1c565b5b509050612c459190612c49565b5090565b5b80821115612c62576000816000905550600101612c4a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612caf81612c7a565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612c70565b5b6000612cf684828501612cbd565b91505092915050565b60008115159050919050565b612d1481612cff565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6f578082015181840152602081019050612d54565b83811115612d7e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612da082612d35565b612daa8185612d40565b9350612dba818560208601612d51565b612dc381612d84565b840191505092915050565b60006020820190508181036000830152612de88184612d95565b905092915050565b6000819050919050565b612e0381612df0565b8114612e0e57600080fd5b50565b600081359050612e2081612dfa565b92915050565b600060208284031215612e3c57612e3b612c70565b5b6000612e4a84828501612e11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7e82612e53565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612e73565b8114612ec357600080fd5b50565b600081359050612ed581612eaf565b92915050565b60008060408385031215612ef257612ef1612c70565b5b6000612f0085828601612ec6565b9250506020612f1185828601612e11565b9150509250929050565b612f2481612df0565b82525050565b6000602082019050612f3f6000830184612f1b565b92915050565b600060208284031215612f5b57612f5a612c70565b5b6000612f6984828501612ec6565b91505092915050565b600080600060608486031215612f8b57612f8a612c70565b5b6000612f9986828701612ec6565b9350506020612faa86828701612ec6565b9250506040612fbb86828701612e11565b9150509250925092565b6000819050919050565b612fd881612fc5565b8114612fe357600080fd5b50565b600081359050612ff581612fcf565b92915050565b60006020828403121561301157613010612c70565b5b600061301f84828501612fe6565b91505092915050565b61303181612fc5565b82525050565b600060208201905061304c6000830184613028565b92915050565b6000806040838503121561306957613068612c70565b5b600061307785828601612fe6565b925050602061308885828601612ec6565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130b7576130b6613092565b5b8235905067ffffffffffffffff8111156130d4576130d3613097565b5b6020830191508360018202830111156130f0576130ef61309c565b5b9250929050565b6000806020838503121561310e5761310d612c70565b5b600083013567ffffffffffffffff81111561312c5761312b612c75565b5b613138858286016130a1565b92509250509250929050565b61314d81612cff565b811461315857600080fd5b50565b60008135905061316a81613144565b92915050565b6000806040838503121561318757613186612c70565b5b600061319585828601612ec6565b92505060206131a68582860161315b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ed82612d84565b810181811067ffffffffffffffff8211171561320c5761320b6131b5565b5b80604052505050565b600061321f612c66565b905061322b82826131e4565b919050565b600067ffffffffffffffff82111561324b5761324a6131b5565b5b61325482612d84565b9050602081019050919050565b82818337600083830152505050565b600061328361327e84613230565b613215565b90508281526020810184848401111561329f5761329e6131b0565b5b6132aa848285613261565b509392505050565b600082601f8301126132c7576132c6613092565b5b81356132d7848260208601613270565b91505092915050565b600080600080608085870312156132fa576132f9612c70565b5b600061330887828801612ec6565b945050602061331987828801612ec6565b935050604061332a87828801612e11565b925050606085013567ffffffffffffffff81111561334b5761334a612c75565b5b613357878288016132b2565b91505092959194509250565b6000806040838503121561337a57613379612c70565b5b600061338885828601612ec6565b925050602061339985828601612ec6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133ea57607f821691505b602082108114156133fe576133fd6133a3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613460602c83612d40565b915061346b82613404565b604082019050919050565b6000602082019050818103600083015261348f81613453565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f2602183612d40565b91506134fd82613496565b604082019050919050565b60006020820190508181036000830152613521816134e5565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613584603883612d40565b915061358f82613528565b604082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613616603183612d40565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006136a8602b83612d40565b91506136b38261364c565b604082019050919050565b600060208201905081810360008301526136d78161369b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061373a602f83612d40565b9150613745826136de565b604082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006137a6602083612d40565b91506137b182613770565b602082019050919050565b600060208201905081810360008301526137d581613799565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613838602c83612d40565b9150613843826137dc565b604082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138f9602983612d40565b91506139048261389d565b604082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613965601b83612d40565b91506139708261392f565b602082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139d582612df0565b91506139e083612df0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1557613a1461399b565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613a56601783612d40565b9150613a6182613a20565b602082019050919050565b60006020820190508181036000830152613a8581613a49565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613ae8602a83612d40565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b7a602f83612d40565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b600081905092915050565b6000613bc682612d35565b613bd08185613bb0565b9350613be0818560208601612d51565b80840191505092915050565b6000613bf88285613bbb565b9150613c048284613bbb565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c6c602c83612d40565b9150613c7782613c10565b604082019050919050565b60006020820190508181036000830152613c9b81613c5f565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613cfe602583612d40565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d90602483612d40565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b6000613dd182612df0565b9150613ddc83612df0565b925082821015613def57613dee61399b565b5b828203905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e30601783613bb0565b9150613e3b82613dfa565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613e7c601183613bb0565b9150613e8782613e46565b601182019050919050565b6000613e9d82613e23565b9150613ea98285613bbb565b9150613eb482613e6f565b9150613ec08284613bbb565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613f02601983612d40565b9150613f0d82613ecc565b602082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f94603283612d40565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b6000613fd582612df0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140085761400761399b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404d82612df0565b915061405883612df0565b92508261406857614067614013565b5b828204905092915050565b600061407e82612df0565b915061408983612df0565b92508261409957614098614013565b5b828206905092915050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b60006140da601683612d40565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b600061411b82612df0565b915061412683612df0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415f5761415e61399b565b5b828202905092915050565b600061417582612df0565b915060008214156141895761418861399b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006141ca602083612d40565b91506141d582614194565b602082019050919050565b600060208201905081810360008301526141f9816141bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422782614200565b614231818561420b565b9350614241818560208601612d51565b61424a81612d84565b840191505092915050565b600060808201905061426a6000830187612e85565b6142776020830186612e85565b6142846040830185612f1b565b8181036060830152614296818461421c565b905095945050505050565b6000815190506142b081612ca6565b92915050565b6000602082840312156142cc576142cb612c70565b5b60006142da848285016142a1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614319602083612d40565b9150614324826142e3565b602082019050919050565b600060208201905081810360008301526143488161430c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614385601c83612d40565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220801711362676915f1b2b032c7460695b1c9b3ba33ffa5c278122c77d04195c8664736f6c634300080a003368747470733a2f2f6d61726b65742e636562672e67616d65732f6170692f6e66742f696e666f2f", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063530dd0791161010f578063a217fddf116100a2578063c87b56dd11610071578063c87b56dd146105c5578063d5391393146105f5578063d547741f14610613578063e985e9c51461062f576101f0565b8063a217fddf14610551578063a22cb4651461056f578063b88d4fde1461058b578063b930908f146105a7576101f0565b806391d14854116100de57806391d14854146104cb578063931688cb146104fb57806395d89b4114610517578063965f4c6014610535576101f0565b8063530dd0791461041f5780636352211e1461043b5780636a6278421461046b57806370a082311461049b576101f0565b8063248a9ca31161018757806336568abe1161015657806336568abe1461039b57806342842e0e146103b757806342966c68146103d35780634f6ccce7146103ef576101f0565b8063248a9ca3146103035780632f2ff15d146103335780632f745c591461034f578063327ba6151461037f576101f0565b806318160ddd116101c357806318160ddd1461028f57806319d1997a146102ad5780631cf4e3ee146102cb57806323b872dd146102e7576101f0565b806301ffc9a7146101f557806306fdde0314610225578063081812fc14610243578063095ea7b314610273575b600080fd5b61020f600480360381019061020a9190612cd2565b61065f565b60405161021c9190612d1a565b60405180910390f35b61022d610671565b60405161023a9190612dce565b60405180910390f35b61025d60048036038101906102589190612e26565b610703565b60405161026a9190612e94565b60405180910390f35b61028d60048036038101906102889190612edb565b610788565b005b6102976108a0565b6040516102a49190612f2a565b60405180910390f35b6102b56108ad565b6040516102c29190612f2a565b60405180910390f35b6102e560048036038101906102e09190612f45565b6108d1565b005b61030160048036038101906102fc9190612f72565b6108fe565b005b61031d60048036038101906103189190612ffb565b61095e565b60405161032a9190613037565b60405180910390f35b61034d60048036038101906103489190613052565b61097d565b005b61036960048036038101906103649190612edb565b6109a6565b6040516103769190612f2a565b60405180910390f35b61039960048036038101906103949190612f45565b610a4b565b005b6103b560048036038101906103b09190613052565b610a78565b005b6103d160048036038101906103cc9190612f72565b610afb565b005b6103ed60048036038101906103e89190612e26565b610b1b565b005b61040960048036038101906104049190612e26565b610baa565b6040516104169190612f2a565b60405180910390f35b61043960048036038101906104349190612f45565b610c1b565b005b61045560048036038101906104509190612e26565b610c48565b6040516104629190612e94565b60405180910390f35b61048560048036038101906104809190612f45565b610cfa565b6040516104929190612f2a565b60405180910390f35b6104b560048036038101906104b09190612f45565b610e6a565b6040516104c29190612f2a565b60405180910390f35b6104e560048036038101906104e09190613052565b610f22565b6040516104f29190612d1a565b60405180910390f35b610515600480360381019061051091906130f7565b610f8c565b005b61051f610fb8565b60405161052c9190612dce565b60405180910390f35b61054f600480360381019061054a9190612f45565b61104a565b005b610559611077565b6040516105669190613037565b60405180910390f35b61058960048036038101906105849190613170565b61107e565b005b6105a560048036038101906105a091906132e0565b611094565b005b6105af6110f6565b6040516105bc9190613037565b60405180910390f35b6105df60048036038101906105da9190612e26565b61111a565b6040516105ec9190612dce565b60405180910390f35b6105fd6111c1565b60405161060a9190613037565b60405180910390f35b61062d60048036038101906106289190613052565b6111e5565b005b61064960048036038101906106449190613363565b61120e565b6040516106569190612d1a565b60405180910390f35b600061066a826112a2565b9050919050565b606060018054610680906133d2565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac906133d2565b80156106f95780601f106106ce576101008083540402835291602001916106f9565b820191906000526020600020905b8154815290600101906020018083116106dc57829003601f168201915b5050505050905090565b600061070e8261131c565b61074d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074490613476565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079382610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fb90613508565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610823611388565b73ffffffffffffffffffffffffffffffffffffffff16148061085257506108518161084c611388565b61120e565b5b610891576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108889061359a565b60405180910390fd5b61089b8383611390565b505050565b6000600980549050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6108fb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826111e5565b50565b61090f610909611388565b82611449565b61094e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109459061362c565b60405180910390fd5b610959838383611527565b505050565b6000806000838152602001908152602001600020600101549050919050565b6109868261095e565b61099781610992611388565b61178e565b6109a1838361182b565b505050565b60006109b183610e6a565b82106109f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e9906136be565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610a757fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa228261097d565b50565b610a80611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490613750565b60405180910390fd5b610af7828261190b565b5050565b610b1683838360405180602001604052806000815250611094565b505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22610b4d81610b48611388565b61178e565b610b5e610b58611388565b83611449565b610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906137bc565b60405180910390fd5b610ba6826119ec565b5050565b6000610bb46108a0565b8210610bf5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bec9061384e565b60405180910390fd5b60098281548110610c0957610c0861386e565b5b90600052602060002001549050919050565b610c457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68261097d565b50565b6000806003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce89061390f565b60405180910390fd5b80915050919050565b60007f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610d2e81610d29611388565b61178e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061397b565b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000001115610e3e577f00000000000000000000000000000000000000000000000000000000000000006001610df26108a0565b610dfc91906139ca565b1115610e3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3490613a6c565b60405180910390fd5b5b6000610e4a600c611b09565b9050610e56600c611b17565b610e608482611b2d565b8092505050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed290613afe565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b610fa181610f9c611388565b61178e565b8282600b9190610fb2929190612bc3565b50505050565b606060028054610fc7906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff3906133d2565b80156110405780601f1061101557610100808354040283529160200191611040565b820191906000526020600020905b81548152906001019060200180831161102357829003601f168201915b5050505050905090565b6110747fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22826111e5565b50565b6000801b81565b611090611089611388565b8383611b4b565b5050565b6110a561109f611388565b83611449565b6110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db9061362c565b60405180910390fd5b6110f084848484611cb8565b50505050565b7fe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa2281565b60606111258261131c565b611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115b90613b90565b60405180910390fd5b600061116e611d14565b9050600081511161118e57604051806020016040528060008152506111b9565b8061119884611da6565b6040516020016111a9929190613bec565b6040516020818303038152906040525b915050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6111ee8261095e565b6111ff816111fa611388565b61178e565b611209838361190b565b505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611315575061131482611f07565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166003600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661140383610c48565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006114548261131c565b611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a90613c82565b60405180910390fd5b600061149e83610c48565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061150d57508373ffffffffffffffffffffffffffffffffffffffff166114f584610703565b73ffffffffffffffffffffffffffffffffffffffff16145b8061151e575061151d818561120e565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661154782610c48565b73ffffffffffffffffffffffffffffffffffffffff161461159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613d14565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613da6565b60405180910390fd5b611618838383611fe9565b611623600082611390565b6001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116739190613dc6565b925050819055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ca91906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461178983838361209f565b505050565b6117988282610f22565b611827576117bd8173ffffffffffffffffffffffffffffffffffffffff1660146120a4565b6117cb8360001c60206120a4565b6040516020016117dc929190613e92565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e9190612dce565b60405180910390fd5b5050565b6118358282610f22565b61190757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118ac611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6119158282610f22565b156119e857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061198d611388565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60006119f782610c48565b9050611a0581600084611fe9565b611a10600083611390565b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a609190613dc6565b925050819055506003600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611b058160008461209f565b5050565b600081600001549050919050565b6001816000016000828254019250508190555050565b611b478282604051806020016040528060008152506122e0565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613f18565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611cab9190612d1a565b60405180910390a3505050565b611cc3848484611527565b611ccf8484848461233b565b611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590613faa565b60405180910390fd5b50505050565b6060600b8054611d23906133d2565b80601f0160208091040260200160405190810160405280929190818152602001828054611d4f906133d2565b8015611d9c5780601f10611d7157610100808354040283529160200191611d9c565b820191906000526020600020905b815481529060010190602001808311611d7f57829003601f168201915b5050505050905090565b60606000821415611dee576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611f02565b600082905060005b60008214611e20578080611e0990613fca565b915050600a82611e199190614042565b9150611df6565b60008167ffffffffffffffff811115611e3c57611e3b6131b5565b5b6040519080825280601f01601f191660200182016040528015611e6e5781602001600182028036833780820191505090505b5090505b60008514611efb57600182611e879190613dc6565b9150600a85611e969190614073565b6030611ea291906139ca565b60f81b818381518110611eb857611eb761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611ef49190614042565b9450611e72565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611fd257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611fe25750611fe1826124c3565b5b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806120505750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61208f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612086906140f0565b60405180910390fd5b61209a83838361253d565b505050565b505050565b6060600060028360026120b79190614110565b6120c191906139ca565b67ffffffffffffffff8111156120da576120d96131b5565b5b6040519080825280601f01601f19166020018201604052801561210c5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106121445761214361386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121a8576121a761386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026121e89190614110565b6121f291906139ca565b90505b6001811115612292577f3031323334353637383961626364656600000000000000000000000000000000600f8616601081106122345761223361386e565b5b1a60f81b82828151811061224b5761224a61386e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c94508061228b9061416a565b90506121f5565b50600084146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906141e0565b60405180910390fd5b8091505092915050565b6122ea8383612651565b6122f7600084848461233b565b612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613faa565b60405180910390fd5b505050565b600061235c8473ffffffffffffffffffffffffffffffffffffffff1661282b565b156124b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612385611388565b8786866040518563ffffffff1660e01b81526004016123a79493929190614255565b6020604051808303816000875af19250505080156123e357506040513d601f19601f820116820180604052508101906123e091906142b6565b60015b612466573d8060008114612413576040519150601f19603f3d011682016040523d82523d6000602084013e612418565b606091505b5060008151141561245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590613faa565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506124bb565b600190505b949350505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061253657506125358261284e565b5b9050919050565b6125488383836128b8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561258b57612586816128bd565b6125ca565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125c9576125c88382612906565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561260d5761260881612a73565b61264c565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461264b5761264a8282612b44565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156126c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b89061432f565b60405180910390fd5b6126ca8161131c565b1561270a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127019061439b565b60405180910390fd5b61271660008383611fe9565b6001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461276691906139ca565b92505081905550816003600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46128276000838361209f565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161291384610e6a565b61291d9190613dc6565b9050600060086000848152602001908152602001600020549050818114612a02576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001600980549050612a879190613dc6565b90506000600a6000848152602001908152602001600020549050600060098381548110612ab757612ab661386e565b5b906000526020600020015490508060098381548110612ad957612ad861386e565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a6000858152602001908152602001600020600090556009805480612b2857612b276143bb565b5b6001900381819060005260206000200160009055905550505050565b6000612b4f83610e6a565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b828054612bcf906133d2565b90600052602060002090601f016020900481019282612bf15760008555612c38565b82601f10612c0a57803560ff1916838001178555612c38565b82800160010185558215612c38579182015b82811115612c37578235825591602001919060010190612c1c565b5b509050612c459190612c49565b5090565b5b80821115612c62576000816000905550600101612c4a565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612caf81612c7a565b8114612cba57600080fd5b50565b600081359050612ccc81612ca6565b92915050565b600060208284031215612ce857612ce7612c70565b5b6000612cf684828501612cbd565b91505092915050565b60008115159050919050565b612d1481612cff565b82525050565b6000602082019050612d2f6000830184612d0b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d6f578082015181840152602081019050612d54565b83811115612d7e576000848401525b50505050565b6000601f19601f8301169050919050565b6000612da082612d35565b612daa8185612d40565b9350612dba818560208601612d51565b612dc381612d84565b840191505092915050565b60006020820190508181036000830152612de88184612d95565b905092915050565b6000819050919050565b612e0381612df0565b8114612e0e57600080fd5b50565b600081359050612e2081612dfa565b92915050565b600060208284031215612e3c57612e3b612c70565b5b6000612e4a84828501612e11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e7e82612e53565b9050919050565b612e8e81612e73565b82525050565b6000602082019050612ea96000830184612e85565b92915050565b612eb881612e73565b8114612ec357600080fd5b50565b600081359050612ed581612eaf565b92915050565b60008060408385031215612ef257612ef1612c70565b5b6000612f0085828601612ec6565b9250506020612f1185828601612e11565b9150509250929050565b612f2481612df0565b82525050565b6000602082019050612f3f6000830184612f1b565b92915050565b600060208284031215612f5b57612f5a612c70565b5b6000612f6984828501612ec6565b91505092915050565b600080600060608486031215612f8b57612f8a612c70565b5b6000612f9986828701612ec6565b9350506020612faa86828701612ec6565b9250506040612fbb86828701612e11565b9150509250925092565b6000819050919050565b612fd881612fc5565b8114612fe357600080fd5b50565b600081359050612ff581612fcf565b92915050565b60006020828403121561301157613010612c70565b5b600061301f84828501612fe6565b91505092915050565b61303181612fc5565b82525050565b600060208201905061304c6000830184613028565b92915050565b6000806040838503121561306957613068612c70565b5b600061307785828601612fe6565b925050602061308885828601612ec6565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126130b7576130b6613092565b5b8235905067ffffffffffffffff8111156130d4576130d3613097565b5b6020830191508360018202830111156130f0576130ef61309c565b5b9250929050565b6000806020838503121561310e5761310d612c70565b5b600083013567ffffffffffffffff81111561312c5761312b612c75565b5b613138858286016130a1565b92509250509250929050565b61314d81612cff565b811461315857600080fd5b50565b60008135905061316a81613144565b92915050565b6000806040838503121561318757613186612c70565b5b600061319585828601612ec6565b92505060206131a68582860161315b565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6131ed82612d84565b810181811067ffffffffffffffff8211171561320c5761320b6131b5565b5b80604052505050565b600061321f612c66565b905061322b82826131e4565b919050565b600067ffffffffffffffff82111561324b5761324a6131b5565b5b61325482612d84565b9050602081019050919050565b82818337600083830152505050565b600061328361327e84613230565b613215565b90508281526020810184848401111561329f5761329e6131b0565b5b6132aa848285613261565b509392505050565b600082601f8301126132c7576132c6613092565b5b81356132d7848260208601613270565b91505092915050565b600080600080608085870312156132fa576132f9612c70565b5b600061330887828801612ec6565b945050602061331987828801612ec6565b935050604061332a87828801612e11565b925050606085013567ffffffffffffffff81111561334b5761334a612c75565b5b613357878288016132b2565b91505092959194509250565b6000806040838503121561337a57613379612c70565b5b600061338885828601612ec6565b925050602061339985828601612ec6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806133ea57607f821691505b602082108114156133fe576133fd6133a3565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613460602c83612d40565b915061346b82613404565b604082019050919050565b6000602082019050818103600083015261348f81613453565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006134f2602183612d40565b91506134fd82613496565b604082019050919050565b60006020820190508181036000830152613521816134e5565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b6000613584603883612d40565b915061358f82613528565b604082019050919050565b600060208201905081810360008301526135b381613577565b9050919050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613616603183612d40565b9150613621826135ba565b604082019050919050565b6000602082019050818103600083015261364581613609565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b60006136a8602b83612d40565b91506136b38261364c565b604082019050919050565b600060208201905081810360008301526136d78161369b565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b600061373a602f83612d40565b9150613745826136de565b604082019050919050565b600060208201905081810360008301526137698161372d565b9050919050565b7f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564600082015250565b60006137a6602083612d40565b91506137b182613770565b602082019050919050565b600060208201905081810360008301526137d581613799565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000613838602c83612d40565b9150613843826137dc565b604082019050919050565b600060208201905081810360008301526138678161382b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138f9602983612d40565b91506139048261389d565b604082019050919050565b60006020820190508181036000830152613928816138ec565b9050919050565b7f43616e6e6f74206d696e7420746f207a65726f20616464726573730000000000600082015250565b6000613965601b83612d40565b91506139708261392f565b602082019050919050565b6000602082019050818103600083015261399481613958565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006139d582612df0565b91506139e083612df0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a1557613a1461399b565b5b828201905092915050565b7f4578636565642074686520746f74616c20737570706c79000000000000000000600082015250565b6000613a56601783612d40565b9150613a6182613a20565b602082019050919050565b60006020820190508181036000830152613a8581613a49565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613ae8602a83612d40565b9150613af382613a8c565b604082019050919050565b60006020820190508181036000830152613b1781613adb565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613b7a602f83612d40565b9150613b8582613b1e565b604082019050919050565b60006020820190508181036000830152613ba981613b6d565b9050919050565b600081905092915050565b6000613bc682612d35565b613bd08185613bb0565b9350613be0818560208601612d51565b80840191505092915050565b6000613bf88285613bbb565b9150613c048284613bbb565b91508190509392505050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613c6c602c83612d40565b9150613c7782613c10565b604082019050919050565b60006020820190508181036000830152613c9b81613c5f565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613cfe602583612d40565b9150613d0982613ca2565b604082019050919050565b60006020820190508181036000830152613d2d81613cf1565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613d90602483612d40565b9150613d9b82613d34565b604082019050919050565b60006020820190508181036000830152613dbf81613d83565b9050919050565b6000613dd182612df0565b9150613ddc83612df0565b925082821015613def57613dee61399b565b5b828203905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b6000613e30601783613bb0565b9150613e3b82613dfa565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b6000613e7c601183613bb0565b9150613e8782613e46565b601182019050919050565b6000613e9d82613e23565b9150613ea98285613bbb565b9150613eb482613e6f565b9150613ec08284613bbb565b91508190509392505050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000613f02601983612d40565b9150613f0d82613ecc565b602082019050919050565b60006020820190508181036000830152613f3181613ef5565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000613f94603283612d40565b9150613f9f82613f38565b604082019050919050565b60006020820190508181036000830152613fc381613f87565b9050919050565b6000613fd582612df0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156140085761400761399b565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061404d82612df0565b915061405883612df0565b92508261406857614067614013565b5b828204905092915050565b600061407e82612df0565b915061408983612df0565b92508261409957614098614013565b5b828206905092915050565b7f546f6b656e206e6f74207472616e7366657261626c6500000000000000000000600082015250565b60006140da601683612d40565b91506140e5826140a4565b602082019050919050565b60006020820190508181036000830152614109816140cd565b9050919050565b600061411b82612df0565b915061412683612df0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561415f5761415e61399b565b5b828202905092915050565b600061417582612df0565b915060008214156141895761418861399b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b60006141ca602083612d40565b91506141d582614194565b602082019050919050565b600060208201905081810360008301526141f9816141bd565b9050919050565b600081519050919050565b600082825260208201905092915050565b600061422782614200565b614231818561420b565b9350614241818560208601612d51565b61424a81612d84565b840191505092915050565b600060808201905061426a6000830187612e85565b6142776020830186612e85565b6142846040830185612f1b565b8181036060830152614296818461421c565b905095945050505050565b6000815190506142b081612ca6565b92915050565b6000602082840312156142cc576142cb612c70565b5b60006142da848285016142a1565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614319602083612d40565b9150614324826142e3565b602082019050919050565b600060208201905081810360008301526143488161430c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614385601c83612d40565b91506143908261434f565b602082019050919050565b600060208201905081810360008301526143b481614378565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220801711362676915f1b2b032c7460695b1c9b3ba33ffa5c278122c77d04195c8664736f6c634300080a0033", "immutableReferences": { "2435": [ { @@ -21799,9 +21799,9 @@ "name": "#utility.yul" } ], - "sourceMap": "249:2714:14:-:0;;;349:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;639:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;739:5;746:7;1464:5:2;1456;:13;;;;;;;;;;;;:::i;:::-;;1489:7;1479;:17;;;;;;;;;;;;:::i;:::-;;1390:113;;775:11:14::1;761:25;;;;::::0;::::1;792:44;461:22;2072:4:0;817:18:14::0;::::1;792:13;;;:44;;:::i;:::-;842:46;525:24;2072:4:0;869:18:14::0;::::1;842:13;;;:46;;:::i;:::-;895:42;2072:4:0;906:18:14::0;::::1;926:10;895;;;:42;;:::i;:::-;943:35;525:24;967:10;943;;;:35;;:::i;:::-;984:33;461:22;1006:10;984;;;:33;;:::i;:::-;639:383:::0;;;249:2714;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;6257:110::-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;2909:145::-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;249:2714:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:77::-;2762:7;2791:5;2780:16;;2725:77;;;:::o;2808:122::-;2881:24;2899:5;2881:24;:::i;:::-;2874:5;2871:35;2861:63;;2920:1;2917;2910:12;2861:63;2808:122;:::o;2936:143::-;2993:5;3024:6;3018:13;3009:22;;3040:33;3067:5;3040:33;:::i;:::-;2936:143;;;;:::o;3085:1009::-;3193:6;3201;3209;3258:2;3246:9;3237:7;3233:23;3229:32;3226:119;;;3264:79;;:::i;:::-;3226:119;3405:1;3394:9;3390:17;3384:24;3435:18;3427:6;3424:30;3421:117;;;3457:79;;:::i;:::-;3421:117;3562:74;3628:7;3619:6;3608:9;3604:22;3562:74;:::i;:::-;3552:84;;3355:291;3706:2;3695:9;3691:18;3685:25;3737:18;3729:6;3726:30;3723:117;;;3759:79;;:::i;:::-;3723:117;3864:74;3930:7;3921:6;3910:9;3906:22;3864:74;:::i;:::-;3854:84;;3656:292;3987:2;4013:64;4069:7;4060:6;4049:9;4045:22;4013:64;:::i;:::-;4003:74;;3958:129;3085:1009;;;;;:::o;4100:180::-;4148:77;4145:1;4138:88;4245:4;4242:1;4235:15;4269:4;4266:1;4259:15;4286:320;4330:6;4367:1;4361:4;4357:12;4347:22;;4414:1;4408:4;4404:12;4435:18;4425:81;;4491:4;4483:6;4479:17;4469:27;;4425:81;4553:2;4545:6;4542:14;4522:18;4519:38;4516:84;;;4572:18;;:::i;:::-;4516:84;4337:269;4286:320;;;:::o;249:2714:14:-;;;;;;;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "249:2714:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1081:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2488:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3999:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:111:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;553:36:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2613:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4726:330:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1291:253:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2749:77:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5122:179:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2232:195:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1798:230:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2480:79:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2191:235:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1845:383:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:205:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1703:138:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:102:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2880:81:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2027:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4283:153:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5367:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;425:58:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:329:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;487:62:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4502:162:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1081:208:14;1227:4;1248:36;1272:11;1248:23;:36::i;:::-;1241:43;;1081:208;;;:::o;2488:98:2:-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;4102:16;4110:7;4102;:16::i;:::-;4094:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4185:15;:24;4201:7;4185:24;;;;;;;;;;;;;;;;;;;;;4178:31;;3999:217;;;:::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;3674:11;;:2;:11;;;;3666:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3771:5;3755:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3780:37;3797:5;3804:12;:10;:12::i;:::-;3780:16;:37::i;:::-;3755:62;3734:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;1615:111:5:-;1676:7;1702:10;:17;;;;1695:24;;1615:111;:::o;553:36:14:-;;;:::o;2613:83::-;2664:27;525:24;2688:2;2664:10;:27::i;:::-;2613:83;:::o;4726:330:2:-;4915:41;4934:12;:10;:12::i;:::-;4948:7;4915:18;:41::i;:::-;4907:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;:::-;4726:330;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;1291:253:5:-;1388:7;1423:23;1440:5;1423:16;:23::i;:::-;1415:5;:31;1407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:12;:19;1524:5;1511:19;;;;;;;;;;;;;;;:26;1531:5;1511:26;;;;;;;;;;;;1504:33;;1291:253;;;;:::o;2749:77:14:-;2797:24;461:22;2818:2;2797:9;:24::i;:::-;2749:77;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;5122:179:2:-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;:::-;5122:179;;;:::o;2232:195:14:-;461:22;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2313:41:14::1;2332:12;:10;:12::i;:::-;2346:7;2313:18;:41::i;:::-;2298:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2408:14;2414:7;2408:5;:14::i;:::-;2232:195:::0;;:::o;1798:230:5:-;1873:7;1908:30;:28;:30::i;:::-;1900:5;:38;1892:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:10;2015:5;2004:17;;;;;;;;:::i;:::-;;;;;;;;;;1997:24;;1798:230;;;:::o;2480:79:14:-;2528:26;525:24;2551:2;2528:9;:26::i;:::-;2480:79;:::o;2191:235:2:-;2263:7;2282:13;2298:7;:16;2306:7;2298:16;;;;;;;;;;;;;;;;;;;;;2282:32;;2349:1;2332:19;;:5;:19;;;;2324:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2414:5;2407:12;;;2191:235;;;:::o;1845:383:14:-;1911:7;525:24;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1948:1:14::1;1934:16;;:2;:16;;;;1926:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2006:1;1992:11;:15;1988:106;;;2048:11;2042:1;2026:13;:11;:13::i;:::-;:17;;;;:::i;:::-;2025:34;;2017:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;1988:106;2099:15;2117:25;:15;:23;:25::i;:::-;2099:43;;2148:27;:15;:25;:27::i;:::-;2181:22;2191:2;2195:7;2181:9;:22::i;:::-;2216:7;2209:14;;;1845:383:::0;;;;:::o;1929:205:2:-;2001:7;2045:1;2028:19;;:5;:19;;;;2020:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:9;:16;2121:5;2111:16;;;;;;;;;;;;;;;;2104:23;;1929:205;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1703:138:14:-;2072:4:0;1782:18:14;;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1824:12:14::1;;1808:13;:28;;;;;;;:::i;:::-;;1703:138:::0;;;:::o;2650:102:2:-;2706:13;2738:7;2731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:102;:::o;2880:81:14:-;2931:25;461:22;2953:2;2931:10;:25::i;:::-;2880:81;:::o;2027:49:0:-;2072:4;2027:49;;;:::o;4283:153:2:-;4377:52;4396:12;:10;:12::i;:::-;4410:8;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;5555:12;:10;:12::i;:::-;5569:7;5536:18;:41::i;:::-;5528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;425:58:14:-;461:22;425:58;:::o;2818:329:2:-;2891:13;2924:16;2932:7;2924;:16::i;:::-;2916:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3003:21;3027:10;:8;:10::i;:::-;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;;;2818:329;;;:::o;487:62:14:-;525:24;487:62;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;4502:162:2:-;4599:4;4622:18;:25;4641:5;4622:25;;;;;;;;;;;;;;;:35;4648:8;4622:35;;;;;;;;;;;;;;;;;;;;;;;;;4615:42;;4502:162;;;;:::o;990:222:5:-;1092:4;1130:35;1115:50;;;:11;:50;;;;:90;;;;1169:36;1193:11;1169:23;:36::i;:::-;1115:90;1108:97;;990:222;;;:::o;7159:125:2:-;7224:4;7275:1;7247:30;;:7;:16;7255:7;7247:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7240:37;;7159:125;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;11168:171:2:-;11269:2;11242:15;:24;11258:7;11242:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11324:7;11320:2;11286:46;;11295:23;11310:7;11295:14;:23::i;:::-;11286:46;;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7559:16;7567:7;7559;:16::i;:::-;7551:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;7691:16;;:7;:16;;;:51;;;;7735:7;7711:31;;:20;7723:7;7711:11;:20::i;:::-;:31;;;7691:51;:87;;;;7746:32;7763:5;7770:7;7746:16;:32::i;:::-;7691:87;7683:96;;;7442:344;;;;:::o;10452:605::-;10606:4;10579:31;;:23;10594:7;10579:14;:23::i;:::-;:31;;;10571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:1;10670:16;;:2;:16;;;;10662:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:39;10759:4;10765:2;10769:7;10738:20;:39::i;:::-;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;10898:1;10879:9;:15;10889:4;10879:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;10926:1;10909:9;:13;10919:2;10909:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10956:2;10937:7;:16;10945:7;10937:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10993:7;10989:2;10974:27;;10983:4;10974:27;;;;;;;;;;;;11012:38;11032:4;11038:2;11042:7;11012:19;:38::i;:::-;10452:605;;;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7219:234::-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;9722:406:2:-;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9831:48;9852:5;9867:1;9871:7;9831:20;:48::i;:::-;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;9977:1;9957:9;:16;9967:5;9957:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;9995:7;:16;10003:7;9995:16;;;;;;;;;;;;9988:23;;;;;;;;;;;10055:7;10051:1;10027:36;;10036:5;10027:36;;;;;;;;;;;;10074:47;10094:5;10109:1;10113:7;10074:19;:47::i;:::-;9771:357;9722:406;:::o;827:112:10:-;892:7;918;:14;;;911:21;;827:112;;;:::o;945:123::-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;8116:108:2:-;8191:26;8201:2;8205:7;8191:26;;;;;;;;;;;;:9;:26::i;:::-;8116:108;;:::o;11474:307::-;11624:8;11615:17;;:5;:17;;;;11607:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:8;11672:18;:25;11691:5;11672:25;;;;;;;;;;;;;;;:35;11698:8;11672:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11755:8;11733:41;;11748:5;11733:41;;;11765:8;11733:41;;;;;;:::i;:::-;;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6549:307;;;;:::o;1557:106:14:-;1617:13;1645;1638:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1557:106;:::o;328:703:11:-;384:13;610:1;601:5;:10;597:51;;;627:10;;;;;;;;;;;;;;;;;;;;;597:51;657:12;672:5;657:20;;687:14;711:75;726:1;718:4;:9;711:75;;743:8;;;;;:::i;:::-;;;;773:2;765:10;;;;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;795:39;;844:150;860:1;851:5;:10;844:150;;887:1;877:11;;;;;:::i;:::-;;;953:2;945:5;:10;;;;:::i;:::-;932:2;:24;;;;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;981:2;972:11;;;;;:::i;:::-;;;844:150;;;1017:6;1003:21;;;;;328:703;;;;:::o;1570:300:2:-;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;1293:260:14:-;1448:1;1432:18;;:4;:18;;;:38;;;;1468:1;1454:16;;:2;:16;;;1432:38;1424:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1503:45;1530:4;1536:2;1540:7;1503:26;:45::i;:::-;1293:260;;;:::o;14162:121:2:-;;;;:::o;1588:441:11:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;8445:311:2:-;8570:18;8576:2;8580:7;8570:5;:18::i;:::-;8619:54;8650:1;8654:2;8658:7;8667:5;8619:22;:54::i;:::-;8598:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:311;;;:::o;12334:778::-;12484:4;12504:15;:2;:13;;;:15::i;:::-;12500:606;;;12555:2;12539:36;;;12576:12;:10;:12::i;:::-;12590:4;12596:7;12605:5;12539:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12795:1;12778:6;:13;:18;12774:266;;;12820:60;;;;;;;;;;:::i;:::-;;;;;;;;12774:266;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12671:41;;;12661:51;;;:6;:51;;;;12654:58;;;;;12500:606;13091:4;13084:11;;12334:778;;;;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;2624:572:5:-;2763:45;2790:4;2796:2;2800:7;2763:26;:45::i;:::-;2839:1;2823:18;;:4;:18;;;2819:183;;;2857:40;2889:7;2857:31;:40::i;:::-;2819:183;;;2926:2;2918:10;;:4;:10;;;2914:88;;2944:47;2977:4;2983:7;2944:32;:47::i;:::-;2914:88;2819:183;3029:1;3015:16;;:2;:16;;;3011:179;;;3047:45;3084:7;3047:36;:45::i;:::-;3011:179;;;3119:4;3113:10;;:2;:10;;;3109:81;;3139:40;3167:2;3171:7;3139:27;:40::i;:::-;3109:81;3011:179;2624:572;;;:::o;9078:427:2:-;9171:1;9157:16;;:2;:16;;;;9149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:16;9237:7;9229;:16::i;:::-;9228:17;9220:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9289:45;9318:1;9322:2;9326:7;9289:20;:45::i;:::-;9362:1;9345:9;:13;9355:2;9345:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9392:2;9373:7;:16;9381:7;9373:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9435:7;9431:2;9410:33;;9427:1;9410:33;;;;;;;;;;;;9454:44;9482:1;9486:2;9490:7;9454:19;:44::i;:::-;9078:427;;:::o;1175:320:8:-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;829:155:12:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;13668:122:2:-;;;;:::o;3902:161:5:-;4005:10;:17;;;;3978:15;:24;3994:7;3978:24;;;;;;;;;;;:44;;;;4032:10;4048:7;4032:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:161;:::o;4680:970::-;4942:22;4992:1;4967:22;4984:4;4967:16;:22::i;:::-;:26;;;;:::i;:::-;4942:51;;5003:18;5024:17;:26;5042:7;5024:26;;;;;;;;;;;;5003:47;;5168:14;5154:10;:28;5150:323;;5198:19;5220:12;:18;5233:4;5220:18;;;;;;;;;;;;;;;:34;5239:14;5220:34;;;;;;;;;;;;5198:56;;5302:11;5269:12;:18;5282:4;5269:18;;;;;;;;;;;;;;;:30;5288:10;5269:30;;;;;;;;;;;:44;;;;5418:10;5385:17;:30;5403:11;5385:30;;;;;;;;;;;:43;;;;5184:289;5150:323;5566:17;:26;5584:7;5566:26;;;;;;;;;;;5559:33;;;5609:12;:18;5622:4;5609:18;;;;;;;;;;;;;;;:34;5628:14;5609:34;;;;;;;;;;;5602:41;;;4761:889;;4680:970;;:::o;5938:1061::-;6187:22;6232:1;6212:10;:17;;;;:21;;;;:::i;:::-;6187:46;;6243:18;6264:15;:24;6280:7;6264:24;;;;;;;;;;;;6243:45;;6610:19;6632:10;6643:14;6632:26;;;;;;;;:::i;:::-;;;;;;;;;;6610:48;;6694:11;6669:10;6680;6669:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6804:10;6773:15;:28;6789:11;6773:28;;;;;;;;;;;:41;;;;6942:15;:24;6958:7;6942:24;;;;;;;;;;;6935:31;;;6976:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6009:990;;;5938:1061;:::o;3490:217::-;3574:14;3591:20;3608:2;3591:16;:20::i;:::-;3574:37;;3648:7;3621:12;:16;3634:2;3621:16;;;;;;;;;;;;;;;:24;3638:6;3621:24;;;;;;;;;;;:34;;;;3694:6;3665:17;:26;3683:7;3665:26;;;;;;;;;;;:35;;;;3564:143;3490:217;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:329::-;5349:6;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5290:329;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:77::-;6287:7;6316:5;6305:16;;6250:77;;;:::o;6333:122::-;6406:24;6424:5;6406:24;:::i;:::-;6399:5;6396:35;6386:63;;6445:1;6442;6435:12;6386:63;6333:122;:::o;6461:139::-;6507:5;6545:6;6532:20;6523:29;;6561:33;6588:5;6561:33;:::i;:::-;6461:139;;;;:::o;6606:329::-;6665:6;6714:2;6702:9;6693:7;6689:23;6685:32;6682:119;;;6720:79;;:::i;:::-;6682:119;6840:1;6865:53;6910:7;6901:6;6890:9;6886:22;6865:53;:::i;:::-;6855:63;;6811:117;6606:329;;;;:::o;6941:118::-;7028:24;7046:5;7028:24;:::i;:::-;7023:3;7016:37;6941:118;;:::o;7065:222::-;7158:4;7196:2;7185:9;7181:18;7173:26;;7209:71;7277:1;7266:9;7262:17;7253:6;7209:71;:::i;:::-;7065:222;;;;:::o;7293:474::-;7361:6;7369;7418:2;7406:9;7397:7;7393:23;7389:32;7386:119;;;7424:79;;:::i;:::-;7386:119;7544:1;7569:53;7614:7;7605:6;7594:9;7590:22;7569:53;:::i;:::-;7559:63;;7515:117;7671:2;7697:53;7742:7;7733:6;7722:9;7718:22;7697:53;:::i;:::-;7687:63;;7642:118;7293:474;;;;;:::o;7773:117::-;7882:1;7879;7872:12;7896:117;8005:1;8002;7995:12;8019:117;8128:1;8125;8118:12;8156:553;8214:8;8224:6;8274:3;8267:4;8259:6;8255:17;8251:27;8241:122;;8282:79;;:::i;:::-;8241:122;8395:6;8382:20;8372:30;;8425:18;8417:6;8414:30;8411:117;;;8447:79;;:::i;:::-;8411:117;8561:4;8553:6;8549:17;8537:29;;8615:3;8607:4;8599:6;8595:17;8585:8;8581:32;8578:41;8575:128;;;8622:79;;:::i;:::-;8575:128;8156:553;;;;;:::o;8715:529::-;8786:6;8794;8843:2;8831:9;8822:7;8818:23;8814:32;8811:119;;;8849:79;;:::i;:::-;8811:119;8997:1;8986:9;8982:17;8969:31;9027:18;9019:6;9016:30;9013:117;;;9049:79;;:::i;:::-;9013:117;9162:65;9219:7;9210:6;9199:9;9195:22;9162:65;:::i;:::-;9144:83;;;;8940:297;8715:529;;;;;:::o;9250:116::-;9320:21;9335:5;9320:21;:::i;:::-;9313:5;9310:32;9300:60;;9356:1;9353;9346:12;9300:60;9250:116;:::o;9372:133::-;9415:5;9453:6;9440:20;9431:29;;9469:30;9493:5;9469:30;:::i;:::-;9372:133;;;;:::o;9511:468::-;9576:6;9584;9633:2;9621:9;9612:7;9608:23;9604:32;9601:119;;;9639:79;;:::i;:::-;9601:119;9759:1;9784:53;9829:7;9820:6;9809:9;9805:22;9784:53;:::i;:::-;9774:63;;9730:117;9886:2;9912:50;9954:7;9945:6;9934:9;9930:22;9912:50;:::i;:::-;9902:60;;9857:115;9511:468;;;;;:::o;9985:117::-;10094:1;10091;10084:12;10108:180;10156:77;10153:1;10146:88;10253:4;10250:1;10243:15;10277:4;10274:1;10267:15;10294:281;10377:27;10399:4;10377:27;:::i;:::-;10369:6;10365:40;10507:6;10495:10;10492:22;10471:18;10459:10;10456:34;10453:62;10450:88;;;10518:18;;:::i;:::-;10450:88;10558:10;10554:2;10547:22;10337:238;10294:281;;:::o;10581:129::-;10615:6;10642:20;;:::i;:::-;10632:30;;10671:33;10699:4;10691:6;10671:33;:::i;:::-;10581:129;;;:::o;10716:307::-;10777:4;10867:18;10859:6;10856:30;10853:56;;;10889:18;;:::i;:::-;10853:56;10927:29;10949:6;10927:29;:::i;:::-;10919:37;;11011:4;11005;11001:15;10993:23;;10716:307;;;:::o;11029:154::-;11113:6;11108:3;11103;11090:30;11175:1;11166:6;11161:3;11157:16;11150:27;11029:154;;;:::o;11189:410::-;11266:5;11291:65;11307:48;11348:6;11307:48;:::i;:::-;11291:65;:::i;:::-;11282:74;;11379:6;11372:5;11365:21;11417:4;11410:5;11406:16;11455:3;11446:6;11441:3;11437:16;11434:25;11431:112;;;11462:79;;:::i;:::-;11431:112;11552:41;11586:6;11581:3;11576;11552:41;:::i;:::-;11272:327;11189:410;;;;;:::o;11618:338::-;11673:5;11722:3;11715:4;11707:6;11703:17;11699:27;11689:122;;11730:79;;:::i;:::-;11689:122;11847:6;11834:20;11872:78;11946:3;11938:6;11931:4;11923:6;11919:17;11872:78;:::i;:::-;11863:87;;11679:277;11618:338;;;;:::o;11962:943::-;12057:6;12065;12073;12081;12130:3;12118:9;12109:7;12105:23;12101:33;12098:120;;;12137:79;;:::i;:::-;12098:120;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12512:2;12538:53;12583:7;12574:6;12563:9;12559:22;12538:53;:::i;:::-;12528:63;;12483:118;12668:2;12657:9;12653:18;12640:32;12699:18;12691:6;12688:30;12685:117;;;12721:79;;:::i;:::-;12685:117;12826:62;12880:7;12871:6;12860:9;12856:22;12826:62;:::i;:::-;12816:72;;12611:287;11962:943;;;;;;;:::o;12911:474::-;12979:6;12987;13036:2;13024:9;13015:7;13011:23;13007:32;13004:119;;;13042:79;;:::i;:::-;13004:119;13162:1;13187:53;13232:7;13223:6;13212:9;13208:22;13187:53;:::i;:::-;13177:63;;13133:117;13289:2;13315:53;13360:7;13351:6;13340:9;13336:22;13315:53;:::i;:::-;13305:63;;13260:118;12911:474;;;;;:::o;13391:180::-;13439:77;13436:1;13429:88;13536:4;13533:1;13526:15;13560:4;13557:1;13550:15;13577:320;13621:6;13658:1;13652:4;13648:12;13638:22;;13705:1;13699:4;13695:12;13726:18;13716:81;;13782:4;13774:6;13770:17;13760:27;;13716:81;13844:2;13836:6;13833:14;13813:18;13810:38;13807:84;;;13863:18;;:::i;:::-;13807:84;13628:269;13577:320;;;:::o;13903:231::-;14043:34;14039:1;14031:6;14027:14;14020:58;14112:14;14107:2;14099:6;14095:15;14088:39;13903:231;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:220::-;15077:34;15073:1;15065:6;15061:14;15054:58;15146:3;15141:2;15133:6;15129:15;15122:28;14937:220;:::o;15163:366::-;15305:3;15326:67;15390:2;15385:3;15326:67;:::i;:::-;15319:74;;15402:93;15491:3;15402:93;:::i;:::-;15520:2;15515:3;15511:12;15504:19;;15163:366;;;:::o;15535:419::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15788:9;15782:4;15778:20;15774:1;15763:9;15759:17;15752:47;15816:131;15942:4;15816:131;:::i;:::-;15808:139;;15535:419;;;:::o;15960:243::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:26;16164:2;16156:6;16152:15;16145:51;15960:243;:::o;16209:366::-;16351:3;16372:67;16436:2;16431:3;16372:67;:::i;:::-;16365:74;;16448:93;16537:3;16448:93;:::i;:::-;16566:2;16561:3;16557:12;16550:19;;16209:366;;;:::o;16581:419::-;16747:4;16785:2;16774:9;16770:18;16762:26;;16834:9;16828:4;16824:20;16820:1;16809:9;16805:17;16798:47;16862:131;16988:4;16862:131;:::i;:::-;16854:139;;16581:419;;;:::o;17006:236::-;17146:34;17142:1;17134:6;17130:14;17123:58;17215:19;17210:2;17202:6;17198:15;17191:44;17006:236;:::o;17248:366::-;17390:3;17411:67;17475:2;17470:3;17411:67;:::i;:::-;17404:74;;17487:93;17576:3;17487:93;:::i;:::-;17605:2;17600:3;17596:12;17589:19;;17248:366;;;:::o;17620:419::-;17786:4;17824:2;17813:9;17809:18;17801:26;;17873:9;17867:4;17863:20;17859:1;17848:9;17844:17;17837:47;17901:131;18027:4;17901:131;:::i;:::-;17893:139;;17620:419;;;:::o;18045:230::-;18185:34;18181:1;18173:6;18169:14;18162:58;18254:13;18249:2;18241:6;18237:15;18230:38;18045:230;:::o;18281:366::-;18423:3;18444:67;18508:2;18503:3;18444:67;:::i;:::-;18437:74;;18520:93;18609:3;18520:93;:::i;:::-;18638:2;18633:3;18629:12;18622:19;;18281:366;;;:::o;18653:419::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:234::-;19218:34;19214:1;19206:6;19202:14;19195:58;19287:17;19282:2;19274:6;19270:15;19263:42;19078:234;:::o;19318:366::-;19460:3;19481:67;19545:2;19540:3;19481:67;:::i;:::-;19474:74;;19557:93;19646:3;19557:93;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19318:366;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19690:419;;;:::o;20115:182::-;20255:34;20251:1;20243:6;20239:14;20232:58;20115:182;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:231::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:14;21304:2;21296:6;21292:15;21285:39;21100:231;:::o;21337:366::-;21479:3;21500:67;21564:2;21559:3;21500:67;:::i;:::-;21493:74;;21576:93;21665:3;21576:93;:::i;:::-;21694:2;21689:3;21685:12;21678:19;;21337:366;;;:::o;21709:419::-;21875:4;21913:2;21902:9;21898:18;21890:26;;21962:9;21956:4;21952:20;21948:1;21937:9;21933:17;21926:47;21990:131;22116:4;21990:131;:::i;:::-;21982:139;;21709:419;;;:::o;22134:180::-;22182:77;22179:1;22172:88;22279:4;22276:1;22269:15;22303:4;22300:1;22293:15;22320:228;22460:34;22456:1;22448:6;22444:14;22437:58;22529:11;22524:2;22516:6;22512:15;22505:36;22320:228;:::o;22554:366::-;22696:3;22717:67;22781:2;22776:3;22717:67;:::i;:::-;22710:74;;22793:93;22882:3;22793:93;:::i;:::-;22911:2;22906:3;22902:12;22895:19;;22554:366;;;:::o;22926:419::-;23092:4;23130:2;23119:9;23115:18;23107:26;;23179:9;23173:4;23169:20;23165:1;23154:9;23150:17;23143:47;23207:131;23333:4;23207:131;:::i;:::-;23199:139;;22926:419;;;:::o;23351:177::-;23491:29;23487:1;23479:6;23475:14;23468:53;23351:177;:::o;23534:366::-;23676:3;23697:67;23761:2;23756:3;23697:67;:::i;:::-;23690:74;;23773:93;23862:3;23773:93;:::i;:::-;23891:2;23886:3;23882:12;23875:19;;23534:366;;;:::o;23906:419::-;24072:4;24110:2;24099:9;24095:18;24087:26;;24159:9;24153:4;24149:20;24145:1;24134:9;24130:17;24123:47;24187:131;24313:4;24187:131;:::i;:::-;24179:139;;23906:419;;;:::o;24331:180::-;24379:77;24376:1;24369:88;24476:4;24473:1;24466:15;24500:4;24497:1;24490:15;24517:305;24557:3;24576:20;24594:1;24576:20;:::i;:::-;24571:25;;24610:20;24628:1;24610:20;:::i;:::-;24605:25;;24764:1;24696:66;24692:74;24689:1;24686:81;24683:107;;;24770:18;;:::i;:::-;24683:107;24814:1;24811;24807:9;24800:16;;24517:305;;;;:::o;24828:173::-;24968:25;24964:1;24956:6;24952:14;24945:49;24828:173;:::o;25007:366::-;25149:3;25170:67;25234:2;25229:3;25170:67;:::i;:::-;25163:74;;25246:93;25335:3;25246:93;:::i;:::-;25364:2;25359:3;25355:12;25348:19;;25007:366;;;:::o;25379:419::-;25545:4;25583:2;25572:9;25568:18;25560:26;;25632:9;25626:4;25622:20;25618:1;25607:9;25603:17;25596:47;25660:131;25786:4;25660:131;:::i;:::-;25652:139;;25379:419;;;:::o;25804:229::-;25944:34;25940:1;25932:6;25928:14;25921:58;26013:12;26008:2;26000:6;25996:15;25989:37;25804:229;:::o;26039:366::-;26181:3;26202:67;26266:2;26261:3;26202:67;:::i;:::-;26195:74;;26278:93;26367:3;26278:93;:::i;:::-;26396:2;26391:3;26387:12;26380:19;;26039:366;;;:::o;26411:419::-;26577:4;26615:2;26604:9;26600:18;26592:26;;26664:9;26658:4;26654:20;26650:1;26639:9;26635:17;26628:47;26692:131;26818:4;26692:131;:::i;:::-;26684:139;;26411:419;;;:::o;26836:234::-;26976:34;26972:1;26964:6;26960:14;26953:58;27045:17;27040:2;27032:6;27028:15;27021:42;26836:234;:::o;27076:366::-;27218:3;27239:67;27303:2;27298:3;27239:67;:::i;:::-;27232:74;;27315:93;27404:3;27315:93;:::i;:::-;27433:2;27428:3;27424:12;27417:19;;27076:366;;;:::o;27448:419::-;27614:4;27652:2;27641:9;27637:18;27629:26;;27701:9;27695:4;27691:20;27687:1;27676:9;27672:17;27665:47;27729:131;27855:4;27729:131;:::i;:::-;27721:139;;27448:419;;;:::o;27873:148::-;27975:11;28012:3;27997:18;;27873:148;;;;:::o;28027:377::-;28133:3;28161:39;28194:5;28161:39;:::i;:::-;28216:89;28298:6;28293:3;28216:89;:::i;:::-;28209:96;;28314:52;28359:6;28354:3;28347:4;28340:5;28336:16;28314:52;:::i;:::-;28391:6;28386:3;28382:16;28375:23;;28137:267;28027:377;;;;:::o;28410:435::-;28590:3;28612:95;28703:3;28694:6;28612:95;:::i;:::-;28605:102;;28724:95;28815:3;28806:6;28724:95;:::i;:::-;28717:102;;28836:3;28829:10;;28410:435;;;;;:::o;28851:231::-;28991:34;28987:1;28979:6;28975:14;28968:58;29060:14;29055:2;29047:6;29043:15;29036:39;28851:231;:::o;29088:366::-;29230:3;29251:67;29315:2;29310:3;29251:67;:::i;:::-;29244:74;;29327:93;29416:3;29327:93;:::i;:::-;29445:2;29440:3;29436:12;29429:19;;29088:366;;;:::o;29460:419::-;29626:4;29664:2;29653:9;29649:18;29641:26;;29713:9;29707:4;29703:20;29699:1;29688:9;29684:17;29677:47;29741:131;29867:4;29741:131;:::i;:::-;29733:139;;29460:419;;;:::o;29885:224::-;30025:34;30021:1;30013:6;30009:14;30002:58;30094:7;30089:2;30081:6;30077:15;30070:32;29885:224;:::o;30115:366::-;30257:3;30278:67;30342:2;30337:3;30278:67;:::i;:::-;30271:74;;30354:93;30443:3;30354:93;:::i;:::-;30472:2;30467:3;30463:12;30456:19;;30115:366;;;:::o;30487:419::-;30653:4;30691:2;30680:9;30676:18;30668:26;;30740:9;30734:4;30730:20;30726:1;30715:9;30711:17;30704:47;30768:131;30894:4;30768:131;:::i;:::-;30760:139;;30487:419;;;:::o;30912:223::-;31052:34;31048:1;31040:6;31036:14;31029:58;31121:6;31116:2;31108:6;31104:15;31097:31;30912:223;:::o;31141:366::-;31283:3;31304:67;31368:2;31363:3;31304:67;:::i;:::-;31297:74;;31380:93;31469:3;31380:93;:::i;:::-;31498:2;31493:3;31489:12;31482:19;;31141:366;;;:::o;31513:419::-;31679:4;31717:2;31706:9;31702:18;31694:26;;31766:9;31760:4;31756:20;31752:1;31741:9;31737:17;31730:47;31794:131;31920:4;31794:131;:::i;:::-;31786:139;;31513:419;;;:::o;31938:191::-;31978:4;31998:20;32016:1;31998:20;:::i;:::-;31993:25;;32032:20;32050:1;32032:20;:::i;:::-;32027:25;;32071:1;32068;32065:8;32062:34;;;32076:18;;:::i;:::-;32062:34;32121:1;32118;32114:9;32106:17;;31938:191;;;;:::o;32135:173::-;32275:25;32271:1;32263:6;32259:14;32252:49;32135:173;:::o;32314:402::-;32474:3;32495:85;32577:2;32572:3;32495:85;:::i;:::-;32488:92;;32589:93;32678:3;32589:93;:::i;:::-;32707:2;32702:3;32698:12;32691:19;;32314:402;;;:::o;32722:167::-;32862:19;32858:1;32850:6;32846:14;32839:43;32722:167;:::o;32895:402::-;33055:3;33076:85;33158:2;33153:3;33076:85;:::i;:::-;33069:92;;33170:93;33259:3;33170:93;:::i;:::-;33288:2;33283:3;33279:12;33272:19;;32895:402;;;:::o;33303:967::-;33685:3;33707:148;33851:3;33707:148;:::i;:::-;33700:155;;33872:95;33963:3;33954:6;33872:95;:::i;:::-;33865:102;;33984:148;34128:3;33984:148;:::i;:::-;33977:155;;34149:95;34240:3;34231:6;34149:95;:::i;:::-;34142:102;;34261:3;34254:10;;33303:967;;;;;:::o;34276:175::-;34416:27;34412:1;34404:6;34400:14;34393:51;34276:175;:::o;34457:366::-;34599:3;34620:67;34684:2;34679:3;34620:67;:::i;:::-;34613:74;;34696:93;34785:3;34696:93;:::i;:::-;34814:2;34809:3;34805:12;34798:19;;34457:366;;;:::o;34829:419::-;34995:4;35033:2;35022:9;35018:18;35010:26;;35082:9;35076:4;35072:20;35068:1;35057:9;35053:17;35046:47;35110:131;35236:4;35110:131;:::i;:::-;35102:139;;34829:419;;;:::o;35254:237::-;35394:34;35390:1;35382:6;35378:14;35371:58;35463:20;35458:2;35450:6;35446:15;35439:45;35254:237;:::o;35497:366::-;35639:3;35660:67;35724:2;35719:3;35660:67;:::i;:::-;35653:74;;35736:93;35825:3;35736:93;:::i;:::-;35854:2;35849:3;35845:12;35838:19;;35497:366;;;:::o;35869:419::-;36035:4;36073:2;36062:9;36058:18;36050:26;;36122:9;36116:4;36112:20;36108:1;36097:9;36093:17;36086:47;36150:131;36276:4;36150:131;:::i;:::-;36142:139;;35869:419;;;:::o;36294:233::-;36333:3;36356:24;36374:5;36356:24;:::i;:::-;36347:33;;36402:66;36395:5;36392:77;36389:103;;;36472:18;;:::i;:::-;36389:103;36519:1;36512:5;36508:13;36501:20;;36294:233;;;:::o;36533:180::-;36581:77;36578:1;36571:88;36678:4;36675:1;36668:15;36702:4;36699:1;36692:15;36719:185;36759:1;36776:20;36794:1;36776:20;:::i;:::-;36771:25;;36810:20;36828:1;36810:20;:::i;:::-;36805:25;;36849:1;36839:35;;36854:18;;:::i;:::-;36839:35;36896:1;36893;36889:9;36884:14;;36719:185;;;;:::o;36910:176::-;36942:1;36959:20;36977:1;36959:20;:::i;:::-;36954:25;;36993:20;37011:1;36993:20;:::i;:::-;36988:25;;37032:1;37022:35;;37037:18;;:::i;:::-;37022:35;37078:1;37075;37071:9;37066:14;;36910:176;;;;:::o;37092:172::-;37232:24;37228:1;37220:6;37216:14;37209:48;37092:172;:::o;37270:366::-;37412:3;37433:67;37497:2;37492:3;37433:67;:::i;:::-;37426:74;;37509:93;37598:3;37509:93;:::i;:::-;37627:2;37622:3;37618:12;37611:19;;37270:366;;;:::o;37642:419::-;37808:4;37846:2;37835:9;37831:18;37823:26;;37895:9;37889:4;37885:20;37881:1;37870:9;37866:17;37859:47;37923:131;38049:4;37923:131;:::i;:::-;37915:139;;37642:419;;;:::o;38067:348::-;38107:7;38130:20;38148:1;38130:20;:::i;:::-;38125:25;;38164:20;38182:1;38164:20;:::i;:::-;38159:25;;38352:1;38284:66;38280:74;38277:1;38274:81;38269:1;38262:9;38255:17;38251:105;38248:131;;;38359:18;;:::i;:::-;38248:131;38407:1;38404;38400:9;38389:20;;38067:348;;;;:::o;38421:171::-;38460:3;38483:24;38501:5;38483:24;:::i;:::-;38474:33;;38529:4;38522:5;38519:15;38516:41;;;38537:18;;:::i;:::-;38516:41;38584:1;38577:5;38573:13;38566:20;;38421:171;;;:::o;38598:182::-;38738:34;38734:1;38726:6;38722:14;38715:58;38598:182;:::o;38786:366::-;38928:3;38949:67;39013:2;39008:3;38949:67;:::i;:::-;38942:74;;39025:93;39114:3;39025:93;:::i;:::-;39143:2;39138:3;39134:12;39127:19;;38786:366;;;:::o;39158:419::-;39324:4;39362:2;39351:9;39347:18;39339:26;;39411:9;39405:4;39401:20;39397:1;39386:9;39382:17;39375:47;39439:131;39565:4;39439:131;:::i;:::-;39431:139;;39158:419;;;:::o;39583:98::-;39634:6;39668:5;39662:12;39652:22;;39583:98;;;:::o;39687:168::-;39770:11;39804:6;39799:3;39792:19;39844:4;39839:3;39835:14;39820:29;;39687:168;;;;:::o;39861:360::-;39947:3;39975:38;40007:5;39975:38;:::i;:::-;40029:70;40092:6;40087:3;40029:70;:::i;:::-;40022:77;;40108:52;40153:6;40148:3;40141:4;40134:5;40130:16;40108:52;:::i;:::-;40185:29;40207:6;40185:29;:::i;:::-;40180:3;40176:39;40169:46;;39951:270;39861:360;;;;:::o;40227:640::-;40422:4;40460:3;40449:9;40445:19;40437:27;;40474:71;40542:1;40531:9;40527:17;40518:6;40474:71;:::i;:::-;40555:72;40623:2;40612:9;40608:18;40599:6;40555:72;:::i;:::-;40637;40705:2;40694:9;40690:18;40681:6;40637:72;:::i;:::-;40756:9;40750:4;40746:20;40741:2;40730:9;40726:18;40719:48;40784:76;40855:4;40846:6;40784:76;:::i;:::-;40776:84;;40227:640;;;;;;;:::o;40873:141::-;40929:5;40960:6;40954:13;40945:22;;40976:32;41002:5;40976:32;:::i;:::-;40873:141;;;;:::o;41020:349::-;41089:6;41138:2;41126:9;41117:7;41113:23;41109:32;41106:119;;;41144:79;;:::i;:::-;41106:119;41264:1;41289:63;41344:7;41335:6;41324:9;41320:22;41289:63;:::i;:::-;41279:73;;41235:127;41020:349;;;;:::o;41375:182::-;41515:34;41511:1;41503:6;41499:14;41492:58;41375:182;:::o;41563:366::-;41705:3;41726:67;41790:2;41785:3;41726:67;:::i;:::-;41719:74;;41802:93;41891:3;41802:93;:::i;:::-;41920:2;41915:3;41911:12;41904:19;;41563:366;;;:::o;41935:419::-;42101:4;42139:2;42128:9;42124:18;42116:26;;42188:9;42182:4;42178:20;42174:1;42163:9;42159:17;42152:47;42216:131;42342:4;42216:131;:::i;:::-;42208:139;;41935:419;;;:::o;42360:178::-;42500:30;42496:1;42488:6;42484:14;42477:54;42360:178;:::o;42544:366::-;42686:3;42707:67;42771:2;42766:3;42707:67;:::i;:::-;42700:74;;42783:93;42872:3;42783:93;:::i;:::-;42901:2;42896:3;42892:12;42885:19;;42544:366;;;:::o;42916:419::-;43082:4;43120:2;43109:9;43105:18;43097:26;;43169:9;43163:4;43159:20;43155:1;43144:9;43140:17;43133:47;43197:131;43323:4;43197:131;:::i;:::-;43189:139;;42916:419;;;:::o;43341:180::-;43389:77;43386:1;43379:88;43486:4;43483:1;43476:15;43510:4;43507:1;43500:15", - "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract SoulboundNFT is AccessControl, ERC721Enumerable {\n using Counters for Counters.Counter;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n uint256 public immutable supplyLimit;\n\n Counters.Counter private _tokenIdCounter;\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint256 _supplyLimt\n ) ERC721(_name, _symbol) {\n supplyLimit = _supplyLimt;\n _setRoleAdmin(BURN_ROLE, DEFAULT_ADMIN_ROLE);\n _setRoleAdmin(MINTER_ROLE, DEFAULT_ADMIN_ROLE);\n\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setupRole(MINTER_ROLE, msg.sender);\n _setupRole(BURN_ROLE, msg.sender);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721Enumerable) {\n require(from == address(0) || to == address(0), \"Token not transferable\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyRole(DEFAULT_ADMIN_ROLE) {\n _baseTokenURI = baseTokenURI;\n }\n\n function mint(address to) external onlyRole(MINTER_ROLE) returns (uint256) {\n require(to != address(0), \"Cannot mint to zero address\");\n if (supplyLimit > 0) {\n require((totalSupply() + 1) <= supplyLimit, \"Exceed the total supply\");\n }\n uint256 tokenId = _tokenIdCounter.current();\n _tokenIdCounter.increment();\n _safeMint(to, tokenId);\n return tokenId;\n }\n\n function burn(uint256 tokenId) external onlyRole(BURN_ROLE) {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"Caller is not owner nor approved\"\n );\n _burn(tokenId);\n }\n\n /**\n * @dev Grant mint role to address\n */\n function setMintRole(address to) external {\n grantRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Remove mint role to address\n */\n function removeMintRole(address to) external {\n revokeRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Grant burn role to address\n */\n function setBurnRole(address to) external {\n grantRole(BURN_ROLE, to);\n }\n\n /**\n * @dev Remove burn role to address\n */\n function removeBurnRole(address to) external {\n revokeRole(BURN_ROLE, to);\n }\n}\n", + "sourceMap": "249:2708:14:-:0;;;343:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;633:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:5;740:7;1464:5:2;1456;:13;;;;;;;;;;;;:::i;:::-;;1489:7;1479;:17;;;;;;;;;;;;:::i;:::-;;1390:113;;769:11:14::1;755:25;;;;::::0;::::1;786:44;455:22;2072:4:0;811:18:14::0;::::1;786:13;;;:44;;:::i;:::-;836:46;519:24;2072:4:0;863:18:14::0;::::1;836:13;;;:46;;:::i;:::-;889:42;2072:4:0;900:18:14::0;::::1;920:10;889;;;:42;;:::i;:::-;937:35;519:24;961:10;937;;;:35;;:::i;:::-;978:33;455:22;1000:10;978;;;:33;;:::i;:::-;633:383:::0;;;249:2708;;6492:247:0;6575:25;6603:18;6616:4;6603:12;;;:18;;:::i;:::-;6575:46;;6656:9;6631:6;:12;6638:4;6631:12;;;;;;;;;;;:22;;:34;;;;6722:9;6703:17;6697:4;6680:52;;;;;;;;;;6565:174;6492:247;;:::o;6257:110::-;6335:25;6346:4;6352:7;6335:10;;;:25;;:::i;:::-;6257:110;;:::o;4008:129::-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;;;:22;;:::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;;;:12;;:::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;2909:145::-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;249:2708:14:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:102;621:6;672:2;668:7;663:2;656:5;652:14;648:28;638:38;;580:102;;;:::o;688:180::-;736:77;733:1;726:88;833:4;830:1;823:15;857:4;854:1;847:15;874:281;957:27;979:4;957:27;:::i;:::-;949:6;945:40;1087:6;1075:10;1072:22;1051:18;1039:10;1036:34;1033:62;1030:88;;;1098:18;;:::i;:::-;1030:88;1138:10;1134:2;1127:22;917:238;874:281;;:::o;1161:129::-;1195:6;1222:20;;:::i;:::-;1212:30;;1251:33;1279:4;1271:6;1251:33;:::i;:::-;1161:129;;;:::o;1296:308::-;1358:4;1448:18;1440:6;1437:30;1434:56;;;1470:18;;:::i;:::-;1434:56;1508:29;1530:6;1508:29;:::i;:::-;1500:37;;1592:4;1586;1582:15;1574:23;;1296:308;;;:::o;1610:307::-;1678:1;1688:113;1702:6;1699:1;1696:13;1688:113;;;1787:1;1782:3;1778:11;1772:18;1768:1;1763:3;1759:11;1752:39;1724:2;1721:1;1717:10;1712:15;;1688:113;;;1819:6;1816:1;1813:13;1810:101;;;1899:1;1890:6;1885:3;1881:16;1874:27;1810:101;1659:258;1610:307;;;:::o;1923:421::-;2012:5;2037:66;2053:49;2095:6;2053:49;:::i;:::-;2037:66;:::i;:::-;2028:75;;2126:6;2119:5;2112:21;2164:4;2157:5;2153:16;2202:3;2193:6;2188:3;2184:16;2181:25;2178:112;;;2209:79;;:::i;:::-;2178:112;2299:39;2331:6;2326:3;2321;2299:39;:::i;:::-;2018:326;1923:421;;;;;:::o;2364:355::-;2431:5;2480:3;2473:4;2465:6;2461:17;2457:27;2447:122;;2488:79;;:::i;:::-;2447:122;2598:6;2592:13;2623:90;2709:3;2701:6;2694:4;2686:6;2682:17;2623:90;:::i;:::-;2614:99;;2437:282;2364:355;;;;:::o;2725:77::-;2762:7;2791:5;2780:16;;2725:77;;;:::o;2808:122::-;2881:24;2899:5;2881:24;:::i;:::-;2874:5;2871:35;2861:63;;2920:1;2917;2910:12;2861:63;2808:122;:::o;2936:143::-;2993:5;3024:6;3018:13;3009:22;;3040:33;3067:5;3040:33;:::i;:::-;2936:143;;;;:::o;3085:1009::-;3193:6;3201;3209;3258:2;3246:9;3237:7;3233:23;3229:32;3226:119;;;3264:79;;:::i;:::-;3226:119;3405:1;3394:9;3390:17;3384:24;3435:18;3427:6;3424:30;3421:117;;;3457:79;;:::i;:::-;3421:117;3562:74;3628:7;3619:6;3608:9;3604:22;3562:74;:::i;:::-;3552:84;;3355:291;3706:2;3695:9;3691:18;3685:25;3737:18;3729:6;3726:30;3723:117;;;3759:79;;:::i;:::-;3723:117;3864:74;3930:7;3921:6;3910:9;3906:22;3864:74;:::i;:::-;3854:84;;3656:292;3987:2;4013:64;4069:7;4060:6;4049:9;4045:22;4013:64;:::i;:::-;4003:74;;3958:129;3085:1009;;;;;:::o;4100:180::-;4148:77;4145:1;4138:88;4245:4;4242:1;4235:15;4269:4;4266:1;4259:15;4286:320;4330:6;4367:1;4361:4;4357:12;4347:22;;4414:1;4408:4;4404:12;4435:18;4425:81;;4491:4;4483:6;4479:17;4469:27;;4425:81;4553:2;4545:6;4542:14;4522:18;4519:38;4516:84;;;4572:18;;:::i;:::-;4516:84;4337:269;4286:320;;;:::o;249:2708:14:-;;;;;;;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "249:2708:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1075:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2488:98:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3999:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3537:401;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1615:111:5;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;547:36:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2607:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4726:330:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:129:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4387:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1291:253:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2743:77:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5404:214:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5122:179:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2226:195:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1798:230:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2474:79:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2191:235:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1839:383:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1929:205:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2909:145:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1697:138:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2650:102:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2874:81:14;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2027:49:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4283:153:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5367:320;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;419:58:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2818:329:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;481:62:14;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:147:0;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4502:162:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1075:208:14;1221:4;1242:36;1266:11;1242:23;:36::i;:::-;1235:43;;1075:208;;;:::o;2488:98:2:-;2542:13;2574:5;2567:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2488:98;:::o;3999:217::-;4075:7;4102:16;4110:7;4102;:16::i;:::-;4094:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4185:15;:24;4201:7;4185:24;;;;;;;;;;;;;;;;;;;;;4178:31;;3999:217;;;:::o;3537:401::-;3617:13;3633:23;3648:7;3633:14;:23::i;:::-;3617:39;;3680:5;3674:11;;:2;:11;;;;3666:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3771:5;3755:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;3780:37;3797:5;3804:12;:10;:12::i;:::-;3780:16;:37::i;:::-;3755:62;3734:165;;;;;;;;;;;;:::i;:::-;;;;;;;;;3910:21;3919:2;3923:7;3910:8;:21::i;:::-;3607:331;3537:401;;:::o;1615:111:5:-;1676:7;1702:10;:17;;;;1695:24;;1615:111;:::o;547:36:14:-;;;:::o;2607:83::-;2658:27;519:24;2682:2;2658:10;:27::i;:::-;2607:83;:::o;4726:330:2:-;4915:41;4934:12;:10;:12::i;:::-;4948:7;4915:18;:41::i;:::-;4907:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5021:28;5031:4;5037:2;5041:7;5021:9;:28::i;:::-;4726:330;;;:::o;4008:129:0:-;4082:7;4108:6;:12;4115:4;4108:12;;;;;;;;;;;:22;;;4101:29;;4008:129;;;:::o;4387:145::-;4470:18;4483:4;4470:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4500:25:::1;4511:4;4517:7;4500:10;:25::i;:::-;4387:145:::0;;;:::o;1291:253:5:-;1388:7;1423:23;1440:5;1423:16;:23::i;:::-;1415:5;:31;1407:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:12;:19;1524:5;1511:19;;;;;;;;;;;;;;;:26;1531:5;1511:26;;;;;;;;;;;;1504:33;;1291:253;;;;:::o;2743:77:14:-;2791:24;455:22;2812:2;2791:9;:24::i;:::-;2743:77;:::o;5404:214:0:-;5510:12;:10;:12::i;:::-;5499:23;;:7;:23;;;5491:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:26;5597:4;5603:7;5585:11;:26::i;:::-;5404:214;;:::o;5122:179:2:-;5255:39;5272:4;5278:2;5282:7;5255:39;;;;;;;;;;;;:16;:39::i;:::-;5122:179;;;:::o;2226:195:14:-;455:22;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;2307:41:14::1;2326:12;:10;:12::i;:::-;2340:7;2307:18;:41::i;:::-;2292:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2402:14;2408:7;2402:5;:14::i;:::-;2226:195:::0;;:::o;1798:230:5:-;1873:7;1908:30;:28;:30::i;:::-;1900:5;:38;1892:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:10;2015:5;2004:17;;;;;;;;:::i;:::-;;;;;;;;;;1997:24;;1798:230;;;:::o;2474:79:14:-;2522:26;519:24;2545:2;2522:9;:26::i;:::-;2474:79;:::o;2191:235:2:-;2263:7;2282:13;2298:7;:16;2306:7;2298:16;;;;;;;;;;;;;;;;;;;;;2282:32;;2349:1;2332:19;;:5;:19;;;;2324:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2414:5;2407:12;;;2191:235;;;:::o;1839:383:14:-;1905:7;519:24;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1942:1:14::1;1928:16;;:2;:16;;;;1920:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2000:1;1986:11;:15;1982:106;;;2042:11;2036:1;2020:13;:11;:13::i;:::-;:17;;;;:::i;:::-;2019:34;;2011:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;1982:106;2093:15;2111:25;:15;:23;:25::i;:::-;2093:43;;2142:27;:15;:25;:27::i;:::-;2175:22;2185:2;2189:7;2175:9;:22::i;:::-;2210:7;2203:14;;;1839:383:::0;;;;:::o;1929:205:2:-;2001:7;2045:1;2028:19;;:5;:19;;;;2020:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2111:9;:16;2121:5;2111:16;;;;;;;;;;;;;;;;2104:23;;1929:205;;;:::o;2909:145:0:-;2995:4;3018:6;:12;3025:4;3018:12;;;;;;;;;;;:20;;:29;3039:7;3018:29;;;;;;;;;;;;;;;;;;;;;;;;;3011:36;;2909:145;;;;:::o;1697:138:14:-;2072:4:0;1776:18:14;;2505:30:0;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;1818:12:14::1;;1802:13;:28;;;;;;;:::i;:::-;;1697:138:::0;;;:::o;2650:102:2:-;2706:13;2738:7;2731:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2650:102;:::o;2874:81:14:-;2925:25;455:22;2947:2;2925:10;:25::i;:::-;2874:81;:::o;2027:49:0:-;2072:4;2027:49;;;:::o;4283:153:2:-;4377:52;4396:12;:10;:12::i;:::-;4410:8;4420;4377:18;:52::i;:::-;4283:153;;:::o;5367:320::-;5536:41;5555:12;:10;:12::i;:::-;5569:7;5536:18;:41::i;:::-;5528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;5641:39;5655:4;5661:2;5665:7;5674:5;5641:13;:39::i;:::-;5367:320;;;;:::o;419:58:14:-;455:22;419:58;:::o;2818:329:2:-;2891:13;2924:16;2932:7;2924;:16::i;:::-;2916:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3003:21;3027:10;:8;:10::i;:::-;3003:34;;3078:1;3060:7;3054:21;:25;:86;;;;;;;;;;;;;;;;;3106:7;3115:18;:7;:16;:18::i;:::-;3089:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3054:86;3047:93;;;2818:329;;;:::o;481:62:14:-;519:24;481:62;:::o;4766:147:0:-;4850:18;4863:4;4850:12;:18::i;:::-;2505:30;2516:4;2522:12;:10;:12::i;:::-;2505:10;:30::i;:::-;4880:26:::1;4892:4;4898:7;4880:11;:26::i;:::-;4766:147:::0;;;:::o;4502:162:2:-;4599:4;4622:18;:25;4641:5;4622:25;;;;;;;;;;;;;;;:35;4648:8;4622:35;;;;;;;;;;;;;;;;;;;;;;;;;4615:42;;4502:162;;;;:::o;990:222:5:-;1092:4;1130:35;1115:50;;;:11;:50;;;;:90;;;;1169:36;1193:11;1169:23;:36::i;:::-;1115:90;1108:97;;990:222;;;:::o;7159:125:2:-;7224:4;7275:1;7247:30;;:7;:16;7255:7;7247:16;;;;;;;;;;;;;;;;;;;;;:30;;;;7240:37;;7159:125;;;:::o;640:96:9:-;693:7;719:10;712:17;;640:96;:::o;11168:171:2:-;11269:2;11242:15;:24;11258:7;11242:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;11324:7;11320:2;11286:46;;11295:23;11310:7;11295:14;:23::i;:::-;11286:46;;;;;;;;;;;;11168:171;;:::o;7442:344::-;7535:4;7559:16;7567:7;7559;:16::i;:::-;7551:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7634:13;7650:23;7665:7;7650:14;:23::i;:::-;7634:39;;7702:5;7691:16;;:7;:16;;;:51;;;;7735:7;7711:31;;:20;7723:7;7711:11;:20::i;:::-;:31;;;7691:51;:87;;;;7746:32;7763:5;7770:7;7746:16;:32::i;:::-;7691:87;7683:96;;;7442:344;;;;:::o;10452:605::-;10606:4;10579:31;;:23;10594:7;10579:14;:23::i;:::-;:31;;;10571:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;10684:1;10670:16;;:2;:16;;;;10662:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10738:39;10759:4;10765:2;10769:7;10738:20;:39::i;:::-;10839:29;10856:1;10860:7;10839:8;:29::i;:::-;10898:1;10879:9;:15;10889:4;10879:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;10926:1;10909:9;:13;10919:2;10909:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;10956:2;10937:7;:16;10945:7;10937:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10993:7;10989:2;10974:27;;10983:4;10974:27;;;;;;;;;;;;11012:38;11032:4;11038:2;11042:7;11012:19;:38::i;:::-;10452:605;;;:::o;3335:492:0:-;3423:22;3431:4;3437:7;3423;:22::i;:::-;3418:403;;3606:41;3634:7;3606:41;;3644:2;3606:19;:41::i;:::-;3718:38;3746:4;3738:13;;3753:2;3718:19;:38::i;:::-;3513:265;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3461:349;;;;;;;;;;;:::i;:::-;;;;;;;;3418:403;3335:492;;:::o;6861:233::-;6944:22;6952:4;6958:7;6944;:22::i;:::-;6939:149;;7014:4;6982:6;:12;6989:4;6982:12;;;;;;;;;;;:20;;:29;7003:7;6982:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;7064:12;:10;:12::i;:::-;7037:40;;7055:7;7037:40;;7049:4;7037:40;;;;;;;;;;6939:149;6861:233;;:::o;7219:234::-;7302:22;7310:4;7316:7;7302;:22::i;:::-;7298:149;;;7372:5;7340:6;:12;7347:4;7340:12;;;;;;;;;;;:20;;:29;7361:7;7340:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;7423:12;:10;:12::i;:::-;7396:40;;7414:7;7396:40;;7408:4;7396:40;;;;;;;;;;7298:149;7219:234;;:::o;9722:406:2:-;9781:13;9797:23;9812:7;9797:14;:23::i;:::-;9781:39;;9831:48;9852:5;9867:1;9871:7;9831:20;:48::i;:::-;9917:29;9934:1;9938:7;9917:8;:29::i;:::-;9977:1;9957:9;:16;9967:5;9957:16;;;;;;;;;;;;;;;;:21;;;;;;;:::i;:::-;;;;;;;;9995:7;:16;10003:7;9995:16;;;;;;;;;;;;9988:23;;;;;;;;;;;10055:7;10051:1;10027:36;;10036:5;10027:36;;;;;;;;;;;;10074:47;10094:5;10109:1;10113:7;10074:19;:47::i;:::-;9771:357;9722:406;:::o;827:112:10:-;892:7;918;:14;;;911:21;;827:112;;;:::o;945:123::-;1050:1;1032:7;:14;;;:19;;;;;;;;;;;945:123;:::o;8116:108:2:-;8191:26;8201:2;8205:7;8191:26;;;;;;;;;;;;:9;:26::i;:::-;8116:108;;:::o;11474:307::-;11624:8;11615:17;;:5;:17;;;;11607:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;11710:8;11672:18;:25;11691:5;11672:25;;;;;;;;;;;;;;;:35;11698:8;11672:35;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;11755:8;11733:41;;11748:5;11733:41;;;11765:8;11733:41;;;;;;:::i;:::-;;;;;;;;11474:307;;;:::o;6549:::-;6700:28;6710:4;6716:2;6720:7;6700:9;:28::i;:::-;6746:48;6769:4;6775:2;6779:7;6788:5;6746:22;:48::i;:::-;6738:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6549:307;;;;:::o;1551:106:14:-;1611:13;1639;1632:20;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1551:106;:::o;328:703:11:-;384:13;610:1;601:5;:10;597:51;;;627:10;;;;;;;;;;;;;;;;;;;;;597:51;657:12;672:5;657:20;;687:14;711:75;726:1;718:4;:9;711:75;;743:8;;;;;:::i;:::-;;;;773:2;765:10;;;;;:::i;:::-;;;711:75;;;795:19;827:6;817:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;795:39;;844:150;860:1;851:5;:10;844:150;;887:1;877:11;;;;;:::i;:::-;;;953:2;945:5;:10;;;;:::i;:::-;932:2;:24;;;;:::i;:::-;919:39;;902:6;909;902:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;981:2;972:11;;;;;:::i;:::-;;;844:150;;;1017:6;1003:21;;;;;328:703;;;;:::o;1570:300:2:-;1672:4;1722:25;1707:40;;;:11;:40;;;;:104;;;;1778:33;1763:48;;;:11;:48;;;;1707:104;:156;;;;1827:36;1851:11;1827:23;:36::i;:::-;1707:156;1688:175;;1570:300;;;:::o;1287:260:14:-;1442:1;1426:18;;:4;:18;;;:38;;;;1462:1;1448:16;;:2;:16;;;1426:38;1418:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1497:45;1524:4;1530:2;1534:7;1497:26;:45::i;:::-;1287:260;;;:::o;14162:121:2:-;;;;:::o;1588:441:11:-;1663:13;1688:19;1733:1;1724:6;1720:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1710:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1688:47;;1745:15;:6;1752:1;1745:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1770;:6;1777:1;1770:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;1800:9;1825:1;1816:6;1812:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;1800:26;;1795:132;1832:1;1828;:5;1795:132;;;1866:12;1887:3;1879:5;:11;1866:25;;;;;;;:::i;:::-;;;;;1854:6;1861:1;1854:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;1915:1;1905:11;;;;;1835:3;;;;:::i;:::-;;;1795:132;;;;1953:1;1944:5;:10;1936:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2015:6;2001:21;;;1588:441;;;;:::o;8445:311:2:-;8570:18;8576:2;8580:7;8570:5;:18::i;:::-;8619:54;8650:1;8654:2;8658:7;8667:5;8619:22;:54::i;:::-;8598:151;;;;;;;;;;;;:::i;:::-;;;;;;;;;8445:311;;;:::o;12334:778::-;12484:4;12504:15;:2;:13;;;:15::i;:::-;12500:606;;;12555:2;12539:36;;;12576:12;:10;:12::i;:::-;12590:4;12596:7;12605:5;12539:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;12535:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12795:1;12778:6;:13;:18;12774:266;;;12820:60;;;;;;;;;;:::i;:::-;;;;;;;;12774:266;12992:6;12986:13;12977:6;12973:2;12969:15;12962:38;12535:519;12671:41;;;12661:51;;;:6;:51;;;;12654:58;;;;;12500:606;13091:4;13084:11;;12334:778;;;;;;;:::o;2620:202:0:-;2705:4;2743:32;2728:47;;;:11;:47;;;;:87;;;;2779:36;2803:11;2779:23;:36::i;:::-;2728:87;2721:94;;2620:202;;;:::o;2624:572:5:-;2763:45;2790:4;2796:2;2800:7;2763:26;:45::i;:::-;2839:1;2823:18;;:4;:18;;;2819:183;;;2857:40;2889:7;2857:31;:40::i;:::-;2819:183;;;2926:2;2918:10;;:4;:10;;;2914:88;;2944:47;2977:4;2983:7;2944:32;:47::i;:::-;2914:88;2819:183;3029:1;3015:16;;:2;:16;;;3011:179;;;3047:45;3084:7;3047:36;:45::i;:::-;3011:179;;;3119:4;3113:10;;:2;:10;;;3109:81;;3139:40;3167:2;3171:7;3139:27;:40::i;:::-;3109:81;3011:179;2624:572;;;:::o;9078:427:2:-;9171:1;9157:16;;:2;:16;;;;9149:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:16;9237:7;9229;:16::i;:::-;9228:17;9220:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9289:45;9318:1;9322:2;9326:7;9289:20;:45::i;:::-;9362:1;9345:9;:13;9355:2;9345:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;9392:2;9373:7;:16;9381:7;9373:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9435:7;9431:2;9410:33;;9427:1;9410:33;;;;;;;;;;;;9454:44;9482:1;9486:2;9490:7;9454:19;:44::i;:::-;9078:427;;:::o;1175:320:8:-;1235:4;1487:1;1465:7;:19;;;:23;1458:30;;1175:320;;;:::o;829:155:12:-;914:4;952:25;937:40;;;:11;:40;;;;930:47;;829:155;;;:::o;13668:122:2:-;;;;:::o;3902:161:5:-;4005:10;:17;;;;3978:15;:24;3994:7;3978:24;;;;;;;;;;;:44;;;;4032:10;4048:7;4032:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3902:161;:::o;4680:970::-;4942:22;4992:1;4967:22;4984:4;4967:16;:22::i;:::-;:26;;;;:::i;:::-;4942:51;;5003:18;5024:17;:26;5042:7;5024:26;;;;;;;;;;;;5003:47;;5168:14;5154:10;:28;5150:323;;5198:19;5220:12;:18;5233:4;5220:18;;;;;;;;;;;;;;;:34;5239:14;5220:34;;;;;;;;;;;;5198:56;;5302:11;5269:12;:18;5282:4;5269:18;;;;;;;;;;;;;;;:30;5288:10;5269:30;;;;;;;;;;;:44;;;;5418:10;5385:17;:30;5403:11;5385:30;;;;;;;;;;;:43;;;;5184:289;5150:323;5566:17;:26;5584:7;5566:26;;;;;;;;;;;5559:33;;;5609:12;:18;5622:4;5609:18;;;;;;;;;;;;;;;:34;5628:14;5609:34;;;;;;;;;;;5602:41;;;4761:889;;4680:970;;:::o;5938:1061::-;6187:22;6232:1;6212:10;:17;;;;:21;;;;:::i;:::-;6187:46;;6243:18;6264:15;:24;6280:7;6264:24;;;;;;;;;;;;6243:45;;6610:19;6632:10;6643:14;6632:26;;;;;;;;:::i;:::-;;;;;;;;;;6610:48;;6694:11;6669:10;6680;6669:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;6804:10;6773:15;:28;6789:11;6773:28;;;;;;;;;;;:41;;;;6942:15;:24;6958:7;6942:24;;;;;;;;;;;6935:31;;;6976:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6009:990;;;5938:1061;:::o;3490:217::-;3574:14;3591:20;3608:2;3591:16;:20::i;:::-;3574:37;;3648:7;3621:12;:16;3634:2;3621:16;;;;;;;;;;;;;;;:24;3638:6;3621:24;;;;;;;;;;;:34;;;;3694:6;3665:17;:26;3683:7;3665:26;;;;;;;;;;;:35;;;;3564:143;3490:217;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:75:15:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:307::-;1866:1;1876:113;1890:6;1887:1;1884:13;1876:113;;;1975:1;1970:3;1966:11;1960:18;1956:1;1951:3;1947:11;1940:39;1912:2;1909:1;1905:10;1900:15;;1876:113;;;2007:6;2004:1;2001:13;1998:101;;;2087:1;2078:6;2073:3;2069:16;2062:27;1998:101;1847:258;1798:307;;;:::o;2111:102::-;2152:6;2203:2;2199:7;2194:2;2187:5;2183:14;2179:28;2169:38;;2111:102;;;:::o;2219:364::-;2307:3;2335:39;2368:5;2335:39;:::i;:::-;2390:71;2454:6;2449:3;2390:71;:::i;:::-;2383:78;;2470:52;2515:6;2510:3;2503:4;2496:5;2492:16;2470:52;:::i;:::-;2547:29;2569:6;2547:29;:::i;:::-;2542:3;2538:39;2531:46;;2311:272;2219:364;;;;:::o;2589:313::-;2702:4;2740:2;2729:9;2725:18;2717:26;;2789:9;2783:4;2779:20;2775:1;2764:9;2760:17;2753:47;2817:78;2890:4;2881:6;2817:78;:::i;:::-;2809:86;;2589:313;;;;:::o;2908:77::-;2945:7;2974:5;2963:16;;2908:77;;;:::o;2991:122::-;3064:24;3082:5;3064:24;:::i;:::-;3057:5;3054:35;3044:63;;3103:1;3100;3093:12;3044:63;2991:122;:::o;3119:139::-;3165:5;3203:6;3190:20;3181:29;;3219:33;3246:5;3219:33;:::i;:::-;3119:139;;;;:::o;3264:329::-;3323:6;3372:2;3360:9;3351:7;3347:23;3343:32;3340:119;;;3378:79;;:::i;:::-;3340:119;3498:1;3523:53;3568:7;3559:6;3548:9;3544:22;3523:53;:::i;:::-;3513:63;;3469:117;3264:329;;;;:::o;3599:126::-;3636:7;3676:42;3669:5;3665:54;3654:65;;3599:126;;;:::o;3731:96::-;3768:7;3797:24;3815:5;3797:24;:::i;:::-;3786:35;;3731:96;;;:::o;3833:118::-;3920:24;3938:5;3920:24;:::i;:::-;3915:3;3908:37;3833:118;;:::o;3957:222::-;4050:4;4088:2;4077:9;4073:18;4065:26;;4101:71;4169:1;4158:9;4154:17;4145:6;4101:71;:::i;:::-;3957:222;;;;:::o;4185:122::-;4258:24;4276:5;4258:24;:::i;:::-;4251:5;4248:35;4238:63;;4297:1;4294;4287:12;4238:63;4185:122;:::o;4313:139::-;4359:5;4397:6;4384:20;4375:29;;4413:33;4440:5;4413:33;:::i;:::-;4313:139;;;;:::o;4458:474::-;4526:6;4534;4583:2;4571:9;4562:7;4558:23;4554:32;4551:119;;;4589:79;;:::i;:::-;4551:119;4709:1;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4680:117;4836:2;4862:53;4907:7;4898:6;4887:9;4883:22;4862:53;:::i;:::-;4852:63;;4807:118;4458:474;;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:329::-;5349:6;5398:2;5386:9;5377:7;5373:23;5369:32;5366:119;;;5404:79;;:::i;:::-;5366:119;5524:1;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5495:117;5290:329;;;;:::o;5625:619::-;5702:6;5710;5718;5767:2;5755:9;5746:7;5742:23;5738:32;5735:119;;;5773:79;;:::i;:::-;5735:119;5893:1;5918:53;5963:7;5954:6;5943:9;5939:22;5918:53;:::i;:::-;5908:63;;5864:117;6020:2;6046:53;6091:7;6082:6;6071:9;6067:22;6046:53;:::i;:::-;6036:63;;5991:118;6148:2;6174:53;6219:7;6210:6;6199:9;6195:22;6174:53;:::i;:::-;6164:63;;6119:118;5625:619;;;;;:::o;6250:77::-;6287:7;6316:5;6305:16;;6250:77;;;:::o;6333:122::-;6406:24;6424:5;6406:24;:::i;:::-;6399:5;6396:35;6386:63;;6445:1;6442;6435:12;6386:63;6333:122;:::o;6461:139::-;6507:5;6545:6;6532:20;6523:29;;6561:33;6588:5;6561:33;:::i;:::-;6461:139;;;;:::o;6606:329::-;6665:6;6714:2;6702:9;6693:7;6689:23;6685:32;6682:119;;;6720:79;;:::i;:::-;6682:119;6840:1;6865:53;6910:7;6901:6;6890:9;6886:22;6865:53;:::i;:::-;6855:63;;6811:117;6606:329;;;;:::o;6941:118::-;7028:24;7046:5;7028:24;:::i;:::-;7023:3;7016:37;6941:118;;:::o;7065:222::-;7158:4;7196:2;7185:9;7181:18;7173:26;;7209:71;7277:1;7266:9;7262:17;7253:6;7209:71;:::i;:::-;7065:222;;;;:::o;7293:474::-;7361:6;7369;7418:2;7406:9;7397:7;7393:23;7389:32;7386:119;;;7424:79;;:::i;:::-;7386:119;7544:1;7569:53;7614:7;7605:6;7594:9;7590:22;7569:53;:::i;:::-;7559:63;;7515:117;7671:2;7697:53;7742:7;7733:6;7722:9;7718:22;7697:53;:::i;:::-;7687:63;;7642:118;7293:474;;;;;:::o;7773:117::-;7882:1;7879;7872:12;7896:117;8005:1;8002;7995:12;8019:117;8128:1;8125;8118:12;8156:553;8214:8;8224:6;8274:3;8267:4;8259:6;8255:17;8251:27;8241:122;;8282:79;;:::i;:::-;8241:122;8395:6;8382:20;8372:30;;8425:18;8417:6;8414:30;8411:117;;;8447:79;;:::i;:::-;8411:117;8561:4;8553:6;8549:17;8537:29;;8615:3;8607:4;8599:6;8595:17;8585:8;8581:32;8578:41;8575:128;;;8622:79;;:::i;:::-;8575:128;8156:553;;;;;:::o;8715:529::-;8786:6;8794;8843:2;8831:9;8822:7;8818:23;8814:32;8811:119;;;8849:79;;:::i;:::-;8811:119;8997:1;8986:9;8982:17;8969:31;9027:18;9019:6;9016:30;9013:117;;;9049:79;;:::i;:::-;9013:117;9162:65;9219:7;9210:6;9199:9;9195:22;9162:65;:::i;:::-;9144:83;;;;8940:297;8715:529;;;;;:::o;9250:116::-;9320:21;9335:5;9320:21;:::i;:::-;9313:5;9310:32;9300:60;;9356:1;9353;9346:12;9300:60;9250:116;:::o;9372:133::-;9415:5;9453:6;9440:20;9431:29;;9469:30;9493:5;9469:30;:::i;:::-;9372:133;;;;:::o;9511:468::-;9576:6;9584;9633:2;9621:9;9612:7;9608:23;9604:32;9601:119;;;9639:79;;:::i;:::-;9601:119;9759:1;9784:53;9829:7;9820:6;9809:9;9805:22;9784:53;:::i;:::-;9774:63;;9730:117;9886:2;9912:50;9954:7;9945:6;9934:9;9930:22;9912:50;:::i;:::-;9902:60;;9857:115;9511:468;;;;;:::o;9985:117::-;10094:1;10091;10084:12;10108:180;10156:77;10153:1;10146:88;10253:4;10250:1;10243:15;10277:4;10274:1;10267:15;10294:281;10377:27;10399:4;10377:27;:::i;:::-;10369:6;10365:40;10507:6;10495:10;10492:22;10471:18;10459:10;10456:34;10453:62;10450:88;;;10518:18;;:::i;:::-;10450:88;10558:10;10554:2;10547:22;10337:238;10294:281;;:::o;10581:129::-;10615:6;10642:20;;:::i;:::-;10632:30;;10671:33;10699:4;10691:6;10671:33;:::i;:::-;10581:129;;;:::o;10716:307::-;10777:4;10867:18;10859:6;10856:30;10853:56;;;10889:18;;:::i;:::-;10853:56;10927:29;10949:6;10927:29;:::i;:::-;10919:37;;11011:4;11005;11001:15;10993:23;;10716:307;;;:::o;11029:154::-;11113:6;11108:3;11103;11090:30;11175:1;11166:6;11161:3;11157:16;11150:27;11029:154;;;:::o;11189:410::-;11266:5;11291:65;11307:48;11348:6;11307:48;:::i;:::-;11291:65;:::i;:::-;11282:74;;11379:6;11372:5;11365:21;11417:4;11410:5;11406:16;11455:3;11446:6;11441:3;11437:16;11434:25;11431:112;;;11462:79;;:::i;:::-;11431:112;11552:41;11586:6;11581:3;11576;11552:41;:::i;:::-;11272:327;11189:410;;;;;:::o;11618:338::-;11673:5;11722:3;11715:4;11707:6;11703:17;11699:27;11689:122;;11730:79;;:::i;:::-;11689:122;11847:6;11834:20;11872:78;11946:3;11938:6;11931:4;11923:6;11919:17;11872:78;:::i;:::-;11863:87;;11679:277;11618:338;;;;:::o;11962:943::-;12057:6;12065;12073;12081;12130:3;12118:9;12109:7;12105:23;12101:33;12098:120;;;12137:79;;:::i;:::-;12098:120;12257:1;12282:53;12327:7;12318:6;12307:9;12303:22;12282:53;:::i;:::-;12272:63;;12228:117;12384:2;12410:53;12455:7;12446:6;12435:9;12431:22;12410:53;:::i;:::-;12400:63;;12355:118;12512:2;12538:53;12583:7;12574:6;12563:9;12559:22;12538:53;:::i;:::-;12528:63;;12483:118;12668:2;12657:9;12653:18;12640:32;12699:18;12691:6;12688:30;12685:117;;;12721:79;;:::i;:::-;12685:117;12826:62;12880:7;12871:6;12860:9;12856:22;12826:62;:::i;:::-;12816:72;;12611:287;11962:943;;;;;;;:::o;12911:474::-;12979:6;12987;13036:2;13024:9;13015:7;13011:23;13007:32;13004:119;;;13042:79;;:::i;:::-;13004:119;13162:1;13187:53;13232:7;13223:6;13212:9;13208:22;13187:53;:::i;:::-;13177:63;;13133:117;13289:2;13315:53;13360:7;13351:6;13340:9;13336:22;13315:53;:::i;:::-;13305:63;;13260:118;12911:474;;;;;:::o;13391:180::-;13439:77;13436:1;13429:88;13536:4;13533:1;13526:15;13560:4;13557:1;13550:15;13577:320;13621:6;13658:1;13652:4;13648:12;13638:22;;13705:1;13699:4;13695:12;13726:18;13716:81;;13782:4;13774:6;13770:17;13760:27;;13716:81;13844:2;13836:6;13833:14;13813:18;13810:38;13807:84;;;13863:18;;:::i;:::-;13807:84;13628:269;13577:320;;;:::o;13903:231::-;14043:34;14039:1;14031:6;14027:14;14020:58;14112:14;14107:2;14099:6;14095:15;14088:39;13903:231;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:220::-;15077:34;15073:1;15065:6;15061:14;15054:58;15146:3;15141:2;15133:6;15129:15;15122:28;14937:220;:::o;15163:366::-;15305:3;15326:67;15390:2;15385:3;15326:67;:::i;:::-;15319:74;;15402:93;15491:3;15402:93;:::i;:::-;15520:2;15515:3;15511:12;15504:19;;15163:366;;;:::o;15535:419::-;15701:4;15739:2;15728:9;15724:18;15716:26;;15788:9;15782:4;15778:20;15774:1;15763:9;15759:17;15752:47;15816:131;15942:4;15816:131;:::i;:::-;15808:139;;15535:419;;;:::o;15960:243::-;16100:34;16096:1;16088:6;16084:14;16077:58;16169:26;16164:2;16156:6;16152:15;16145:51;15960:243;:::o;16209:366::-;16351:3;16372:67;16436:2;16431:3;16372:67;:::i;:::-;16365:74;;16448:93;16537:3;16448:93;:::i;:::-;16566:2;16561:3;16557:12;16550:19;;16209:366;;;:::o;16581:419::-;16747:4;16785:2;16774:9;16770:18;16762:26;;16834:9;16828:4;16824:20;16820:1;16809:9;16805:17;16798:47;16862:131;16988:4;16862:131;:::i;:::-;16854:139;;16581:419;;;:::o;17006:236::-;17146:34;17142:1;17134:6;17130:14;17123:58;17215:19;17210:2;17202:6;17198:15;17191:44;17006:236;:::o;17248:366::-;17390:3;17411:67;17475:2;17470:3;17411:67;:::i;:::-;17404:74;;17487:93;17576:3;17487:93;:::i;:::-;17605:2;17600:3;17596:12;17589:19;;17248:366;;;:::o;17620:419::-;17786:4;17824:2;17813:9;17809:18;17801:26;;17873:9;17867:4;17863:20;17859:1;17848:9;17844:17;17837:47;17901:131;18027:4;17901:131;:::i;:::-;17893:139;;17620:419;;;:::o;18045:230::-;18185:34;18181:1;18173:6;18169:14;18162:58;18254:13;18249:2;18241:6;18237:15;18230:38;18045:230;:::o;18281:366::-;18423:3;18444:67;18508:2;18503:3;18444:67;:::i;:::-;18437:74;;18520:93;18609:3;18520:93;:::i;:::-;18638:2;18633:3;18629:12;18622:19;;18281:366;;;:::o;18653:419::-;18819:4;18857:2;18846:9;18842:18;18834:26;;18906:9;18900:4;18896:20;18892:1;18881:9;18877:17;18870:47;18934:131;19060:4;18934:131;:::i;:::-;18926:139;;18653:419;;;:::o;19078:234::-;19218:34;19214:1;19206:6;19202:14;19195:58;19287:17;19282:2;19274:6;19270:15;19263:42;19078:234;:::o;19318:366::-;19460:3;19481:67;19545:2;19540:3;19481:67;:::i;:::-;19474:74;;19557:93;19646:3;19557:93;:::i;:::-;19675:2;19670:3;19666:12;19659:19;;19318:366;;;:::o;19690:419::-;19856:4;19894:2;19883:9;19879:18;19871:26;;19943:9;19937:4;19933:20;19929:1;19918:9;19914:17;19907:47;19971:131;20097:4;19971:131;:::i;:::-;19963:139;;19690:419;;;:::o;20115:182::-;20255:34;20251:1;20243:6;20239:14;20232:58;20115:182;:::o;20303:366::-;20445:3;20466:67;20530:2;20525:3;20466:67;:::i;:::-;20459:74;;20542:93;20631:3;20542:93;:::i;:::-;20660:2;20655:3;20651:12;20644:19;;20303:366;;;:::o;20675:419::-;20841:4;20879:2;20868:9;20864:18;20856:26;;20928:9;20922:4;20918:20;20914:1;20903:9;20899:17;20892:47;20956:131;21082:4;20956:131;:::i;:::-;20948:139;;20675:419;;;:::o;21100:231::-;21240:34;21236:1;21228:6;21224:14;21217:58;21309:14;21304:2;21296:6;21292:15;21285:39;21100:231;:::o;21337:366::-;21479:3;21500:67;21564:2;21559:3;21500:67;:::i;:::-;21493:74;;21576:93;21665:3;21576:93;:::i;:::-;21694:2;21689:3;21685:12;21678:19;;21337:366;;;:::o;21709:419::-;21875:4;21913:2;21902:9;21898:18;21890:26;;21962:9;21956:4;21952:20;21948:1;21937:9;21933:17;21926:47;21990:131;22116:4;21990:131;:::i;:::-;21982:139;;21709:419;;;:::o;22134:180::-;22182:77;22179:1;22172:88;22279:4;22276:1;22269:15;22303:4;22300:1;22293:15;22320:228;22460:34;22456:1;22448:6;22444:14;22437:58;22529:11;22524:2;22516:6;22512:15;22505:36;22320:228;:::o;22554:366::-;22696:3;22717:67;22781:2;22776:3;22717:67;:::i;:::-;22710:74;;22793:93;22882:3;22793:93;:::i;:::-;22911:2;22906:3;22902:12;22895:19;;22554:366;;;:::o;22926:419::-;23092:4;23130:2;23119:9;23115:18;23107:26;;23179:9;23173:4;23169:20;23165:1;23154:9;23150:17;23143:47;23207:131;23333:4;23207:131;:::i;:::-;23199:139;;22926:419;;;:::o;23351:177::-;23491:29;23487:1;23479:6;23475:14;23468:53;23351:177;:::o;23534:366::-;23676:3;23697:67;23761:2;23756:3;23697:67;:::i;:::-;23690:74;;23773:93;23862:3;23773:93;:::i;:::-;23891:2;23886:3;23882:12;23875:19;;23534:366;;;:::o;23906:419::-;24072:4;24110:2;24099:9;24095:18;24087:26;;24159:9;24153:4;24149:20;24145:1;24134:9;24130:17;24123:47;24187:131;24313:4;24187:131;:::i;:::-;24179:139;;23906:419;;;:::o;24331:180::-;24379:77;24376:1;24369:88;24476:4;24473:1;24466:15;24500:4;24497:1;24490:15;24517:305;24557:3;24576:20;24594:1;24576:20;:::i;:::-;24571:25;;24610:20;24628:1;24610:20;:::i;:::-;24605:25;;24764:1;24696:66;24692:74;24689:1;24686:81;24683:107;;;24770:18;;:::i;:::-;24683:107;24814:1;24811;24807:9;24800:16;;24517:305;;;;:::o;24828:173::-;24968:25;24964:1;24956:6;24952:14;24945:49;24828:173;:::o;25007:366::-;25149:3;25170:67;25234:2;25229:3;25170:67;:::i;:::-;25163:74;;25246:93;25335:3;25246:93;:::i;:::-;25364:2;25359:3;25355:12;25348:19;;25007:366;;;:::o;25379:419::-;25545:4;25583:2;25572:9;25568:18;25560:26;;25632:9;25626:4;25622:20;25618:1;25607:9;25603:17;25596:47;25660:131;25786:4;25660:131;:::i;:::-;25652:139;;25379:419;;;:::o;25804:229::-;25944:34;25940:1;25932:6;25928:14;25921:58;26013:12;26008:2;26000:6;25996:15;25989:37;25804:229;:::o;26039:366::-;26181:3;26202:67;26266:2;26261:3;26202:67;:::i;:::-;26195:74;;26278:93;26367:3;26278:93;:::i;:::-;26396:2;26391:3;26387:12;26380:19;;26039:366;;;:::o;26411:419::-;26577:4;26615:2;26604:9;26600:18;26592:26;;26664:9;26658:4;26654:20;26650:1;26639:9;26635:17;26628:47;26692:131;26818:4;26692:131;:::i;:::-;26684:139;;26411:419;;;:::o;26836:234::-;26976:34;26972:1;26964:6;26960:14;26953:58;27045:17;27040:2;27032:6;27028:15;27021:42;26836:234;:::o;27076:366::-;27218:3;27239:67;27303:2;27298:3;27239:67;:::i;:::-;27232:74;;27315:93;27404:3;27315:93;:::i;:::-;27433:2;27428:3;27424:12;27417:19;;27076:366;;;:::o;27448:419::-;27614:4;27652:2;27641:9;27637:18;27629:26;;27701:9;27695:4;27691:20;27687:1;27676:9;27672:17;27665:47;27729:131;27855:4;27729:131;:::i;:::-;27721:139;;27448:419;;;:::o;27873:148::-;27975:11;28012:3;27997:18;;27873:148;;;;:::o;28027:377::-;28133:3;28161:39;28194:5;28161:39;:::i;:::-;28216:89;28298:6;28293:3;28216:89;:::i;:::-;28209:96;;28314:52;28359:6;28354:3;28347:4;28340:5;28336:16;28314:52;:::i;:::-;28391:6;28386:3;28382:16;28375:23;;28137:267;28027:377;;;;:::o;28410:435::-;28590:3;28612:95;28703:3;28694:6;28612:95;:::i;:::-;28605:102;;28724:95;28815:3;28806:6;28724:95;:::i;:::-;28717:102;;28836:3;28829:10;;28410:435;;;;;:::o;28851:231::-;28991:34;28987:1;28979:6;28975:14;28968:58;29060:14;29055:2;29047:6;29043:15;29036:39;28851:231;:::o;29088:366::-;29230:3;29251:67;29315:2;29310:3;29251:67;:::i;:::-;29244:74;;29327:93;29416:3;29327:93;:::i;:::-;29445:2;29440:3;29436:12;29429:19;;29088:366;;;:::o;29460:419::-;29626:4;29664:2;29653:9;29649:18;29641:26;;29713:9;29707:4;29703:20;29699:1;29688:9;29684:17;29677:47;29741:131;29867:4;29741:131;:::i;:::-;29733:139;;29460:419;;;:::o;29885:224::-;30025:34;30021:1;30013:6;30009:14;30002:58;30094:7;30089:2;30081:6;30077:15;30070:32;29885:224;:::o;30115:366::-;30257:3;30278:67;30342:2;30337:3;30278:67;:::i;:::-;30271:74;;30354:93;30443:3;30354:93;:::i;:::-;30472:2;30467:3;30463:12;30456:19;;30115:366;;;:::o;30487:419::-;30653:4;30691:2;30680:9;30676:18;30668:26;;30740:9;30734:4;30730:20;30726:1;30715:9;30711:17;30704:47;30768:131;30894:4;30768:131;:::i;:::-;30760:139;;30487:419;;;:::o;30912:223::-;31052:34;31048:1;31040:6;31036:14;31029:58;31121:6;31116:2;31108:6;31104:15;31097:31;30912:223;:::o;31141:366::-;31283:3;31304:67;31368:2;31363:3;31304:67;:::i;:::-;31297:74;;31380:93;31469:3;31380:93;:::i;:::-;31498:2;31493:3;31489:12;31482:19;;31141:366;;;:::o;31513:419::-;31679:4;31717:2;31706:9;31702:18;31694:26;;31766:9;31760:4;31756:20;31752:1;31741:9;31737:17;31730:47;31794:131;31920:4;31794:131;:::i;:::-;31786:139;;31513:419;;;:::o;31938:191::-;31978:4;31998:20;32016:1;31998:20;:::i;:::-;31993:25;;32032:20;32050:1;32032:20;:::i;:::-;32027:25;;32071:1;32068;32065:8;32062:34;;;32076:18;;:::i;:::-;32062:34;32121:1;32118;32114:9;32106:17;;31938:191;;;;:::o;32135:173::-;32275:25;32271:1;32263:6;32259:14;32252:49;32135:173;:::o;32314:402::-;32474:3;32495:85;32577:2;32572:3;32495:85;:::i;:::-;32488:92;;32589:93;32678:3;32589:93;:::i;:::-;32707:2;32702:3;32698:12;32691:19;;32314:402;;;:::o;32722:167::-;32862:19;32858:1;32850:6;32846:14;32839:43;32722:167;:::o;32895:402::-;33055:3;33076:85;33158:2;33153:3;33076:85;:::i;:::-;33069:92;;33170:93;33259:3;33170:93;:::i;:::-;33288:2;33283:3;33279:12;33272:19;;32895:402;;;:::o;33303:967::-;33685:3;33707:148;33851:3;33707:148;:::i;:::-;33700:155;;33872:95;33963:3;33954:6;33872:95;:::i;:::-;33865:102;;33984:148;34128:3;33984:148;:::i;:::-;33977:155;;34149:95;34240:3;34231:6;34149:95;:::i;:::-;34142:102;;34261:3;34254:10;;33303:967;;;;;:::o;34276:175::-;34416:27;34412:1;34404:6;34400:14;34393:51;34276:175;:::o;34457:366::-;34599:3;34620:67;34684:2;34679:3;34620:67;:::i;:::-;34613:74;;34696:93;34785:3;34696:93;:::i;:::-;34814:2;34809:3;34805:12;34798:19;;34457:366;;;:::o;34829:419::-;34995:4;35033:2;35022:9;35018:18;35010:26;;35082:9;35076:4;35072:20;35068:1;35057:9;35053:17;35046:47;35110:131;35236:4;35110:131;:::i;:::-;35102:139;;34829:419;;;:::o;35254:237::-;35394:34;35390:1;35382:6;35378:14;35371:58;35463:20;35458:2;35450:6;35446:15;35439:45;35254:237;:::o;35497:366::-;35639:3;35660:67;35724:2;35719:3;35660:67;:::i;:::-;35653:74;;35736:93;35825:3;35736:93;:::i;:::-;35854:2;35849:3;35845:12;35838:19;;35497:366;;;:::o;35869:419::-;36035:4;36073:2;36062:9;36058:18;36050:26;;36122:9;36116:4;36112:20;36108:1;36097:9;36093:17;36086:47;36150:131;36276:4;36150:131;:::i;:::-;36142:139;;35869:419;;;:::o;36294:233::-;36333:3;36356:24;36374:5;36356:24;:::i;:::-;36347:33;;36402:66;36395:5;36392:77;36389:103;;;36472:18;;:::i;:::-;36389:103;36519:1;36512:5;36508:13;36501:20;;36294:233;;;:::o;36533:180::-;36581:77;36578:1;36571:88;36678:4;36675:1;36668:15;36702:4;36699:1;36692:15;36719:185;36759:1;36776:20;36794:1;36776:20;:::i;:::-;36771:25;;36810:20;36828:1;36810:20;:::i;:::-;36805:25;;36849:1;36839:35;;36854:18;;:::i;:::-;36839:35;36896:1;36893;36889:9;36884:14;;36719:185;;;;:::o;36910:176::-;36942:1;36959:20;36977:1;36959:20;:::i;:::-;36954:25;;36993:20;37011:1;36993:20;:::i;:::-;36988:25;;37032:1;37022:35;;37037:18;;:::i;:::-;37022:35;37078:1;37075;37071:9;37066:14;;36910:176;;;;:::o;37092:172::-;37232:24;37228:1;37220:6;37216:14;37209:48;37092:172;:::o;37270:366::-;37412:3;37433:67;37497:2;37492:3;37433:67;:::i;:::-;37426:74;;37509:93;37598:3;37509:93;:::i;:::-;37627:2;37622:3;37618:12;37611:19;;37270:366;;;:::o;37642:419::-;37808:4;37846:2;37835:9;37831:18;37823:26;;37895:9;37889:4;37885:20;37881:1;37870:9;37866:17;37859:47;37923:131;38049:4;37923:131;:::i;:::-;37915:139;;37642:419;;;:::o;38067:348::-;38107:7;38130:20;38148:1;38130:20;:::i;:::-;38125:25;;38164:20;38182:1;38164:20;:::i;:::-;38159:25;;38352:1;38284:66;38280:74;38277:1;38274:81;38269:1;38262:9;38255:17;38251:105;38248:131;;;38359:18;;:::i;:::-;38248:131;38407:1;38404;38400:9;38389:20;;38067:348;;;;:::o;38421:171::-;38460:3;38483:24;38501:5;38483:24;:::i;:::-;38474:33;;38529:4;38522:5;38519:15;38516:41;;;38537:18;;:::i;:::-;38516:41;38584:1;38577:5;38573:13;38566:20;;38421:171;;;:::o;38598:182::-;38738:34;38734:1;38726:6;38722:14;38715:58;38598:182;:::o;38786:366::-;38928:3;38949:67;39013:2;39008:3;38949:67;:::i;:::-;38942:74;;39025:93;39114:3;39025:93;:::i;:::-;39143:2;39138:3;39134:12;39127:19;;38786:366;;;:::o;39158:419::-;39324:4;39362:2;39351:9;39347:18;39339:26;;39411:9;39405:4;39401:20;39397:1;39386:9;39382:17;39375:47;39439:131;39565:4;39439:131;:::i;:::-;39431:139;;39158:419;;;:::o;39583:98::-;39634:6;39668:5;39662:12;39652:22;;39583:98;;;:::o;39687:168::-;39770:11;39804:6;39799:3;39792:19;39844:4;39839:3;39835:14;39820:29;;39687:168;;;;:::o;39861:360::-;39947:3;39975:38;40007:5;39975:38;:::i;:::-;40029:70;40092:6;40087:3;40029:70;:::i;:::-;40022:77;;40108:52;40153:6;40148:3;40141:4;40134:5;40130:16;40108:52;:::i;:::-;40185:29;40207:6;40185:29;:::i;:::-;40180:3;40176:39;40169:46;;39951:270;39861:360;;;;:::o;40227:640::-;40422:4;40460:3;40449:9;40445:19;40437:27;;40474:71;40542:1;40531:9;40527:17;40518:6;40474:71;:::i;:::-;40555:72;40623:2;40612:9;40608:18;40599:6;40555:72;:::i;:::-;40637;40705:2;40694:9;40690:18;40681:6;40637:72;:::i;:::-;40756:9;40750:4;40746:20;40741:2;40730:9;40726:18;40719:48;40784:76;40855:4;40846:6;40784:76;:::i;:::-;40776:84;;40227:640;;;;;;;:::o;40873:141::-;40929:5;40960:6;40954:13;40945:22;;40976:32;41002:5;40976:32;:::i;:::-;40873:141;;;;:::o;41020:349::-;41089:6;41138:2;41126:9;41117:7;41113:23;41109:32;41106:119;;;41144:79;;:::i;:::-;41106:119;41264:1;41289:63;41344:7;41335:6;41324:9;41320:22;41289:63;:::i;:::-;41279:73;;41235:127;41020:349;;;;:::o;41375:182::-;41515:34;41511:1;41503:6;41499:14;41492:58;41375:182;:::o;41563:366::-;41705:3;41726:67;41790:2;41785:3;41726:67;:::i;:::-;41719:74;;41802:93;41891:3;41802:93;:::i;:::-;41920:2;41915:3;41911:12;41904:19;;41563:366;;;:::o;41935:419::-;42101:4;42139:2;42128:9;42124:18;42116:26;;42188:9;42182:4;42178:20;42174:1;42163:9;42159:17;42152:47;42216:131;42342:4;42216:131;:::i;:::-;42208:139;;41935:419;;;:::o;42360:178::-;42500:30;42496:1;42488:6;42484:14;42477:54;42360:178;:::o;42544:366::-;42686:3;42707:67;42771:2;42766:3;42707:67;:::i;:::-;42700:74;;42783:93;42872:3;42783:93;:::i;:::-;42901:2;42896:3;42892:12;42885:19;;42544:366;;;:::o;42916:419::-;43082:4;43120:2;43109:9;43105:18;43097:26;;43169:9;43163:4;43159:20;43155:1;43144:9;43140:17;43133:47;43197:131;43323:4;43197:131;:::i;:::-;43189:139;;42916:419;;;:::o;43341:180::-;43389:77;43386:1;43379:88;43486:4;43483:1;43476:15;43510:4;43507:1;43500:15", + "source": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.10;\n\nimport \"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\";\nimport \"@openzeppelin/contracts/utils/Counters.sol\";\nimport \"@openzeppelin/contracts/access/AccessControl.sol\";\n\ncontract NFTSbt is AccessControl, ERC721Enumerable {\n using Counters for Counters.Counter;\n string private _baseTokenURI = \"https://market.cebg.games/api/nft/info/\";\n bytes32 public constant BURN_ROLE = keccak256(\"BURN_ROLE\");\n bytes32 public constant MINTER_ROLE = keccak256(\"MINTER_ROLE\");\n uint256 public immutable supplyLimit;\n\n Counters.Counter private _tokenIdCounter;\n\n constructor(\n string memory _name,\n string memory _symbol,\n uint256 _supplyLimt\n ) ERC721(_name, _symbol) {\n supplyLimit = _supplyLimt;\n _setRoleAdmin(BURN_ROLE, DEFAULT_ADMIN_ROLE);\n _setRoleAdmin(MINTER_ROLE, DEFAULT_ADMIN_ROLE);\n\n _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n _setupRole(MINTER_ROLE, msg.sender);\n _setupRole(BURN_ROLE, msg.sender);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n virtual\n override(AccessControl, ERC721Enumerable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n\n function _beforeTokenTransfer(\n address from,\n address to,\n uint256 tokenId\n ) internal override(ERC721Enumerable) {\n require(from == address(0) || to == address(0), \"Token not transferable\");\n super._beforeTokenTransfer(from, to, tokenId);\n }\n\n function _baseURI() internal view virtual override returns (string memory) {\n return _baseTokenURI;\n }\n\n /**\n * @dev Set token URI\n */\n function updateBaseURI(\n string calldata baseTokenURI\n ) external onlyRole(DEFAULT_ADMIN_ROLE) {\n _baseTokenURI = baseTokenURI;\n }\n\n function mint(address to) external onlyRole(MINTER_ROLE) returns (uint256) {\n require(to != address(0), \"Cannot mint to zero address\");\n if (supplyLimit > 0) {\n require((totalSupply() + 1) <= supplyLimit, \"Exceed the total supply\");\n }\n uint256 tokenId = _tokenIdCounter.current();\n _tokenIdCounter.increment();\n _safeMint(to, tokenId);\n return tokenId;\n }\n\n function burn(uint256 tokenId) external onlyRole(BURN_ROLE) {\n require(\n _isApprovedOrOwner(_msgSender(), tokenId),\n \"Caller is not owner nor approved\"\n );\n _burn(tokenId);\n }\n\n /**\n * @dev Grant mint role to address\n */\n function setMintRole(address to) external {\n grantRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Remove mint role to address\n */\n function removeMintRole(address to) external {\n revokeRole(MINTER_ROLE, to);\n }\n\n /**\n * @dev Grant burn role to address\n */\n function setBurnRole(address to) external {\n grantRole(BURN_ROLE, to);\n }\n\n /**\n * @dev Remove burn role to address\n */\n function removeBurnRole(address to) external {\n revokeRole(BURN_ROLE, to);\n }\n}\n", "sourcePath": "/Users/zhl/Documents/workspace/crypto/becrypto/contracts/tokens/erc721/NFTSbt.sol", "ast": { "absolutePath": "project:/contracts/tokens/erc721/NFTSbt.sol", @@ -21845,7 +21845,7 @@ "IERC721Receiver": [ 1381 ], - "SoulboundNFT": [ + "NFTSbt": [ 2687 ], "Strings": [ @@ -21911,11 +21911,11 @@ "name": "AccessControl", "nodeType": "IdentifierPath", "referencedDeclaration": 308, - "src": "274:13:14" + "src": "268:13:14" }, "id": 2414, "nodeType": "InheritanceSpecifier", - "src": "274:13:14" + "src": "268:13:14" }, { "baseName": { @@ -21923,14 +21923,14 @@ "name": "ERC721Enumerable", "nodeType": "IdentifierPath", "referencedDeclaration": 1719, - "src": "289:16:14" + "src": "283:16:14" }, "id": 2416, "nodeType": "InheritanceSpecifier", - "src": "289:16:14" + "src": "283:16:14" } ], - "canonicalName": "SoulboundNFT", + "canonicalName": "NFTSbt", "contractDependencies": [], "contractKind": "contract", "fullyImplemented": true, @@ -21948,8 +21948,8 @@ 381, 2094 ], - "name": "SoulboundNFT", - "nameLocation": "258:12:14", + "name": "NFTSbt", + "nameLocation": "258:6:14", "nodeType": "ContractDefinition", "nodes": [ { @@ -21959,10 +21959,10 @@ "name": "Counters", "nodeType": "IdentifierPath", "referencedDeclaration": 2168, - "src": "316:8:14" + "src": "310:8:14" }, "nodeType": "UsingForDirective", - "src": "310:36:14", + "src": "304:36:14", "typeName": { "id": 2419, "nodeType": "UserDefinedTypeName", @@ -21971,10 +21971,10 @@ "name": "Counters.Counter", "nodeType": "IdentifierPath", "referencedDeclaration": 2100, - "src": "329:16:14" + "src": "323:16:14" }, "referencedDeclaration": 2100, - "src": "329:16:14", + "src": "323:16:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Counter_$2100_storage_ptr", "typeString": "struct Counters.Counter" @@ -21986,10 +21986,10 @@ "id": 2423, "mutability": "mutable", "name": "_baseTokenURI", - "nameLocation": "364:13:14", + "nameLocation": "358:13:14", "nodeType": "VariableDeclaration", "scope": 2687, - "src": "349:72:14", + "src": "343:72:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -22000,7 +22000,7 @@ "id": 2421, "name": "string", "nodeType": "ElementaryTypeName", - "src": "349:6:14", + "src": "343:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -22015,7 +22015,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "380:41:14", + "src": "374:41:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_a22360c1a10c8323f2bd626125be4905616eb83f03cca72bba7f9692c4900800", "typeString": "literal_string \"https://market.cebg.games/api/nft/info/\"" @@ -22030,10 +22030,10 @@ "id": 2428, "mutability": "constant", "name": "BURN_ROLE", - "nameLocation": "449:9:14", + "nameLocation": "443:9:14", "nodeType": "VariableDeclaration", "scope": 2687, - "src": "425:58:14", + "src": "419:58:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -22044,7 +22044,7 @@ "id": 2424, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "425:7:14", + "src": "419:7:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22061,7 +22061,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "471:11:14", + "src": "465:11:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_e97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22", "typeString": "literal_string \"BURN_ROLE\"" @@ -22081,7 +22081,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "461:9:14", + "src": "455:9:14", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" @@ -22095,7 +22095,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "461:22:14", + "src": "455:22:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -22110,10 +22110,10 @@ "id": 2433, "mutability": "constant", "name": "MINTER_ROLE", - "nameLocation": "511:11:14", + "nameLocation": "505:11:14", "nodeType": "VariableDeclaration", "scope": 2687, - "src": "487:62:14", + "src": "481:62:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -22124,7 +22124,7 @@ "id": 2429, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "487:7:14", + "src": "481:7:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22141,7 +22141,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "535:13:14", + "src": "529:13:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6", "typeString": "literal_string \"MINTER_ROLE\"" @@ -22161,7 +22161,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967288, - "src": "525:9:14", + "src": "519:9:14", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" @@ -22175,7 +22175,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "525:24:14", + "src": "519:24:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -22190,10 +22190,10 @@ "id": 2435, "mutability": "immutable", "name": "supplyLimit", - "nameLocation": "578:11:14", + "nameLocation": "572:11:14", "nodeType": "VariableDeclaration", "scope": 2687, - "src": "553:36:14", + "src": "547:36:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -22204,7 +22204,7 @@ "id": 2434, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "553:7:14", + "src": "547:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22217,10 +22217,10 @@ "id": 2438, "mutability": "mutable", "name": "_tokenIdCounter", - "nameLocation": "619:15:14", + "nameLocation": "613:15:14", "nodeType": "VariableDeclaration", "scope": 2687, - "src": "594:40:14", + "src": "588:40:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -22235,10 +22235,10 @@ "name": "Counters.Counter", "nodeType": "IdentifierPath", "referencedDeclaration": 2100, - "src": "594:16:14" + "src": "588:16:14" }, "referencedDeclaration": 2100, - "src": "594:16:14", + "src": "588:16:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Counter_$2100_storage_ptr", "typeString": "struct Counters.Counter" @@ -22250,7 +22250,7 @@ "body": { "id": 2483, "nodeType": "Block", - "src": "755:267:14", + "src": "749:267:14", "statements": [ { "expression": { @@ -22265,7 +22265,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2435, - "src": "761:11:14", + "src": "755:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22279,13 +22279,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2444, - "src": "775:11:14", + "src": "769:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "761:25:14", + "src": "755:25:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22293,7 +22293,7 @@ }, "id": 2454, "nodeType": "ExpressionStatement", - "src": "761:25:14" + "src": "755:25:14" }, { "expression": { @@ -22304,7 +22304,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, - "src": "806:9:14", + "src": "800:9:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22316,7 +22316,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "817:18:14", + "src": "811:18:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22339,7 +22339,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "792:13:14", + "src": "786:13:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32)" @@ -22353,7 +22353,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "792:44:14", + "src": "786:44:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -22362,7 +22362,7 @@ }, "id": 2459, "nodeType": "ExpressionStatement", - "src": "792:44:14" + "src": "786:44:14" }, { "expression": { @@ -22373,7 +22373,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2433, - "src": "856:11:14", + "src": "850:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22385,7 +22385,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "869:18:14", + "src": "863:18:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22408,7 +22408,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 244, - "src": "842:13:14", + "src": "836:13:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$", "typeString": "function (bytes32,bytes32)" @@ -22422,7 +22422,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "842:46:14", + "src": "836:46:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -22431,7 +22431,7 @@ }, "id": 2464, "nodeType": "ExpressionStatement", - "src": "842:46:14" + "src": "836:46:14" }, { "expression": { @@ -22442,7 +22442,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "906:18:14", + "src": "900:18:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22455,7 +22455,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "926:3:14", + "src": "920:3:14", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -22468,7 +22468,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "926:10:14", + "src": "920:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -22491,7 +22491,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, - "src": "895:10:14", + "src": "889:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -22505,7 +22505,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "895:42:14", + "src": "889:42:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -22514,7 +22514,7 @@ }, "id": 2470, "nodeType": "ExpressionStatement", - "src": "895:42:14" + "src": "889:42:14" }, { "expression": { @@ -22525,7 +22525,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2433, - "src": "954:11:14", + "src": "948:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22538,7 +22538,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "967:3:14", + "src": "961:3:14", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -22551,7 +22551,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "967:10:14", + "src": "961:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -22574,7 +22574,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, - "src": "943:10:14", + "src": "937:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -22588,7 +22588,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "943:35:14", + "src": "937:35:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -22597,7 +22597,7 @@ }, "id": 2476, "nodeType": "ExpressionStatement", - "src": "943:35:14" + "src": "937:35:14" }, { "expression": { @@ -22608,7 +22608,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, - "src": "995:9:14", + "src": "989:9:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -22621,7 +22621,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967281, - "src": "1006:3:14", + "src": "1000:3:14", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" @@ -22634,7 +22634,7 @@ "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", - "src": "1006:10:14", + "src": "1000:10:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -22657,7 +22657,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 216, - "src": "984:10:14", + "src": "978:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -22671,7 +22671,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "984:33:14", + "src": "978:33:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -22680,7 +22680,7 @@ }, "id": 2482, "nodeType": "ExpressionStatement", - "src": "984:33:14" + "src": "978:33:14" } ] }, @@ -22696,7 +22696,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2440, - "src": "739:5:14", + "src": "733:5:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -22708,7 +22708,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2442, - "src": "746:7:14", + "src": "740:7:14", "typeDescriptions": { "typeIdentifier": "t_string_memory_ptr", "typeString": "string memory" @@ -22722,10 +22722,10 @@ "name": "ERC721", "nodeType": "IdentifierPath", "referencedDeclaration": 1247, - "src": "732:6:14" + "src": "726:6:14" }, "nodeType": "ModifierInvocation", - "src": "732:22:14" + "src": "726:22:14" } ], "name": "", @@ -22740,10 +22740,10 @@ "id": 2440, "mutability": "mutable", "name": "_name", - "nameLocation": "670:5:14", + "nameLocation": "664:5:14", "nodeType": "VariableDeclaration", "scope": 2484, - "src": "656:19:14", + "src": "650:19:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -22754,7 +22754,7 @@ "id": 2439, "name": "string", "nodeType": "ElementaryTypeName", - "src": "656:6:14", + "src": "650:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -22767,10 +22767,10 @@ "id": 2442, "mutability": "mutable", "name": "_symbol", - "nameLocation": "695:7:14", + "nameLocation": "689:7:14", "nodeType": "VariableDeclaration", "scope": 2484, - "src": "681:21:14", + "src": "675:21:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -22781,7 +22781,7 @@ "id": 2441, "name": "string", "nodeType": "ElementaryTypeName", - "src": "681:6:14", + "src": "675:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -22794,10 +22794,10 @@ "id": 2444, "mutability": "mutable", "name": "_supplyLimt", - "nameLocation": "716:11:14", + "nameLocation": "710:11:14", "nodeType": "VariableDeclaration", "scope": 2484, - "src": "708:19:14", + "src": "702:19:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -22808,7 +22808,7 @@ "id": 2443, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "708:7:14", + "src": "702:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -22817,16 +22817,16 @@ "visibility": "internal" } ], - "src": "650:81:14" + "src": "644:81:14" }, "returnParameters": { "id": 2450, "nodeType": "ParameterList", "parameters": [], - "src": "755:0:14" + "src": "749:0:14" }, "scope": 2687, - "src": "639:383:14", + "src": "633:383:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" @@ -22839,7 +22839,7 @@ "body": { "id": 2500, "nodeType": "Block", - "src": "1235:54:14", + "src": "1229:54:14", "statements": [ { "expression": { @@ -22850,7 +22850,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2487, - "src": "1272:11:14", + "src": "1266:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -22870,10 +22870,10 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, - "src": "1248:5:14", + "src": "1242:5:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_SoulboundNFT_$2687_$", - "typeString": "type(contract super SoulboundNFT)" + "typeIdentifier": "t_type$_t_super$_NFTSbt_$2687_$", + "typeString": "type(contract super NFTSbt)" } }, "id": 2496, @@ -22884,7 +22884,7 @@ "memberName": "supportsInterface", "nodeType": "MemberAccess", "referencedDeclaration": 1431, - "src": "1248:23:14", + "src": "1242:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", "typeString": "function (bytes4) view returns (bool)" @@ -22898,7 +22898,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1248:36:14", + "src": "1242:36:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -22908,14 +22908,14 @@ "functionReturnParameters": 2494, "id": 2499, "nodeType": "Return", - "src": "1241:43:14" + "src": "1235:43:14" } ] }, "documentation": { "id": 2485, "nodeType": "StructuredDocumentation", - "src": "1026:52:14", + "src": "1020:52:14", "text": " @dev See {IERC165-supportsInterface}." }, "functionSelector": "01ffc9a7", @@ -22924,7 +22924,7 @@ "kind": "function", "modifiers": [], "name": "supportsInterface", - "nameLocation": "1090:17:14", + "nameLocation": "1084:17:14", "nodeType": "FunctionDefinition", "overrides": { "id": 2491, @@ -22935,17 +22935,17 @@ "name": "AccessControl", "nodeType": "IdentifierPath", "referencedDeclaration": 308, - "src": "1181:13:14" + "src": "1175:13:14" }, { "id": 2490, "name": "ERC721Enumerable", "nodeType": "IdentifierPath", "referencedDeclaration": 1719, - "src": "1196:16:14" + "src": "1190:16:14" } ], - "src": "1172:41:14" + "src": "1166:41:14" }, "parameters": { "id": 2488, @@ -22956,10 +22956,10 @@ "id": 2487, "mutability": "mutable", "name": "interfaceId", - "nameLocation": "1120:11:14", + "nameLocation": "1114:11:14", "nodeType": "VariableDeclaration", "scope": 2501, - "src": "1113:18:14", + "src": "1107:18:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -22970,7 +22970,7 @@ "id": 2486, "name": "bytes4", "nodeType": "ElementaryTypeName", - "src": "1113:6:14", + "src": "1107:6:14", "typeDescriptions": { "typeIdentifier": "t_bytes4", "typeString": "bytes4" @@ -22979,7 +22979,7 @@ "visibility": "internal" } ], - "src": "1107:28:14" + "src": "1101:28:14" }, "returnParameters": { "id": 2494, @@ -22993,7 +22993,7 @@ "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2501, - "src": "1227:4:14", + "src": "1221:4:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23004,7 +23004,7 @@ "id": 2492, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1227:4:14", + "src": "1221:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23013,10 +23013,10 @@ "visibility": "internal" } ], - "src": "1226:6:14" + "src": "1220:6:14" }, "scope": 2687, - "src": "1081:208:14", + "src": "1075:208:14", "stateMutability": "view", "virtual": true, "visibility": "public" @@ -23028,7 +23028,7 @@ "body": { "id": 2537, "nodeType": "Block", - "src": "1418:135:14", + "src": "1412:135:14", "statements": [ { "expression": { @@ -23059,7 +23059,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2503, - "src": "1432:4:14", + "src": "1426:4:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23078,7 +23078,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1448:1:14", + "src": "1442:1:14", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -23099,7 +23099,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1440:7:14", + "src": "1434:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -23108,7 +23108,7 @@ "id": 2514, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1440:7:14", + "src": "1434:7:14", "typeDescriptions": {} } }, @@ -23120,14 +23120,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1440:10:14", + "src": "1434:10:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1432:18:14", + "src": "1426:18:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23151,7 +23151,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2505, - "src": "1454:2:14", + "src": "1448:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23170,7 +23170,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1468:1:14", + "src": "1462:1:14", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -23191,7 +23191,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1460:7:14", + "src": "1454:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -23200,7 +23200,7 @@ "id": 2520, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1460:7:14", + "src": "1454:7:14", "typeDescriptions": {} } }, @@ -23212,20 +23212,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1460:10:14", + "src": "1454:10:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1454:16:14", + "src": "1448:16:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1432:38:14", + "src": "1426:38:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23240,7 +23240,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1472:24:14", + "src": "1466:24:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_59a1b9ae0c32ca530762c8a17f3a01f674ee00263439ad1ca86e8eef1f0b65d6", "typeString": "literal_string \"Token not transferable\"" @@ -23267,7 +23267,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "1424:7:14", + "src": "1418:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -23281,7 +23281,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1424:73:14", + "src": "1418:73:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -23290,7 +23290,7 @@ }, "id": 2528, "nodeType": "ExpressionStatement", - "src": "1424:73:14" + "src": "1418:73:14" }, { "expression": { @@ -23301,7 +23301,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2503, - "src": "1530:4:14", + "src": "1524:4:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23313,7 +23313,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2505, - "src": "1536:2:14", + "src": "1530:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23325,7 +23325,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2507, - "src": "1540:7:14", + "src": "1534:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23353,10 +23353,10 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4294967271, - "src": "1503:5:14", + "src": "1497:5:14", "typeDescriptions": { - "typeIdentifier": "t_type$_t_super$_SoulboundNFT_$2687_$", - "typeString": "type(contract super SoulboundNFT)" + "typeIdentifier": "t_type$_t_super$_NFTSbt_$2687_$", + "typeString": "type(contract super NFTSbt)" } }, "id": 2531, @@ -23367,7 +23367,7 @@ "memberName": "_beforeTokenTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 1557, - "src": "1503:26:14", + "src": "1497:26:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,address,uint256)" @@ -23381,7 +23381,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1503:45:14", + "src": "1497:45:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -23390,7 +23390,7 @@ }, "id": 2536, "nodeType": "ExpressionStatement", - "src": "1503:45:14" + "src": "1497:45:14" } ] }, @@ -23399,7 +23399,7 @@ "kind": "function", "modifiers": [], "name": "_beforeTokenTransfer", - "nameLocation": "1302:20:14", + "nameLocation": "1296:20:14", "nodeType": "FunctionDefinition", "overrides": { "id": 2510, @@ -23410,10 +23410,10 @@ "name": "ERC721Enumerable", "nodeType": "IdentifierPath", "referencedDeclaration": 1719, - "src": "1400:16:14" + "src": "1394:16:14" } ], - "src": "1391:26:14" + "src": "1385:26:14" }, "parameters": { "id": 2508, @@ -23424,10 +23424,10 @@ "id": 2503, "mutability": "mutable", "name": "from", - "nameLocation": "1336:4:14", + "nameLocation": "1330:4:14", "nodeType": "VariableDeclaration", "scope": 2538, - "src": "1328:12:14", + "src": "1322:12:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23438,7 +23438,7 @@ "id": 2502, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1328:7:14", + "src": "1322:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -23452,10 +23452,10 @@ "id": 2505, "mutability": "mutable", "name": "to", - "nameLocation": "1354:2:14", + "nameLocation": "1348:2:14", "nodeType": "VariableDeclaration", "scope": 2538, - "src": "1346:10:14", + "src": "1340:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23466,7 +23466,7 @@ "id": 2504, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1346:7:14", + "src": "1340:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -23480,10 +23480,10 @@ "id": 2507, "mutability": "mutable", "name": "tokenId", - "nameLocation": "1370:7:14", + "nameLocation": "1364:7:14", "nodeType": "VariableDeclaration", "scope": 2538, - "src": "1362:15:14", + "src": "1356:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -23494,7 +23494,7 @@ "id": 2506, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1362:7:14", + "src": "1356:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23503,16 +23503,16 @@ "visibility": "internal" } ], - "src": "1322:59:14" + "src": "1316:59:14" }, "returnParameters": { "id": 2511, "nodeType": "ParameterList", "parameters": [], - "src": "1418:0:14" + "src": "1412:0:14" }, "scope": 2687, - "src": "1293:260:14", + "src": "1287:260:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "internal" @@ -23524,7 +23524,7 @@ "body": { "id": 2546, "nodeType": "Block", - "src": "1632:31:14", + "src": "1626:31:14", "statements": [ { "expression": { @@ -23533,7 +23533,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2423, - "src": "1645:13:14", + "src": "1639:13:14", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -23542,7 +23542,7 @@ "functionReturnParameters": 2543, "id": 2545, "nodeType": "Return", - "src": "1638:20:14" + "src": "1632:20:14" } ] }, @@ -23551,19 +23551,19 @@ "kind": "function", "modifiers": [], "name": "_baseURI", - "nameLocation": "1566:8:14", + "nameLocation": "1560:8:14", "nodeType": "FunctionDefinition", "overrides": { "id": 2540, "nodeType": "OverrideSpecifier", "overrides": [], - "src": "1599:8:14" + "src": "1593:8:14" }, "parameters": { "id": 2539, "nodeType": "ParameterList", "parameters": [], - "src": "1574:2:14" + "src": "1568:2:14" }, "returnParameters": { "id": 2543, @@ -23577,7 +23577,7 @@ "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2547, - "src": "1617:13:14", + "src": "1611:13:14", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -23588,7 +23588,7 @@ "id": 2541, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1617:6:14", + "src": "1611:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -23597,10 +23597,10 @@ "visibility": "internal" } ], - "src": "1616:15:14" + "src": "1610:15:14" }, "scope": 2687, - "src": "1557:106:14", + "src": "1551:106:14", "stateMutability": "view", "virtual": true, "visibility": "internal" @@ -23609,7 +23609,7 @@ "body": { "id": 2560, "nodeType": "Block", - "src": "1802:39:14", + "src": "1796:39:14", "statements": [ { "expression": { @@ -23624,7 +23624,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2423, - "src": "1808:13:14", + "src": "1802:13:14", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -23638,13 +23638,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2550, - "src": "1824:12:14", + "src": "1818:12:14", "typeDescriptions": { "typeIdentifier": "t_string_calldata_ptr", "typeString": "string calldata" } }, - "src": "1808:28:14", + "src": "1802:28:14", "typeDescriptions": { "typeIdentifier": "t_string_storage", "typeString": "string storage ref" @@ -23652,14 +23652,14 @@ }, "id": 2559, "nodeType": "ExpressionStatement", - "src": "1808:28:14" + "src": "1802:28:14" } ] }, "documentation": { "id": 2548, "nodeType": "StructuredDocumentation", - "src": "1667:33:14", + "src": "1661:33:14", "text": " @dev Set token URI" }, "functionSelector": "931688cb", @@ -23675,7 +23675,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 27, - "src": "1782:18:14", + "src": "1776:18:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -23689,14 +23689,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "1773:8:14" + "src": "1767:8:14" }, "nodeType": "ModifierInvocation", - "src": "1773:28:14" + "src": "1767:28:14" } ], "name": "updateBaseURI", - "nameLocation": "1712:13:14", + "nameLocation": "1706:13:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2551, @@ -23707,10 +23707,10 @@ "id": 2550, "mutability": "mutable", "name": "baseTokenURI", - "nameLocation": "1747:12:14", + "nameLocation": "1741:12:14", "nodeType": "VariableDeclaration", "scope": 2561, - "src": "1731:28:14", + "src": "1725:28:14", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { @@ -23721,7 +23721,7 @@ "id": 2549, "name": "string", "nodeType": "ElementaryTypeName", - "src": "1731:6:14", + "src": "1725:6:14", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -23730,16 +23730,16 @@ "visibility": "internal" } ], - "src": "1725:38:14" + "src": "1719:38:14" }, "returnParameters": { "id": 2555, "nodeType": "ParameterList", "parameters": [], - "src": "1802:0:14" + "src": "1796:0:14" }, "scope": 2687, - "src": "1703:138:14", + "src": "1697:138:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -23748,7 +23748,7 @@ "body": { "id": 2615, "nodeType": "Block", - "src": "1920:308:14", + "src": "1914:308:14", "statements": [ { "expression": { @@ -23769,7 +23769,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2563, - "src": "1934:2:14", + "src": "1928:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -23788,7 +23788,7 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1948:1:14", + "src": "1942:1:14", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" @@ -23809,7 +23809,7 @@ "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1940:7:14", + "src": "1934:7:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" @@ -23818,7 +23818,7 @@ "id": 2573, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1940:7:14", + "src": "1934:7:14", "typeDescriptions": {} } }, @@ -23830,14 +23830,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1940:10:14", + "src": "1934:10:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1934:16:14", + "src": "1928:16:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23852,7 +23852,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:29:14", + "src": "1946:29:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_2ee0416c341986fdecc3cbd81cd5d77b44e6537a4f9aa8afff73aa35a7384cb9", "typeString": "literal_string \"Cannot mint to zero address\"" @@ -23879,7 +23879,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "1926:7:14", + "src": "1920:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -23893,7 +23893,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1926:56:14", + "src": "1920:56:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -23902,7 +23902,7 @@ }, "id": 2580, "nodeType": "ExpressionStatement", - "src": "1926:56:14" + "src": "1920:56:14" }, { "condition": { @@ -23921,7 +23921,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2435, - "src": "1992:11:14", + "src": "1986:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -23938,14 +23938,14 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2006:1:14", + "src": "2000:1:14", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, - "src": "1992:15:14", + "src": "1986:15:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -23953,11 +23953,11 @@ }, "id": 2596, "nodeType": "IfStatement", - "src": "1988:106:14", + "src": "1982:106:14", "trueBody": { "id": 2595, "nodeType": "Block", - "src": "2009:85:14", + "src": "2003:85:14", "statements": [ { "expression": { @@ -23993,7 +23993,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1470, - "src": "2026:11:14", + "src": "2020:11:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" @@ -24007,7 +24007,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2026:13:14", + "src": "2020:13:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -24025,14 +24025,14 @@ "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2042:1:14", + "src": "2036:1:14", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, - "src": "2026:17:14", + "src": "2020:17:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24046,7 +24046,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "2025:19:14", + "src": "2019:19:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24060,13 +24060,13 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2435, - "src": "2048:11:14", + "src": "2042:11:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2025:34:14", + "src": "2019:34:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -24081,7 +24081,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2061:25:14", + "src": "2055:25:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_12d840de55800a407036c108072a110b489a6fba65d56a3541eab87f0f0af5d1", "typeString": "literal_string \"Exceed the total supply\"" @@ -24108,7 +24108,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "2017:7:14", + "src": "2011:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -24122,7 +24122,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2017:70:14", + "src": "2011:70:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24131,7 +24131,7 @@ }, "id": 2594, "nodeType": "ExpressionStatement", - "src": "2017:70:14" + "src": "2011:70:14" } ] } @@ -24146,10 +24146,10 @@ "id": 2598, "mutability": "mutable", "name": "tokenId", - "nameLocation": "2107:7:14", + "nameLocation": "2101:7:14", "nodeType": "VariableDeclaration", "scope": 2615, - "src": "2099:15:14", + "src": "2093:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24160,7 +24160,7 @@ "id": 2597, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2099:7:14", + "src": "2093:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24180,7 +24180,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2438, - "src": "2117:15:14", + "src": "2111:15:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Counter_$2100_storage", "typeString": "struct Counters.Counter storage ref" @@ -24194,7 +24194,7 @@ "memberName": "current", "nodeType": "MemberAccess", "referencedDeclaration": 2112, - "src": "2117:23:14", + "src": "2111:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_struct$_Counter_$2100_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer) view returns (uint256)" @@ -24208,7 +24208,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2117:25:14", + "src": "2111:25:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -24216,7 +24216,7 @@ } }, "nodeType": "VariableDeclarationStatement", - "src": "2099:43:14" + "src": "2093:43:14" }, { "expression": { @@ -24229,7 +24229,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2438, - "src": "2148:15:14", + "src": "2142:15:14", "typeDescriptions": { "typeIdentifier": "t_struct$_Counter_$2100_storage", "typeString": "struct Counters.Counter storage ref" @@ -24243,7 +24243,7 @@ "memberName": "increment", "nodeType": "MemberAccess", "referencedDeclaration": 2126, - "src": "2148:25:14", + "src": "2142:25:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Counter_$2100_storage_ptr_$returns$__$bound_to$_t_struct$_Counter_$2100_storage_ptr_$", "typeString": "function (struct Counters.Counter storage pointer)" @@ -24257,7 +24257,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2148:27:14", + "src": "2142:27:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24266,7 +24266,7 @@ }, "id": 2607, "nodeType": "ExpressionStatement", - "src": "2148:27:14" + "src": "2142:27:14" }, { "expression": { @@ -24277,7 +24277,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2563, - "src": "2191:2:14", + "src": "2185:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24289,7 +24289,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2598, - "src": "2195:7:14", + "src": "2189:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24315,7 +24315,7 @@ 905 ], "referencedDeclaration": 876, - "src": "2181:9:14", + "src": "2175:9:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" @@ -24329,7 +24329,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2181:22:14", + "src": "2175:22:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24338,7 +24338,7 @@ }, "id": 2612, "nodeType": "ExpressionStatement", - "src": "2181:22:14" + "src": "2175:22:14" }, { "expression": { @@ -24347,7 +24347,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2598, - "src": "2216:7:14", + "src": "2210:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24356,7 +24356,7 @@ "functionReturnParameters": 2570, "id": 2614, "nodeType": "Return", - "src": "2209:14:14" + "src": "2203:14:14" } ] }, @@ -24373,7 +24373,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2433, - "src": "1889:11:14", + "src": "1883:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -24387,14 +24387,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "1880:8:14" + "src": "1874:8:14" }, "nodeType": "ModifierInvocation", - "src": "1880:21:14" + "src": "1874:21:14" } ], "name": "mint", - "nameLocation": "1854:4:14", + "nameLocation": "1848:4:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2564, @@ -24405,10 +24405,10 @@ "id": 2563, "mutability": "mutable", "name": "to", - "nameLocation": "1867:2:14", + "nameLocation": "1861:2:14", "nodeType": "VariableDeclaration", "scope": 2616, - "src": "1859:10:14", + "src": "1853:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24419,7 +24419,7 @@ "id": 2562, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1859:7:14", + "src": "1853:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -24429,7 +24429,7 @@ "visibility": "internal" } ], - "src": "1858:12:14" + "src": "1852:12:14" }, "returnParameters": { "id": 2570, @@ -24443,7 +24443,7 @@ "nameLocation": "-1:-1:-1", "nodeType": "VariableDeclaration", "scope": 2616, - "src": "1911:7:14", + "src": "1905:7:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24454,7 +24454,7 @@ "id": 2568, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1911:7:14", + "src": "1905:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24463,10 +24463,10 @@ "visibility": "internal" } ], - "src": "1910:9:14" + "src": "1904:9:14" }, "scope": 2687, - "src": "1845:383:14", + "src": "1839:383:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -24475,7 +24475,7 @@ "body": { "id": 2637, "nodeType": "Block", - "src": "2292:135:14", + "src": "2286:135:14", "statements": [ { "expression": { @@ -24491,7 +24491,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2084, - "src": "2332:10:14", + "src": "2326:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", "typeString": "function () view returns (address)" @@ -24505,7 +24505,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2332:12:14", + "src": "2326:12:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", @@ -24518,7 +24518,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2618, - "src": "2346:7:14", + "src": "2340:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24541,7 +24541,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 861, - "src": "2313:18:14", + "src": "2307:18:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) view returns (bool)" @@ -24555,7 +24555,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2313:41:14", + "src": "2307:41:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -24571,7 +24571,7 @@ "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2362:34:14", + "src": "2356:34:14", "typeDescriptions": { "typeIdentifier": "t_stringliteral_c52d8a267cca22510f5a5b23cfd13135d738a215ab145957a8742a2248da059d", "typeString": "literal_string \"Caller is not owner nor approved\"" @@ -24598,7 +24598,7 @@ 4294967278 ], "referencedDeclaration": 4294967278, - "src": "2298:7:14", + "src": "2292:7:14", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" @@ -24612,7 +24612,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2298:104:14", + "src": "2292:104:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24621,7 +24621,7 @@ }, "id": 2632, "nodeType": "ExpressionStatement", - "src": "2298:104:14" + "src": "2292:104:14" }, { "expression": { @@ -24632,7 +24632,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2618, - "src": "2414:7:14", + "src": "2408:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24651,7 +24651,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1031, - "src": "2408:5:14", + "src": "2402:5:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" @@ -24665,7 +24665,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2408:14:14", + "src": "2402:14:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24674,7 +24674,7 @@ }, "id": 2636, "nodeType": "ExpressionStatement", - "src": "2408:14:14" + "src": "2402:14:14" } ] }, @@ -24691,7 +24691,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, - "src": "2281:9:14", + "src": "2275:9:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -24705,14 +24705,14 @@ "name": "onlyRole", "nodeType": "IdentifierPath", "referencedDeclaration": 40, - "src": "2272:8:14" + "src": "2266:8:14" }, "nodeType": "ModifierInvocation", - "src": "2272:19:14" + "src": "2266:19:14" } ], "name": "burn", - "nameLocation": "2241:4:14", + "nameLocation": "2235:4:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2619, @@ -24723,10 +24723,10 @@ "id": 2618, "mutability": "mutable", "name": "tokenId", - "nameLocation": "2254:7:14", + "nameLocation": "2248:7:14", "nodeType": "VariableDeclaration", "scope": 2638, - "src": "2246:15:14", + "src": "2240:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24737,7 +24737,7 @@ "id": 2617, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2246:7:14", + "src": "2240:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -24746,16 +24746,16 @@ "visibility": "internal" } ], - "src": "2245:17:14" + "src": "2239:17:14" }, "returnParameters": { "id": 2623, "nodeType": "ParameterList", "parameters": [], - "src": "2292:0:14" + "src": "2286:0:14" }, "scope": 2687, - "src": "2232:195:14", + "src": "2226:195:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -24764,7 +24764,7 @@ "body": { "id": 2649, "nodeType": "Block", - "src": "2522:37:14", + "src": "2516:37:14", "statements": [ { "expression": { @@ -24775,7 +24775,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2433, - "src": "2538:11:14", + "src": "2532:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -24787,7 +24787,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2641, - "src": "2551:2:14", + "src": "2545:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24810,7 +24810,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 159, - "src": "2528:9:14", + "src": "2522:9:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -24824,7 +24824,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2528:26:14", + "src": "2522:26:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24833,14 +24833,14 @@ }, "id": 2648, "nodeType": "ExpressionStatement", - "src": "2528:26:14" + "src": "2522:26:14" } ] }, "documentation": { "id": 2639, "nodeType": "StructuredDocumentation", - "src": "2431:46:14", + "src": "2425:46:14", "text": " @dev Grant mint role to address" }, "functionSelector": "530dd079", @@ -24849,7 +24849,7 @@ "kind": "function", "modifiers": [], "name": "setMintRole", - "nameLocation": "2489:11:14", + "nameLocation": "2483:11:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2642, @@ -24860,10 +24860,10 @@ "id": 2641, "mutability": "mutable", "name": "to", - "nameLocation": "2509:2:14", + "nameLocation": "2503:2:14", "nodeType": "VariableDeclaration", "scope": 2650, - "src": "2501:10:14", + "src": "2495:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -24874,7 +24874,7 @@ "id": 2640, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2501:7:14", + "src": "2495:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -24884,16 +24884,16 @@ "visibility": "internal" } ], - "src": "2500:12:14" + "src": "2494:12:14" }, "returnParameters": { "id": 2643, "nodeType": "ParameterList", "parameters": [], - "src": "2522:0:14" + "src": "2516:0:14" }, "scope": 2687, - "src": "2480:79:14", + "src": "2474:79:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -24902,7 +24902,7 @@ "body": { "id": 2661, "nodeType": "Block", - "src": "2658:38:14", + "src": "2652:38:14", "statements": [ { "expression": { @@ -24913,7 +24913,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2433, - "src": "2675:11:14", + "src": "2669:11:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -24925,7 +24925,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2653, - "src": "2688:2:14", + "src": "2682:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -24948,7 +24948,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 179, - "src": "2664:10:14", + "src": "2658:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -24962,7 +24962,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2664:27:14", + "src": "2658:27:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -24971,14 +24971,14 @@ }, "id": 2660, "nodeType": "ExpressionStatement", - "src": "2664:27:14" + "src": "2658:27:14" } ] }, "documentation": { "id": 2651, "nodeType": "StructuredDocumentation", - "src": "2563:47:14", + "src": "2557:47:14", "text": " @dev Remove mint role to address" }, "functionSelector": "1cf4e3ee", @@ -24987,7 +24987,7 @@ "kind": "function", "modifiers": [], "name": "removeMintRole", - "nameLocation": "2622:14:14", + "nameLocation": "2616:14:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2654, @@ -24998,10 +24998,10 @@ "id": 2653, "mutability": "mutable", "name": "to", - "nameLocation": "2645:2:14", + "nameLocation": "2639:2:14", "nodeType": "VariableDeclaration", "scope": 2662, - "src": "2637:10:14", + "src": "2631:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25012,7 +25012,7 @@ "id": 2652, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2637:7:14", + "src": "2631:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -25022,16 +25022,16 @@ "visibility": "internal" } ], - "src": "2636:12:14" + "src": "2630:12:14" }, "returnParameters": { "id": 2655, "nodeType": "ParameterList", "parameters": [], - "src": "2658:0:14" + "src": "2652:0:14" }, "scope": 2687, - "src": "2613:83:14", + "src": "2607:83:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -25040,7 +25040,7 @@ "body": { "id": 2673, "nodeType": "Block", - "src": "2791:35:14", + "src": "2785:35:14", "statements": [ { "expression": { @@ -25051,7 +25051,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, - "src": "2807:9:14", + "src": "2801:9:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -25063,7 +25063,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2665, - "src": "2818:2:14", + "src": "2812:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -25086,7 +25086,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 159, - "src": "2797:9:14", + "src": "2791:9:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -25100,7 +25100,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2797:24:14", + "src": "2791:24:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -25109,14 +25109,14 @@ }, "id": 2672, "nodeType": "ExpressionStatement", - "src": "2797:24:14" + "src": "2791:24:14" } ] }, "documentation": { "id": 2663, "nodeType": "StructuredDocumentation", - "src": "2700:46:14", + "src": "2694:46:14", "text": " @dev Grant burn role to address" }, "functionSelector": "327ba615", @@ -25125,7 +25125,7 @@ "kind": "function", "modifiers": [], "name": "setBurnRole", - "nameLocation": "2758:11:14", + "nameLocation": "2752:11:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2666, @@ -25136,10 +25136,10 @@ "id": 2665, "mutability": "mutable", "name": "to", - "nameLocation": "2778:2:14", + "nameLocation": "2772:2:14", "nodeType": "VariableDeclaration", "scope": 2674, - "src": "2770:10:14", + "src": "2764:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25150,7 +25150,7 @@ "id": 2664, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2770:7:14", + "src": "2764:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -25160,16 +25160,16 @@ "visibility": "internal" } ], - "src": "2769:12:14" + "src": "2763:12:14" }, "returnParameters": { "id": 2667, "nodeType": "ParameterList", "parameters": [], - "src": "2791:0:14" + "src": "2785:0:14" }, "scope": 2687, - "src": "2749:77:14", + "src": "2743:77:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" @@ -25178,7 +25178,7 @@ "body": { "id": 2685, "nodeType": "Block", - "src": "2925:36:14", + "src": "2919:36:14", "statements": [ { "expression": { @@ -25189,7 +25189,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2428, - "src": "2942:9:14", + "src": "2936:9:14", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -25201,7 +25201,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2677, - "src": "2953:2:14", + "src": "2947:2:14", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -25224,7 +25224,7 @@ "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 179, - "src": "2931:10:14", + "src": "2925:10:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$", "typeString": "function (bytes32,address)" @@ -25238,7 +25238,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2931:25:14", + "src": "2925:25:14", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", @@ -25247,14 +25247,14 @@ }, "id": 2684, "nodeType": "ExpressionStatement", - "src": "2931:25:14" + "src": "2925:25:14" } ] }, "documentation": { "id": 2675, "nodeType": "StructuredDocumentation", - "src": "2830:47:14", + "src": "2824:47:14", "text": " @dev Remove burn role to address" }, "functionSelector": "965f4c60", @@ -25263,7 +25263,7 @@ "kind": "function", "modifiers": [], "name": "removeBurnRole", - "nameLocation": "2889:14:14", + "nameLocation": "2883:14:14", "nodeType": "FunctionDefinition", "parameters": { "id": 2678, @@ -25274,10 +25274,10 @@ "id": 2677, "mutability": "mutable", "name": "to", - "nameLocation": "2912:2:14", + "nameLocation": "2906:2:14", "nodeType": "VariableDeclaration", "scope": 2686, - "src": "2904:10:14", + "src": "2898:10:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -25288,7 +25288,7 @@ "id": 2676, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2904:7:14", + "src": "2898:7:14", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", @@ -25298,27 +25298,27 @@ "visibility": "internal" } ], - "src": "2903:12:14" + "src": "2897:12:14" }, "returnParameters": { "id": 2679, "nodeType": "ParameterList", "parameters": [], - "src": "2925:0:14" + "src": "2919:0:14" }, "scope": 2687, - "src": "2880:81:14", + "src": "2874:81:14", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 2688, - "src": "249:2714:14", + "src": "249:2708:14", "usedErrors": [] } ], - "src": "32:2932:14" + "src": "32:2926:14" }, "compiler": { "name": "solc", @@ -25326,7 +25326,7 @@ }, "networks": {}, "schemaVersion": "3.4.11", - "updatedAt": "2023-06-14T03:36:37.403Z", + "updatedAt": "2023-06-14T03:53:50.378Z", "devdoc": { "kind": "dev", "methods": { diff --git a/contracts/tokens/erc721/NFTSbt.sol b/contracts/tokens/erc721/NFTSbt.sol index 23d5cf5..c66fecf 100644 --- a/contracts/tokens/erc721/NFTSbt.sol +++ b/contracts/tokens/erc721/NFTSbt.sol @@ -5,7 +5,7 @@ import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; import "@openzeppelin/contracts/utils/Counters.sol"; import "@openzeppelin/contracts/access/AccessControl.sol"; -contract SoulboundNFT is AccessControl, ERC721Enumerable { +contract NFTSbt is AccessControl, ERC721Enumerable { using Counters for Counters.Counter; string private _baseTokenURI = "https://market.cebg.games/api/nft/info/"; bytes32 public constant BURN_ROLE = keccak256("BURN_ROLE");