[ { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "ContractURINotInitialized", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidDefaultRoyalty", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidDefaultRoyaltyReceiver", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "numerator", "type": "uint256" }, { "internalType": "uint256", "name": "denominator", "type": "uint256" } ], "name": "ERC2981InvalidTokenRoyalty", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC2981InvalidTokenRoyaltyReceiver", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "MissingRegistry", "type": "error" }, { "inputs": [], "name": "NotApproval", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "BURNER_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": "INFO_SETTER_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": "string", "name": "image", "type": "string" } ], "name": "addMagicCircleInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "clearContractRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractRegistry", "outputs": [ { "internalType": "contract IContractRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "deleteDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getMagicCircleInfosLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "magicCircleInfos", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "resetTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "", "type": "address" }, { "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "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": "contract IContractRegistry", "name": "registry", "type": "address" } ], "name": "setContractRegistry", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setDefaultRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" }, { "internalType": "string", "name": "image", "type": "string" } ], "name": "setMagicCircleInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "name": "setTokenRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "transferOwnershipAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
608060405234801561001057600080fd5b50613364806100206000396000f3fe608060405234801561001057600080fd5b50600436106102895760003560e01c80638da5cb5b1161015c578063aa3fd4b1116100ce578063e8a3d48511610087578063e8a3d4851461068c578063e985e9c514610694578063f242432a146106a7578063f2fde38b146106ba578063f5298aca146106cd578063fcd13d65146106e057600080fd5b8063aa3fd4b1146105f7578063abf410e51461060a578063bd85b03914610612578063ca15c87314610651578063d539139314610664578063d547741f1461067957600080fd5b806395d89b411161012057806395d89b41146105955780639a35a44b146105b75780639ccb64e9146105bf578063a217fddf146105d4578063a22cb465146105dc578063aa1b103f146105ef57600080fd5b80638da5cb5b146105055780639010d07c1461054957806391d148541461055c578063938e3d7b1461056f57806393f4a1981461058257600080fd5b80632f2ff15d116102005780634f558e79116101b95780634f558e79146104705780635944c753146104b15780636b20c454146104c4578063731133e9146104d75780638129fc1c146104ea5780638a616bc0146104f257600080fd5b80632f2ff15d146103ef57806334f727c21461040257806336568abe1461041557806339341081146104285780634e1273f41461043d5780634f03523b1461045d57600080fd5b806318160ddd1161025257806318160ddd146103485780631f7fdffa1461036f578063248a9ca314610382578063282c51f3146103955780632a55205a146103aa5780632eb2c2d6146103dc57600080fd5b8062fdd58e1461028e57806301ffc9a7146102b457806304634d8d146102d757806306fdde03146102ec5780630e89341c14610335575b600080fd5b6102a161029c3660046125ee565b6106f3565b6040519081526020015b60405180910390f35b6102c76102c2366004612630565b61072a565b60405190151581526020016102ab565b6102ea6102e5366004612669565b610753565b005b6103286040518060400160405280601a81526020017f4973656b616920426174746c65204d6167696320436972636c6500000000000081525081565b6040516102ab91906126ee565b610328610343366004612701565b61076d565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2801546102a1565b6102ea61037d366004612861565b610778565b6102a1610390366004612701565b6107a3565b6102a16000805160206131ef83398151915281565b6103bd6103b83660046128fb565b6107c5565b604080516001600160a01b0390931683526020830191909152016102ab565b6102ea6103ea36600461291d565b6108a1565b6102ea6103fd3660046129ca565b61090d565b6102ea6104103660046129fa565b61092f565b6102ea6104233660046129ca565b610947565b6102a16000805160206132af83398151915281565b61045061044b366004612a17565b61097a565b6040516102ab9190612b14565b61032861046b366004612701565b610a46565b6102c761047e366004612701565b60009081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e28006020526040902054151590565b6102ea6104bf366004612b27565b610b0b565b6102ea6104d2366004612b65565b610b21565b6102ea6104e5366004612bda565b610b44565b6102ea610b68565b6102ea610500366004612701565b610cf2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016102ab565b6105316105573660046128fb565b610d2e565b6102c761056a3660046129ca565b610d5d565b6102ea61057d366004612c30565b610d95565b6102ea610590366004612c30565b610da9565b610328604051806040016040528060038152602001624d474360e81b81525081565b6102ea610dca565b6000805160206132cf833981519152546102a1565b6102a1600081565b6102ea6105ea366004612c64565b610e0c565b6102ea610e17565b6102ea610605366004612c97565b610e39565b610531610e5b565b6102a1610620366004612701565b60009081527f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800602052604090205490565b6102a161065f366004612701565b610e6a565b6102a160008051602061328f83398151915281565b6102ea6106873660046129ca565b610e97565b610328610eb3565b6102c76106a2366004612cd3565b610f8a565b6102ea6106b5366004612d01565b610fd7565b6102ea6106c83660046129fa565b611036565b6102ea6106db366004612d69565b611047565b6102ea6106ee3660046129fa565b61106a565b600081815260008051602061326f833981519152602090815260408083206001600160a01b03861684529091529020545b92915050565b6000610735826110b3565b806107445750610744826110f3565b8061072457506107248261111c565b600061075e81611141565b610768838361114b565b505050565b6060610724826111fc565b60008051602061328f83398151915261079081611141565b61079c8585858561130b565b5050505050565b60009081526000805160206132ef833981519152602052604090206001015490565b60008281527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b01602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829160008051602061330f833981519152919061086957506040805180820190915281546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090610888906001600160601b031688612db4565b6108929190612dcb565b91519791965090945050505050565b336001600160a01b03861681148015906108c257506108c08682610f8a565b155b156108f85760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b6109058686868686611343565b505050505050565b610916826107a3565b61091f81611141565b61092983836113a3565b50505050565b600061093a81611141565b610943826113e8565b5050565b6001600160a01b03811633146109705760405163334bd91960e11b815260040160405180910390fd5b6107688282611459565b606081518351146109ab5781518351604051635b05999160e01b8152600481019290925260248201526044016108ef565b600083516001600160401b038111156109c6576109c661271a565b6040519080825280602002602001820160405280156109ef578160200160208202803683370190505b50905060005b8451811015610a3e57602080820286010151610a19906020808402870101516106f3565b828281518110610a2b57610a2b612ded565b60209081029190910101526001016109f5565b509392505050565b6000805160206132cf833981519152805460609190819084908110610a6d57610a6d612ded565b906000526020600020016000018054610a8590612e03565b80601f0160208091040260200160405190810160405280929190818152602001828054610ab190612e03565b8015610afe5780601f10610ad357610100808354040283529160200191610afe565b820191906000526020600020905b815481529060010190602001808311610ae157829003601f168201915b5050505050915050919050565b6000610b1681611141565b610929848484611495565b6000805160206131ef833981519152610b3981611141565b610929848484611568565b60008051602061328f833981519152610b5c81611141565b61079c858585856115ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610bad5750825b90506000826001600160401b03166001148015610bc95750303b155b905081158015610bd7575080155b15610bf55760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c1f57845460ff60401b1916600160401b1785555b610c376040518060200160405280600081525061160b565b610c3f61161c565b610c4761164f565b610c4f61166b565b610c5a6000336113a3565b50610c7360008051602061328f833981519152336113a3565b50610c8c6000805160206131ef833981519152336113a3565b50610ca56000805160206132af833981519152336113a3565b50831561079c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b6000610cfd81611141565b5060009081527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b016020526040812055565b600082815260008051602061320f833981519152602081905260408220610d559084611673565b949350505050565b60009182526000805160206132ef833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000610da081611141565b6109438261167f565b6000805160206132af833981519152610dc181611141565b610943826116d9565b6000610dd581611141565b610e097f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce790080546001600160a01b0319169055565b50565b610943338383611739565b6000610e2281611141565b610e09600060008051602061330f83398151915255565b6000805160206132af833981519152610e5181611141565b61076883836117e1565b6000610e65611833565b905090565b600081815260008051602061320f833981519152602081905260408220610e909061188f565b9392505050565b610ea0826107a3565b610ea981611141565b6109298383611459565b7f6c1a9490c7cf0bc47b93d49642ae5e97d20eafaf58d409924dfc55110568b4008054606091906000908290610ee890612e03565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1490612e03565b8015610f615780601f10610f3657610100808354040283529160200191610f61565b820191906000526020600020905b815481529060010190602001808311610f4457829003601f168201915b50505050509050805160000361072457604051630c262e2d60e01b815260040160405180910390fd5b6001600160a01b0391821660009081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b336001600160a01b0386168114801590610ff85750610ff68682610f8a565b155b156110295760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044016108ef565b6109058686868686611899565b61103e611927565b610e09816113e8565b6000805160206131ef83398151915261105f81611141565b610929848484611982565b600061107581611141565b7f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce790080546001600160a01b0319166001600160a01b0384161790555050565b60006001600160e01b03198216636cdb3d1360e11b14806110e457506001600160e01b031982166303a24d0760e21b145b806107245750610724826119ea565b60006110fe82611a00565b8061110d575061110d82611a25565b80610724575061072482611a46565b60006001600160e01b0319821663cd1089cb60e01b14806110e457506110e482611a00565b610e098133611a6b565b60008051602061330f8339815191526127106001600160601b03831681101561119957604051636f483d0960e01b81526001600160601b0384166004820152602481018290526044016108ef565b6001600160a01b0384166111c357604051635b6cc80560e11b8152600060048201526024016108ef565b50604080518082019091526001600160a01b039093168084526001600160601b039092166020909301839052600160a01b909202179055565b606060006000805160206132cf8339815191529050600081600001848154811061122857611228612ded565b9060005260206000200160405180602001604052908160008201805461124d90612e03565b80601f016020809104026020016040519081016040528092919081815260200182805461127990612e03565b80156112c65780601f1061129b576101008083540402835291602001916112c6565b820191906000526020600020905b8154815290600101906020018083116112a957829003601f168201915b5050505050815250509050600081600001516040516020016112e89190612e3d565b604051602081830303815290604052905061130281611aa4565b95945050505050565b6001600160a01b03841661133557604051632bfa23e760e11b8152600060048201526024016108ef565b610929600085858585611ad5565b6001600160a01b03841661136d57604051632bfa23e760e11b8152600060048201526024016108ef565b6001600160a01b03851661139657604051626a0d4560e21b8152600060048201526024016108ef565b61079c8585858585611ad5565b600060008051602061320f833981519152816113bf8585611b28565b90508015610d555760008581526020839052604090206113df9085611bcd565b50949350505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600060008051602061320f833981519152816114758585611be2565b90508015610d555760008581526020839052604090206113df9085611c5e565b60008051602061330f8339815191526127106001600160601b0383168110156114ea5760405163dfd1fc1b60e01b8152600481018690526001600160601b0384166024820152604481018290526064016108ef565b6001600160a01b03841661151b57604051634b4f842960e11b815260048101869052600060248201526044016108ef565b506040805180820182526001600160a01b0394851681526001600160601b03938416602080830191825260009788526001909401909352942093519051909116600160a01b029116179055565b6001600160a01b03831661159157604051626a0d4560e21b8152600060048201526024016108ef565b610768836000848460405180602001604052806000815250611ad5565b6001600160a01b0384166115d857604051632bfa23e760e11b8152600060048201526024016108ef565b60408051600180825260208201869052818301908152606082018590526080820190925290610905600087848487611ad5565b611613611c73565b610e0981611cbc565b611624611c73565b61162c61166b565b61163533611ccd565b61163d61166b565b611645611cde565b61164d611ce6565b565b611657611c73565b61165f61166b565b61166761166b565b61164d5b61164d611c73565b6000610e908383611cf7565b7f6c1a9490c7cf0bc47b93d49642ae5e97d20eafaf58d409924dfc55110568b400806116ab8382612fc9565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad96290600090a15050565b60408051602081019091528181526000805160206132cf8339815191528054600181018255600082905282519192917fb24a6a590fed3e821cb6d4cd392b43139bc9e2fa78181f705cec80ce4b3d56c290910190819061079c9082612fc9565b60008051602061326f8339815191526001600160a01b0383166117715760405162ced3e160e81b8152600060048201526024016108ef565b6001600160a01b038481166000818152600184016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b60006000805160206132cf833981519152905060405180602001604052808381525081600001848154811061181857611818612ded565b60009182526020909120825191019081906109059082612fc9565b7f20c6cab4f0e47874eaab2f1d9a2f8a72df46b3c5bcb591d116116adbabce79008054600091906001600160a01b0316611880576040516311d07a4760e01b815260040160405180910390fd5b546001600160a01b0316919050565b6000610724825490565b6001600160a01b0384166118c357604051632bfa23e760e11b8152600060048201526024016108ef565b6001600160a01b0385166118ec57604051626a0d4560e21b8152600060048201526024016108ef565b6040805160018082526020820186905281830190815260608201859052608082019092529061191e8787848487611ad5565b50505050505050565b336119597f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461164d5760405163118cdaa760e01b81523360048201526024016108ef565b6001600160a01b0383166119ab57604051626a0d4560e21b8152600060048201526024016108ef565b604080516001808252602082018590528183019081526060820184905260a0820190925260006080820181815291929161079c91879185908590611ad5565b6001600160e01b0319166301ffc9a760e01b1490565b60006001600160e01b03198216635a05180f60e01b1480610724575061072482611d21565b60006001600160e01b0319821663152a902d60e11b14806107245750610724825b60006001600160e01b031982166307f5828d60e41b14806107245750610724826119ea565b611a758282610d5d565b6109435760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016108ef565b6060611aaf82611d46565b604051602001611abf9190613088565b6040516020818303038152906040529050919050565b611ae185858585611ea5565b6001600160a01b0384161561079c5782513390600103611b1a5760208481015190840151611b13838989858589612015565b5050610905565b610905818787878787612139565b60006000805160206132ef833981519152611b438484610d5d565b611bc3576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611b793390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610724565b6000915050610724565b6000610e90836001600160a01b038416612222565b60006000805160206132ef833981519152611bfd8484610d5d565b15611bc3576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610724565b6000610e90836001600160a01b038416612271565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661164d57604051631afcd79f60e31b815260040160405180910390fd5b611cc4611c73565b610e098161235a565b611cd5611c73565b610e0981612394565b611667611c73565b611cee611c73565b61164d336113e8565b6000826000018281548110611d0e57611d0e612ded565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b14806107245750610724826110b3565b60608151600003611d6557505060408051602081019091526000815290565b600060405180606001604052806040815260200161322f6040913990506000600384516002611d9491906130cd565b611d9e9190612dcb565b611da9906004612db4565b6001600160401b03811115611dc057611dc061271a565b6040519080825280601f01601f191660200182016040528015611dea576020820181803683370190505b50905060018201602082018586518701602081018051600082525b82841015611e60576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450611e05565b9052505085516003900660018114611e7f5760028114611e9257611e9a565b603d6001830353603d6002830353611e9a565b603d60018303535b509195945050505050565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e2800611ed2858585856123b4565b6001600160a01b038516611f80576000805b8451811015611f64576000848281518110611f0157611f01612ded565b6020026020010151905080846000016000888581518110611f2457611f24612ded565b602002602001015181526020019081526020016000206000828254611f4991906130cd565b90915550611f59905081846130cd565b925050600101611ee4565b5080826001016000828254611f7991906130cd565b9091555050505b6001600160a01b03841661079c576000805b8451811015612001576000848281518110611faf57611faf612ded565b6020026020010151905080846000016000888581518110611fd257611fd2612ded565b602090810291909101810151825281019190915260400160002080549190910390559190910190600101611f92565b506001820180549190910390555050505050565b6001600160a01b0384163b156109055760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e619061205990899089908890889088906004016130e0565b6020604051808303816000875af1925050508015612094575060408051601f3d908101601f1916820190925261209191810190613125565b60015b6120fd573d8080156120c2576040519150601f19603f3d011682016040523d82523d6000602084013e6120c7565b606091505b5080516000036120f557604051632bfa23e760e11b81526001600160a01b03861660048201526024016108ef565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461191e57604051632bfa23e760e11b81526001600160a01b03861660048201526024016108ef565b6001600160a01b0384163b156109055760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061217d9089908990889088908890600401613142565b6020604051808303816000875af19250505080156121b8575060408051601f3d908101601f191682019092526121b591810190613125565b60015b6121e6573d8080156120c2576040519150601f19603f3d011682016040523d82523d6000602084013e6120c7565b6001600160e01b0319811663bc197c8160e01b1461191e57604051632bfa23e760e11b81526001600160a01b03861660048201526024016108ef565b600081815260018301602052604081205461226957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610724565b506000610724565b60008181526001830160205260408120548015611bc35760006122956001836131a0565b85549091506000906122a9906001906131a0565b905080821461230e5760008660000182815481106122c9576122c9612ded565b90600052602060002001549050808760000184815481106122ec576122ec612ded565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061231f5761231f6131b3565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610724565b60008051602061326f8339815191527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45026107688382612fc9565b61239c611c73565b6001600160a01b03811615610e0957610e09816113e8565b8051825160008051602061326f83398151915291146123f35782518251604051635b05999160e01b8152600481019290925260248201526044016108ef565b3360005b84518110156124f9576020818102868101820151908601909101516001600160a01b038916156124aa576000828152602086815260408083206001600160a01b038d16845290915290205481811015612483576040516303dee4c560e01b81526001600160a01b038b1660048201526024810182905260448101839052606481018490526084016108ef565b6000838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b038816156124ef576000828152602086815260408083206001600160a01b038c168452909152812080548392906124e99084906130cd565b90915550505b50506001016123f7565b50835160010361257a5760208401516000906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405161256b929190918252602082015260400190565b60405180910390a45050610905565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516125c99291906131c9565b60405180910390a4505050505050565b6001600160a01b0381168114610e0957600080fd5b6000806040838503121561260157600080fd5b823561260c816125d9565b946020939093013593505050565b6001600160e01b031981168114610e0957600080fd5b60006020828403121561264257600080fd5b8135610e908161261a565b80356001600160601b038116811461266457600080fd5b919050565b6000806040838503121561267c57600080fd5b8235612687816125d9565b91506126956020840161264d565b90509250929050565b60005b838110156126b95781810151838201526020016126a1565b50506000910152565b600081518084526126da81602086016020860161269e565b601f01601f19169290920160200192915050565b602081526000610e9060208301846126c2565b60006020828403121561271357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156127585761275861271a565b604052919050565b60006001600160401b038211156127795761277961271a565b5060051b60200190565b600082601f83011261279457600080fd5b813560206127a96127a483612760565b612730565b8083825260208201915060208460051b8701019350868411156127cb57600080fd5b602086015b848110156127e757803583529183019183016127d0565b509695505050505050565b600082601f83011261280357600080fd5b81356001600160401b0381111561281c5761281c61271a565b61282f601f8201601f1916602001612730565b81815284602083860101111561284457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561287757600080fd5b8435612882816125d9565b935060208501356001600160401b038082111561289e57600080fd5b6128aa88838901612783565b945060408701359150808211156128c057600080fd5b6128cc88838901612783565b935060608701359150808211156128e257600080fd5b506128ef878288016127f2565b91505092959194509250565b6000806040838503121561290e57600080fd5b50508035926020909101359150565b600080600080600060a0868803121561293557600080fd5b8535612940816125d9565b94506020860135612950816125d9565b935060408601356001600160401b038082111561296c57600080fd5b61297889838a01612783565b9450606088013591508082111561298e57600080fd5b61299a89838a01612783565b935060808801359150808211156129b057600080fd5b506129bd888289016127f2565b9150509295509295909350565b600080604083850312156129dd57600080fd5b8235915060208301356129ef816125d9565b809150509250929050565b600060208284031215612a0c57600080fd5b8135610e90816125d9565b60008060408385031215612a2a57600080fd5b82356001600160401b0380821115612a4157600080fd5b818501915085601f830112612a5557600080fd5b81356020612a656127a483612760565b82815260059290921b84018101918181019089841115612a8457600080fd5b948201945b83861015612aab578535612a9c816125d9565b82529482019490820190612a89565b96505086013592505080821115612ac157600080fd5b50612ace85828601612783565b9150509250929050565b60008151808452602080850194506020840160005b83811015612b0957815187529582019590820190600101612aed565b509495945050505050565b602081526000610e906020830184612ad8565b600080600060608486031215612b3c57600080fd5b833592506020840135612b4e816125d9565b9150612b5c6040850161264d565b90509250925092565b600080600060608486031215612b7a57600080fd5b8335612b85816125d9565b925060208401356001600160401b0380821115612ba157600080fd5b612bad87838801612783565b93506040860135915080821115612bc357600080fd5b50612bd086828701612783565b9150509250925092565b60008060008060808587031215612bf057600080fd5b8435612bfb816125d9565b9350602085013592506040850135915060608501356001600160401b03811115612c2457600080fd5b6128ef878288016127f2565b600060208284031215612c4257600080fd5b81356001600160401b03811115612c5857600080fd5b610d55848285016127f2565b60008060408385031215612c7757600080fd5b8235612c82816125d9565b9150602083013580151581146129ef57600080fd5b60008060408385031215612caa57600080fd5b8235915060208301356001600160401b03811115612cc757600080fd5b612ace858286016127f2565b60008060408385031215612ce657600080fd5b8235612cf1816125d9565b915060208301356129ef816125d9565b600080600080600060a08688031215612d1957600080fd5b8535612d24816125d9565b94506020860135612d34816125d9565b9350604086013592506060860135915060808601356001600160401b03811115612d5d57600080fd5b6129bd888289016127f2565b600080600060608486031215612d7e57600080fd5b8335612d89816125d9565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761072457610724612d9e565b600082612de857634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680612e1757607f821691505b602082108103612e3757634e487b7160e01b600052602260045260246000fd5b50919050565b7f7b226e616d65223a20224973656b616920426174746c65204d616769632043698152651c98db19488b60d21b60208201527f226465736372697074696f6e223a202241206d61676963616c206974656d207460268201527f686174206272696e677320796f75206120626974206f6620676f6f6420666f7260468201527f74756e65207768656e20667573696e672053656564732e20486176696e67206d60668201527f756c7469706c6520696e637265617365732069747320706f7765722e20205c6e60868201527f20205c6e4973656b616920426174746c65202868747470733a2f2f6973656b6160a68201527f692d626174746c652e78797a2f29222c2022696d616765223a2022000000000060c682015260008251612f688160e185016020870161269e565b61227d60f01b60e193909101928301525060e301919050565b601f821115610768576000816000526020600020601f850160051c81016020861015612faa5750805b601f850160051c820191505b8181101561090557828155600101612fb6565b81516001600160401b03811115612fe257612fe261271a565b612ff681612ff08454612e03565b84612f81565b602080601f83116001811461302b57600084156130135750858301515b600019600386901b1c1916600185901b178555610905565b600085815260208120601f198616915b8281101561305a5788860151825594840194600190910190840161303b565b50858210156130785787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008152600082516130c081601d85016020870161269e565b91909101601d0192915050565b8082018082111561072457610724612d9e565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061311a908301846126c2565b979650505050505050565b60006020828403121561313757600080fd5b8151610e908161261a565b6001600160a01b0386811682528516602082015260a06040820181905260009061316e90830186612ad8565b82810360608401526131808186612ad8565b9050828103608084015261319481856126c2565b98975050505050505050565b8181038181111561072457610724612d9e565b634e487b7160e01b600052603160045260246000fd5b6040815260006131dc6040830185612ad8565b82810360208401526113028185612ad856fe3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e823717059320004142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45009f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a67c357cd34aad7cf565db7de6ea8e1e4300535be20ed0905116856269e77f5b44b7b256cdb4c8874d55cccb5cf0ffd49306174603fc82ed1523e692f3eb9dc50002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800daedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b00a2646970667358221220f4c8d94eaa8e04fe493c3cfa9f25b279374130475e5163a5921d87627ab98bf364736f6c63430008180033