[ { "inputs": [], "name": "InvalidNewItemRoyalty", "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": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "itemId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ItemConsumed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "itemId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newRoyalty", "type": "uint256" } ], "name": "ItemRoyaltyChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "from", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "count", "type": "uint256" } ], "name": "ItemsAdded", "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": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "FEE_MAX_PERCENT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_ITEM_COUNT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERCENTS_DIVIDER", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "newItems", "type": "uint256[]" } ], "name": "addItems", "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": "from", "type": "address" }, { "internalType": "uint256", "name": "itemId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "consumeItem", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "itemId", "type": "uint256" } ], "name": "getItem", "outputs": [ { "components": [ { "internalType": "uint256", "name": "supply", "type": "uint256" }, { "internalType": "uint256", "name": "maxSupply", "type": "uint256" }, { "internalType": "uint256", "name": "royaltyFee", "type": "uint256" }, { "internalType": "uint256", "name": "isConsumable", "type": "uint256" }, { "internalType": "address", "name": "creator", "type": "address" } ], "internalType": "struct AlturaNFTV3.Item", "name": "", "type": "tuple" } ], "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": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_uri", "type": "string" }, { "internalType": "address", "name": "_creator", "type": "address" }, { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "bool", "name": "_isPublic", "type": "bool" } ], "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": [], "name": "isPublic", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "itemId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextItemId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "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": "uint256", "name": "itemId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "itemId", "type": "uint256" }, { "internalType": "uint256", "name": "royaltyFee", "type": "uint256" } ], "name": "setItemRoyalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newName", "type": "string" } ], "name": "setName", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "newUri", "type": "string" } ], "name": "setURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "itemId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
608060405234801561001057600080fd5b50613e73806100206000396000f3fe60806040526004361061021c5760003560e01c80636a8689741161011d578063a22cb465116100b0578063d53913931161007f578063dc9a153511610064578063dc9a1535146106e0578063e985e9c5146106fa578063f242432a1461071a57600080fd5b8063d53913931461068c578063d547741f146106c057600080fd5b8063a22cb46514610607578063c45a015514610627578063c47f00271461064c578063ca15c8731461066c57600080fd5b80638da5cb5b116100ec5780638da5cb5b146105545780639010d07c1461058c57806391d14854146105ac578063a217fddf146105f257600080fd5b80636a868974146104e8578063731133e9146104fe5780637dbaab621461051e5780637ddb9da21461053e57600080fd5b8063279c3b4e116101b05780632f2ff15d1161017f57806336568abe1161016457806336568abe1461047b5780633ab3b6cd1461049b5780634e1273f4146104bb57600080fd5b80632f2ff15d146103f05780633129e7731461041057600080fd5b8063279c3b4e146103585780632a55205a146103715780632e80d8a7146103b05780632eb2c2d6146103d057600080fd5b806302fe5305116101ec57806302fe5305146102c657806306fdde03146102e65780630e89341c14610308578063248a9ca31461032857600080fd5b8062fdd58e1461022b57806301c234a81461025e57806301d3908a1461027457806301ffc9a71461029657600080fd5b3661022657600080fd5b600080fd5b34801561023757600080fd5b5061024b6102463660046131d4565b61073a565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5061024b6103e881565b34801561028057600080fd5b5061029461028f3660046131fe565b6107e8565b005b3480156102a257600080fd5b506102b66102b136600461324e565b6109ca565b6040519015158152602001610255565b3480156102d257600080fd5b506102946102e136600461333b565b610a20565b3480156102f257600080fd5b506102fb610a86565b60405161025591906133c8565b34801561031457600080fd5b506102fb6103233660046133db565b610b14565b34801561033457600080fd5b5061024b6103433660046133db565b60009081526097602052604090206001015490565b34801561036457600080fd5b5061024b64174876e80081565b34801561037d57600080fd5b5061039161038c3660046131fe565b610b5b565b604080516001600160a01b039093168352602083019190915201610255565b3480156103bc57600080fd5b506102946103cb3660046133f4565b610c0e565b3480156103dc57600080fd5b506102946103eb3660046134fe565b610e62565b3480156103fc57600080fd5b5061029461040b3660046135a8565b610f04565b34801561041c57600080fd5b5061043061042b3660046133db565b610f2e565b6040516102559190600060a082019050825182526020830151602083015260408301516040830152606083015160608301526001600160a01b03608084015116608083015292915050565b34801561048757600080fd5b506102946104963660046135a8565b610fe0565b3480156104a757600080fd5b506102946104b63660046135d4565b61106c565b3480156104c757600080fd5b506104db6104d6366004613607565b611227565b6040516102559190613703565b3480156104f457600080fd5b5061024b60fb5481565b34801561050a57600080fd5b506102b6610519366004613716565b611365565b34801561052a57600080fd5b50610294610539366004613787565b611523565b34801561054a57600080fd5b5061024b61012c81565b34801561056057600080fd5b5060fe54610574906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561059857600080fd5b506105746105a73660046131fe565b6116b5565b3480156105b857600080fd5b506102b66105c73660046135a8565b60009182526097602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156105fe57600080fd5b5061024b600081565b34801561061357600080fd5b5061029461062236600461381d565b6116d4565b34801561063357600080fd5b5060fd546105749061010090046001600160a01b031681565b34801561065857600080fd5b5061029461066736600461333b565b6116df565b34801561067857600080fd5b5061024b6106873660046133db565b611745565b34801561069857600080fd5b5061024b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b3480156106cc57600080fd5b506102946106db3660046135a8565b61175c565b3480156106ec57600080fd5b5060fd546102b69060ff1681565b34801561070657600080fd5b506102b6610715366004613847565b611781565b34801561072657600080fd5b50610294610735366004613871565b6117ce565b60006001600160a01b0383166107bd5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b6000821180156107f9575060fb5482105b6108455760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206974656d206964000000000000000000000000000000000060448201526064016107b4565b61012c81106108965760405162461bcd60e51b815260206004820152601360248201527f546f6f206269672063726561746f72206665650000000000000000000000000060448201526064016107b4565b600060ff8364174876e80081106108af576108af6138d6565b0154905060006108be82611869565b3360009081527f81bcdf06b56c0ed62a68a6ae231e66722c27e6665c84ec0015693a6d86f2bb93602052604090205490915060ff168061090a575060808101516001600160a01b031633145b6109565760405162461bcd60e51b815260206004820152601660248201527f4f6e6c79206d696e746572206f722063726561746f720000000000000000000060448201526064016107b4565b7fffffffffffffffffffffffffffffffffffffffff8000ffffffffffffffffffff91909116605083901b1760ff840181905560408051858152602081018590529192917f72ab79e5c550be81692d6440a3d6d097bcea11b0ff58a4e2a5d97d8a3d4ba591910160405180910390a150505050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806107e257506107e2826118e5565b60fe546001600160a01b03163314610a7a5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016107b4565b610a838161193b565b50565b60fc8054610a9390613905565b80601f0160208091040260200160405190810160405280929190818152602001828054610abf90613905565b8015610b0c5780601f10610ae157610100808354040283529160200191610b0c565b820191906000526020600020905b815481529060010190602001808311610aef57829003601f168201915b505050505081565b60606000610b2183611947565b90506000610b2e84611a05565b90508082604051602001610b43929190613958565b60405160208183030381529060405292505050919050565b600080600084118015610b6f575060fb5484105b610bbb5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206974656d206964000000000000000000000000000000000060448201526064016107b4565b6000610bde60ff8664174876e8008110610bd757610bd76138d6565b0154611869565b9050806080015192506103e8816040015185610bfa91906139b6565b610c0491906139cd565b9150509250929050565b64174876e80060fb5410610c645760405162461bcd60e51b815260206004820152601660248201527f52656163686564206d6178206974656d20636f756e740000000000000000000060448201526064016107b4565b80610cb15760405162461bcd60e51b815260206004820152601560248201527f4974656d20636f756e742063616e27742062652030000000000000000000000060448201526064016107b4565b3360009081527f81bcdf06b56c0ed62a68a6ae231e66722c27e6665c84ec0015693a6d86f2bb93602052604090205460ff1680610cf0575060fd5460ff165b610d3c5760405162461bcd60e51b815260206004820152601960248201527f4f6e6c79206d696e7465722063616e20616464206974656d730000000000000060448201526064016107b4565b60fb548036845b81811015610e2a57803564ffffffffff8116617fff8260501c166001600160a01b038360601c1661012c821115610d9e577f0ea059800000000000000000000000000000000000000000000000000000000060005260046000fd5b33606081901b6bffffffffffffffffffffffff9095169490941760ff88018190559391508215610e1757866000526065602052604060002060205280600052826040600020558660005282602052806000837fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6260406000a45b5050506001939093019250602001610d43565b505081600052826020527f14d5eddcb78f65ac7fea371e85def32a3ff43483e8253952491ad01c52c6586f60406000a160fb55505050565b6001600160a01b038516331480610e7e5750610e7e8533611781565b610ef05760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f76656400000000000000000000000000000000000060648201526084016107b4565b610efd8585858585611a99565b5050505050565b600082815260976020526040902060010154610f1f81611d32565b610f298383611d3c565b505050565b610f696040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b600082118015610f7a575060fb5482105b610fc65760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206974656d206964000000000000000000000000000000000060448201526064016107b4565b6107e260ff8364174876e8008110610bd757610bd76138d6565b6001600160a01b038116331461105e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016107b4565b6110688282611d5e565b5050565b60008211801561107d575060fb5482105b6110c95760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206974656d206964000000000000000000000000000000000060448201526064016107b4565b600060ff8364174876e80081106110e2576110e26138d6565b0154905060006110f182611869565b905080606001516001146111475760405162461bcd60e51b815260206004820152601360248201527f4974656d206e6f7420636f6e73756d61626c650000000000000000000000000060448201526064016107b4565b3360009081527f81bcdf06b56c0ed62a68a6ae231e66722c27e6665c84ec0015693a6d86f2bb93602052604090205460ff1680611190575060808101516001600160a01b031633145b6111dc5760405162461bcd60e51b815260206004820152601660248201527f4f6e6c79206d696e746572206f722063726561746f720000000000000000000060448201526064016107b4565b6111e7858585611d80565b60408051858152602081018590527f52ae6ef4baf3d712be4f5f1b986cf3bd7758018f3d0e67f1050bb68be0014429910160405180910390a15050505050565b606081518351146112a05760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016107b4565b6000835167ffffffffffffffff8111156112bc576112bc61326b565b6040519080825280602002602001820160405280156112e5578160200160208202803683370190505b50905060005b845181101561135d57611330858281518110611309576113096138d6565b6020026020010151858381518110611323576113236138d6565b602002602001015161073a565b828281518110611342576113426138d6565b602090810291909101015261135681613a08565b90506112eb565b509392505050565b60008084118015611377575060fb5484105b6113c35760405162461bcd60e51b815260206004820152600f60248201527f496e76616c6964206974656d206964000000000000000000000000000000000060448201526064016107b4565b600060ff8564174876e80081106113dc576113dc6138d6565b0154905060006113eb82611869565b3360009081527f81bcdf06b56c0ed62a68a6ae231e66722c27e6665c84ec0015693a6d86f2bb93602052604090205490915060ff1680611437575060808101516001600160a01b031633145b6114835760405162461bcd60e51b815260206004820152601660248201527f4f6e6c79206d696e746572206f722063726561746f720000000000000000000060448201526064016107b4565b60208101518151611495908790613a40565b11156114e35760405162461bcd60e51b815260206004820152601460248201527f546f74616c20737570706c79207265616368656400000000000000000000000060448201526064016107b4565b805164ffffffffff906114f7908790613a40565b1664ffffffffff198316179150818660ff015561151687878787611f37565b5060019695505050505050565b600054610100900460ff16158080156115435750600054600160ff909116105b8061155d5750303b15801561155d575060005460ff166001145b6115cf5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107b4565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561162d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61163685612060565b61163e6120e6565b61164a86858585612165565b80156116ad57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b600082815260c9602052604081206116cd90836122c3565b9392505050565b6110683383836122cf565b60fe546001600160a01b031633146117395760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064016107b4565b60fc6110688282613a99565b600081815260c9602052604081206107e2906123e1565b60008281526097602052604090206001015461177781611d32565b610f298383611d5e565b60fd546000906001600160a01b038381166101009092041614806116cd57506001600160a01b0380841660009081526066602090815260408083209386168352929052205460ff166116cd565b6001600160a01b0385163314806117ea57506117ea8533611781565b61185c5760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f76656400000000000000000000000000000000000060648201526084016107b4565b610efd85858585856123eb565b6118a46040518060a001604052806000815260200160008152602001600081526020016000815260200160006001600160a01b031681525090565b64ffffffffff8281168252602883901c166020820152605082901c617fff166040820152605f82901c6001166060808301919091529190911c608082015290565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107e257506107e2826125c5565b60676110688282613a99565b606060006119548361261b565b600101905060008167ffffffffffffffff8111156119745761197461326b565b6040519080825280601f01601f19166020018201604052801561199e576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846119a857509392505050565b606060678054611a1490613905565b80601f0160208091040260200160405190810160405280929190818152602001828054611a4090613905565b8015611a8d5780601f10611a6257610100808354040283529160200191611a8d565b820191906000526020600020905b815481529060010190602001808311611a7057829003601f168201915b50505050509050919050565b8151835114611b105760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016107b4565b6001600160a01b038416611b8c5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107b4565b3360005b8451811015611ccc576000858281518110611bad57611bad6138d6565b602002602001015190506000858381518110611bcb57611bcb6138d6565b60209081029190910181015160008481526065835260408082206001600160a01b038e168352909352919091205490915081811015611c725760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016107b4565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611cb1908490613a40565b9250508190555050505080611cc590613a08565b9050611b90565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d1c929190613b95565b60405180910390a46116ad8187878787876126fd565b610a838133612901565b611d468282612976565b600082815260c960205260409020610f299082612a36565b611d688282612a4b565b600082815260c960205260409020610f299082612aec565b6001600160a01b038316611dfc5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b336000611e0884612b01565b90506000611e1584612b01565b6040805160208082018352600091829052888252606581528282206001600160a01b038b1683529052205490915084811015611eb85760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016107b4565b60008681526065602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090525b50505050505050565b6001600160a01b038416611fb35760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016107b4565b336000611fbf85612b01565b90506000611fcc85612b01565b905060008681526065602090815260408083206001600160a01b038b16845290915281208054879290612000908490613a40565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611f2e83600089898989612b4c565b600054610100900460ff166120dd5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107b4565b610a8381612ca7565b600054610100900460ff166121635760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107b4565b565b600054610100900460ff166121e25760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107b4565b60fc6121ee8582613a99565b5060fe80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038581169190911790915560fd80547fffffffffffffffffffffff00000000000000000000000000000000000000000016610100928516929092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691909117821515179055600160fb55612293600084612d24565b6122bd7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684612d24565b50505050565b60006116cd8383612d2e565b816001600160a01b0316836001600160a01b0316036123565760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016107b4565b6001600160a01b0383811660008181526066602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60006107e2825490565b6001600160a01b0384166124675760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107b4565b33600061247385612b01565b9050600061248085612b01565b905060008681526065602090815260408083206001600160a01b038c1684529091529020548581101561251b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016107b4565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061255a908490613a40565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46125ba848a8a8a8a8a612b4c565b505050505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107e257506107e282612d58565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612664577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612690576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106126ae57662386f26fc10000830492506010015b6305f5e10083106126c6576305f5e100830492506008015b61271083106126da57612710830492506004015b606483106126ec576064830492506002015b600a83106107e25760010192915050565b6001600160a01b0384163b156116ad576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c819061275a9089908990889088908890600401613bc3565b6020604051808303816000875af1925050508015612795575060408051601f3d908101601f1916820190925261279291810190613c21565b60015b61284a576127a1613c3e565b806308c379a0036127da57506127b5613c5a565b806127c057506127dc565b8060405162461bcd60e51b81526004016107b491906133c8565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016107b4565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611f2e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016107b4565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff166110685761293481612e3b565b61293f836020612e4d565b604051602001612950929190613d02565b60408051601f198184030181529082905262461bcd60e51b82526107b4916004016133c8565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff166110685760008281526097602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556129f23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006116cd836001600160a01b038416613076565b60008281526097602090815260408083206001600160a01b038516845290915290205460ff16156110685760008281526097602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006116cd836001600160a01b0384166130c5565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612b3b57612b3b6138d6565b602090810291909101015292915050565b6001600160a01b0384163b156116ad576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e6190612ba99089908990889088908890600401613d83565b6020604051808303816000875af1925050508015612be4575060408051601f3d908101601f19168201909252612be191810190613c21565b60015b612bf0576127a1613c3e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611f2e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016107b4565b600054610100900460ff16610a7a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107b4565b6110688282611d3c565b6000826000018281548110612d4557612d456138d6565b9060005260206000200154905092915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a26000000000000000000000000000000000000000000000000000000001480612deb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806107e257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107e2565b60606107e26001600160a01b03831660145b60606000612e5c8360026139b6565b612e67906002613a40565b67ffffffffffffffff811115612e7f57612e7f61326b565b6040519080825280601f01601f191660200182016040528015612ea9576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612ee057612ee06138d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110612f4357612f436138d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612f7f8460026139b6565b612f8a906001613a40565b90505b6001811115613027577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612fcb57612fcb6138d6565b1a60f81b828281518110612fe157612fe16138d6565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361302081613dc6565b9050612f8d565b5083156116cd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107b4565b60008181526001830160205260408120546130bd575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107e2565b5060006107e2565b600081815260018301602052604081205480156131ae5760006130e9600183613dfb565b85549091506000906130fd90600190613dfb565b905081811461316257600086600001828154811061311d5761311d6138d6565b9060005260206000200154905080876000018481548110613140576131406138d6565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061317357613173613e0e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107e2565b60009150506107e2565b80356001600160a01b03811681146131cf57600080fd5b919050565b600080604083850312156131e757600080fd5b6131f0836131b8565b946020939093013593505050565b6000806040838503121561321157600080fd5b50508035926020909101359150565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610a8357600080fd5b60006020828403121561326057600080fd5b81356116cd81613220565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff821117156132c0576132c061326b565b6040525050565b600082601f8301126132d857600080fd5b813567ffffffffffffffff8111156132f2576132f261326b565b6040516133096020601f19601f850116018261329a565b81815284602083860101111561331e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561334d57600080fd5b813567ffffffffffffffff81111561336457600080fd5b613370848285016132c7565b949350505050565b60005b8381101561339357818101518382015260200161337b565b50506000910152565b600081518084526133b4816020860160208601613378565b601f01601f19169290920160200192915050565b6020815260006116cd602083018461339c565b6000602082840312156133ed57600080fd5b5035919050565b6000806020838503121561340757600080fd5b823567ffffffffffffffff8082111561341f57600080fd5b818501915085601f83011261343357600080fd5b81358181111561344257600080fd5b8660208260051b850101111561345757600080fd5b60209290920196919550909350505050565b600067ffffffffffffffff8211156134835761348361326b565b5060051b60200190565b600082601f83011261349e57600080fd5b813560206134ab82613469565b6040516134b8828261329a565b83815260059390931b85018201928281019150868411156134d857600080fd5b8286015b848110156134f357803583529183019183016134dc565b509695505050505050565b600080600080600060a0868803121561351657600080fd5b61351f866131b8565b945061352d602087016131b8565b9350604086013567ffffffffffffffff8082111561354a57600080fd5b61355689838a0161348d565b9450606088013591508082111561356c57600080fd5b61357889838a0161348d565b9350608088013591508082111561358e57600080fd5b5061359b888289016132c7565b9150509295509295909350565b600080604083850312156135bb57600080fd5b823591506135cb602084016131b8565b90509250929050565b6000806000606084860312156135e957600080fd5b6135f2846131b8565b95602085013595506040909401359392505050565b6000806040838503121561361a57600080fd5b823567ffffffffffffffff8082111561363257600080fd5b818501915085601f83011261364657600080fd5b8135602061365382613469565b604051613660828261329a565b83815260059390931b850182019282810191508984111561368057600080fd5b948201945b838610156136a557613696866131b8565b82529482019490820190613685565b965050860135925050808211156136bb57600080fd5b50610c048582860161348d565b600081518084526020808501945080840160005b838110156136f8578151875295820195908201906001016136dc565b509495945050505050565b6020815260006116cd60208301846136c8565b6000806000806080858703121561372c57600080fd5b613735856131b8565b93506020850135925060408501359150606085013567ffffffffffffffff81111561375f57600080fd5b61376b878288016132c7565b91505092959194509250565b803580151581146131cf57600080fd5b600080600080600060a0868803121561379f57600080fd5b853567ffffffffffffffff808211156137b757600080fd5b6137c389838a016132c7565b965060208801359150808211156137d957600080fd5b506137e6888289016132c7565b9450506137f5604087016131b8565b9250613803606087016131b8565b915061381160808701613777565b90509295509295909350565b6000806040838503121561383057600080fd5b613839836131b8565b91506135cb60208401613777565b6000806040838503121561385a57600080fd5b613863836131b8565b91506135cb602084016131b8565b600080600080600060a0868803121561388957600080fd5b613892866131b8565b94506138a0602087016131b8565b93506040860135925060608601359150608086013567ffffffffffffffff8111156138ca57600080fd5b61359b888289016132c7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c9082168061391957607f821691505b602082108103613952577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161396a818460208801613378565b83519083019061397e818360208801613378565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820281158282048414176107e2576107e2613987565b600082613a03577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613a3957613a39613987565b5060010190565b808201808211156107e2576107e2613987565b601f821115610f2957600081815260208120601f850160051c81016020861015613a7a5750805b601f850160051c820191505b818110156116ad57828155600101613a86565b815167ffffffffffffffff811115613ab357613ab361326b565b613ac781613ac18454613905565b84613a53565b602080601f831160018114613b1a5760008415613ae45750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556116ad565b600085815260208120601f198616915b82811015613b4957888601518255948401946001909101908401613b2a565b5085821015613b8557878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b604081526000613ba860408301856136c8565b8281036020840152613bba81856136c8565b95945050505050565b60006001600160a01b03808816835280871660208401525060a06040830152613bef60a08301866136c8565b8281036060840152613c0181866136c8565b90508281036080840152613c15818561339c565b98975050505050505050565b600060208284031215613c3357600080fd5b81516116cd81613220565b600060033d1115613c575760046000803e5060005160e01c5b90565b600060443d1015613c685790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715613cb657505050505090565b8285019150815181811115613cce5750505050505090565b843d8701016020828501011115613ce85750505050505090565b613cf76020828601018761329a565b509095945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613d3a816017850160208801613378565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613d77816028840160208801613378565b01602801949350505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613dbb60a083018461339c565b979650505050505050565b600081613dd557613dd5613987565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b818103818111156107e2576107e2613987565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220a27b20c011acc4ceb3ea9a7e34c2bb7ab33da757922ed2a6171e44d7623893d964736f6c63430008130033