[ { "inputs": [ { "internalType": "string", "name": "_baseURI", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "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" }, { "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": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "string", "name": "fromBaseURI", "type": "string" }, { "indexed": false, "internalType": "string", "name": "toBaseURI", "type": "string" } ], "name": "BaseURIChanged", "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": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "string", "name": "newType", "type": "string" } ], "name": "TypeAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "string", "name": "removedType", "type": "string" } ], "name": "TypeRemoved", "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": "OPERATION_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "nftType", "type": "string" } ], "name": "addType", "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": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "nftType", "type": "string" }, { "internalType": "bool", "name": "allow", "type": "bool" } ], "name": "controlMint", "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": "getAllTypes", "outputs": [ { "internalType": "string[]", "name": "", "type": "string[]" } ], "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": "string", "name": "nftType", "type": "string" } ], "name": "getTokenId", "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": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "nftType", "type": "string" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "nftType", "type": "string" }, { "internalType": "address[]", "name": "users", "type": "address[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintAndAirdrop", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "nftType", "type": "string" } ], "name": "removeType", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "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": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "bool", "name": "", "type": "bool" } ], "name": "setApprovalForAll", "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": "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": "string", "name": "_newBaseURI", "type": "string" } ], "name": "updateBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
6080604052600160075534801562000015575f80fd5b50604051620028d7380380620028d783398101604081905262000038916200016b565b80620000448162000095565b506006620000538282620002c3565b50620000605f33620000a7565b506200008d7f20296b01d0b6bd176f0c1e29644934c0047abf080dae43609a1bbc09e39bafdb33620000a7565b50506200038f565b6002620000a38282620002c3565b5050565b5f8281526005602090815260408083206001600160a01b038516845290915281205460ff166200014e575f8381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620001053390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000151565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156200017d575f80fd5b82516001600160401b038082111562000194575f80fd5b818501915085601f830112620001a8575f80fd5b815181811115620001bd57620001bd62000157565b604051601f8201601f19908116603f01168101908382118183101715620001e857620001e862000157565b81604052828152888684870101111562000200575f80fd5b5f93505b8284101562000223578484018601518185018701529285019262000204565b5f86848301015280965050505050505092915050565b600181811c908216806200024e57607f821691505b6020821081036200026d57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002be57805f5260205f20601f840160051c810160208510156200029a5750805b601f840160051c820191505b81811015620002bb575f8155600101620002a6565b50505b505050565b81516001600160401b03811115620002df57620002df62000157565b620002f781620002f0845462000239565b8462000273565b602080601f8311600181146200032d575f8415620003155750858301515b5f19600386901b1c1916600185901b17855562000387565b5f85815260208120601f198616915b828110156200035d578886015182559484019460019091019084016200033c565b50858210156200037b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b61253a806200039d5f395ff3fe608060405234801561000f575f80fd5b50600436106101a0575f3560e01c806368cd3daf116100f3578063bd85b03911610093578063e15e2fd41161006e578063e15e2fd4146103a2578063e7f08e69146103b5578063e985e9c5146103c8578063f242432a146103dd575f80fd5b8063bd85b0391461035d578063d547741f1461037c578063d85d3d271461038f575f80fd5b806391d14854116100ce57806391d148541461031d578063931688cb14610330578063a217fddf14610343578063a22cb4651461034a575f80fd5b806368cd3daf146102ee5780636c0360eb146103015780638545d8df14610309575f80fd5b8063248a9ca31161015e57806336568abe1161013957806336568abe146102875780634e1273f41461029a5780634f558e79146102ba57806364e7edc9146102db575f80fd5b8063248a9ca31461023d5780632eb2c2d61461025f5780632f2ff15d14610274575f80fd5b8062fdd58e146101a457806301ffc9a7146101ca57806309dddcf0146101ed5780630e89341c1461020257806318160ddd146102225780631e7663bc1461022a575b5f80fd5b6101b76101b23660046117ce565b6103f0565b6040519081526020015b60405180910390f35b6101dd6101d836600461180b565b610417565b60405190151581526020016101c1565b6101f5610421565b6040516101c1919061187a565b6102156102103660046118dc565b6104f5565b6040516101c191906118f3565b6004546101b7565b6101b7610238366004611949565b61052e565b6101b761024b3660046118dc565b5f9081526005602052604090206001015490565b61027261026d366004611ac4565b610558565b005b610272610282366004611b66565b6105a5565b610272610295366004611b66565b6105cf565b6102ad6102a8366004611b90565b610607565b6040516101c19190611c83565b6101dd6102c83660046118dc565b5f90815260036020526040902054151590565b6102726102e9366004611cd5565b6106d1565b6102726102fc366004611d76565b6107fa565b61021561090e565b6101b75f805160206124e583398151915281565b6101dd61032b366004611b66565b61099a565b61027261033e366004611949565b6109c4565b6101b75f81565b610272610358366004611db7565b610a19565b6101b761036b3660046118dc565b5f9081526003602052604090205490565b61027261038a366004611b66565b610a61565b61027261039d366004611949565b610a85565b6102726103b0366004611ddf565b610b6e565b6102726103c3366004611ddf565b610df2565b6101dd6103d6366004611e18565b5f92915050565b6102726103eb366004611e40565b610f43565b5f818152602081815260408083206001600160a01b03861684529091529020545b92915050565b5f61041182610f8b565b6060600a805480602002602001604051908101604052809291908181526020015f905b828210156104ec578382905f5260205f2001805461046190611e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461048d90611e9f565b80156104d85780601f106104af576101008083540402835291602001916104d8565b820191905f5260205f20905b8154815290600101906020018083116104bb57829003601f168201915b505050505081526020019060010190610444565b50505050905090565b5f8181526008602090815260409182902091516060926105189260069201611f46565b6040516020818303038152906040529050919050565b5f60098383604051610541929190611f5a565b908152602001604051809103902054905092915050565b60405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74207361666542617463685472616e7366657246726f6d2e00000060448201526064015b60405180910390fd5b5f828152600560205260409020600101546105bf81610faf565b6105c98383610fbc565b50505050565b6001600160a01b03811633146105f85760405163334bd91960e11b815260040160405180910390fd5b610602828261104d565b505050565b606081518351146106385781518351604051635b05999160e01b81526004810192909252602482015260440161059c565b5f83516001600160401b0381111561065257610652611987565b60405190808252806020026020018201604052801561067b578160200160208202803683370190505b5090505f5b84518110156106c9576020808202860101516106a4906020808402870101516103f0565b8282815181106106b6576106b6611f69565b6020908102919091010152600101610680565b509392505050565b5f805160206124e58339815191526106e881610faf565b5f600988886040516106fb929190611f5a565b9081526020016040518091039020549050805f0361072b5760405162461bcd60e51b815260040161059c90611f7d565b8483146107855760405162461bcd60e51b815260206004820152602260248201527f557365727320616e6420616d6f756e7473206c656e677468206e6f7420657175604482015261185b60f21b606482015260840161059c565b5f5b858110156107ef576107e78787838181106107a4576107a4611f69565b90506020020160208101906107b99190611fb4565b838787858181106107cc576107cc611f69565b9050602002013560405180602001604052805f8152506110b8565b600101610787565b505050505050505050565b5f805160206124e583398151915261081181610faf565b5f6009846040516108229190611fcd565b9081526020016040518091039020549050805f036108525760405162461bcd60e51b815260040161059c90611f7d565b8215156001036108bf575f818152600b602052604090205460ff16156108ba5760405162461bcd60e51b815260206004820152601f60248201527f4d696e74696e67206f662074686973204e465420697320616c6c6f7765642e00604482015260640161059c565b6108f1565b5f818152600b602052604090205460ff1615156001146108f15760405162461bcd60e51b815260040161059c90611fe8565b5f908152600b60205260409020805460ff19166001179055505050565b6006805461091b90611e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461094790611e9f565b80156109925780601f1061096957610100808354040283529160200191610992565b820191905f5260205f20905b81548152906001019060200180831161097557829003601f168201915b505050505081565b5f9182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f6109ce81610faf565b7f92bf6a7b8937c17e6781a68d61f9fe6a5ce08604b96ca2206f311049a3a295ea3360068585604051610a049493929190612053565b60405180910390a160066105c983858361215a565b60405162461bcd60e51b815260206004820152601960248201527f43616e6e6f7420736574417070726f76616c466f72416c6c2e00000000000000604482015260640161059c565b5f82815260056020526040902060010154610a7b81610faf565b6105c9838361104d565b5f60098383604051610a98929190611f5a565b9081526020016040518091039020549050805f03610ac85760405162461bcd60e51b815260040161059c90611f7d565b5f818152600b602052604090205460ff161515600114610afa5760405162461bcd60e51b815260040161059c90611fe8565b6001610b0633836103f0565b10610b535760405162461bcd60e51b815260206004820152601760248201527f596f752068617665206f776e656420746865204e46542e000000000000000000604482015260640161059c565b6106023382600160405180602001604052805f8152506110b8565b5f805160206124e5833981519152610b8581610faf565b5f600983604051610b969190611fcd565b9081526020016040518091039020549050805f03610bed5760405162461bcd60e51b81526020600482015260146024820152735479706520646f6573206e6f742065786973747360601b604482015260640161059c565b5f8181526003602052604090205415610c545760405162461bcd60e51b8152602060048201526024808201527f546865207479706520697320616c726561647920696e2075736520627920757360448201526332b9399760e11b606482015260840161059c565b5f818152600860205260408120610c6a91611769565b600983604051610c7a9190611fcd565b90815260200160405180910390205f90555f5b600a54811015610db35783604051602001610ca89190611fcd565b60405160208183030381529060405280519060200120600a8281548110610cd157610cd1611f69565b905f5260205f2001604051602001610ce9919061220e565b6040516020818303038152906040528051906020012003610dab57600a54610d139060019061222d565b8103610d4a57600a805480610d2a57610d2a612240565b600190038181905f5260205f20015f610d439190611769565b9055610db3565b600a8054610d5a9060019061222d565b81548110610d6a57610d6a611f69565b905f5260205f2001600a8281548110610d8557610d85611f69565b905f5260205f20019081610d999190612254565b50600a805480610d2a57610d2a612240565b600101610c8d565b507f08c30917c060f6d313699fca2192287a5aaca95a04887ebd32fdd1ba4fce3ea33384604051610de5929190612323565b60405180910390a1505050565b5f805160206124e5833981519152610e0981610faf565b600982604051610e199190611fcd565b9081526020016040518091039020545f14610e6c5760405162461bcd60e51b81526020600482015260136024820152725479706520616c72656164792065786973747360681b604482015260640161059c565b6007545f818152600860205260409020610e868482612346565b5080600984604051610e989190611fcd565b90815260405190819003602001902055600a80546001810182555f919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801610ee38482612346565b505f818152600b60205260408120805460ff191690556007805460019290610f0c9084906123f4565b90915550506040517f0fa7c87eece2e23c6baf7456e558b83b11afc1f81d3136dc4a8e26b9c1327ebf90610de59033908690612323565b60405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736166655472616e7366657246726f6d2e0000000000000000604482015260640161059c565b5f6001600160e01b03198216637965db0b60e01b148061041157506104118261111b565b610fb9813361116a565b50565b5f610fc7838361099a565b611046575f8381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055610ffe3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610411565b505f610411565b5f611058838361099a565b15611046575f8381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610411565b6001600160a01b0384166110e157604051632bfa23e760e11b81525f600482015260240161059c565b604080516001808252602082018690528183019081526060820185905260808201909252906111135f878484876111a7565b505050505050565b5f6001600160e01b03198216636cdb3d1360e11b148061114b57506001600160e01b031982166303a24d0760e21b145b8061041157506301ffc9a760e01b6001600160e01b0319831614610411565b611174828261099a565b6111a35760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161059c565b5050565b6111b385858585611201565b6001600160a01b038416156111fa57825133906001036111ec57602084810151908401516111e583898985858961120d565b5050611113565b611113818787878787611337565b5050505050565b6105c98484848461141e565b6001600160a01b0384163b156111135760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906112519089908990889088908890600401612407565b6020604051808303815f875af192505050801561128b575060408051601f3d908101601f191682019092526112889181019061244b565b60015b6112f2573d8080156112b8576040519150601f19603f3d011682016040523d82523d5f602084013e6112bd565b606091505b5080515f036112ea57604051632bfa23e760e11b81526001600160a01b038616600482015260240161059c565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461132e57604051632bfa23e760e11b81526001600160a01b038616600482015260240161059c565b50505050505050565b6001600160a01b0384163b156111135760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061137b9089908990889088908890600401612466565b6020604051808303815f875af19250505080156113b5575060408051601f3d908101601f191682019092526113b29181019061244b565b60015b6113e2573d8080156112b8576040519150601f19603f3d011682016040523d82523d5f602084013e6112bd565b6001600160e01b0319811663bc197c8160e01b1461132e57604051632bfa23e760e11b81526001600160a01b038616600482015260240161059c565b61142a8484848461155a565b6001600160a01b0384166114ce575f805b83518110156114b5575f83828151811061145757611457611f69565b602002602001015190508060035f87858151811061147757611477611f69565b602002602001015181526020019081526020015f205f82825461149a91906123f4565b909155506114aa905081846123f4565b92505060010161143b565b508060045f8282546114c791906123f4565b9091555050505b6001600160a01b0383166105c9575f805b8351811015611549575f8382815181106114fb576114fb611f69565b602002602001015190508060035f87858151811061151b5761151b611f69565b60209081029190910181015182528101919091526040015f20805491909103905591909101906001016114df565b506004805491909103905550505050565b80518251146115895781518151604051635b05999160e01b81526004810192909252602482015260440161059c565b335f5b835181101561168b576020818102858101820151908501909101516001600160a01b0388161561163d575f828152602081815260408083206001600160a01b038c16845290915290205481811015611617576040516303dee4c560e01b81526001600160a01b038a16600482015260248101829052604481018390526064810184905260840161059c565b5f838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615611681575f828152602081815260408083206001600160a01b038b1684529091528120805483929061167b9084906123f4565b90915550505b505060010161158c565b50825160010361170b5760208301515f906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516116fc929190918252602082015260400190565b60405180910390a450506111fa565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161175a9291906124b7565b60405180910390a45050505050565b50805461177590611e9f565b5f825580601f10611784575050565b601f0160209004905f5260205f2090810190610fb991905b808211156117af575f815560010161179c565b5090565b80356001600160a01b03811681146117c9575f80fd5b919050565b5f80604083850312156117df575f80fd5b6117e8836117b3565b946020939093013593505050565b6001600160e01b031981168114610fb9575f80fd5b5f6020828403121561181b575f80fd5b8135611826816117f6565b9392505050565b5f5b8381101561184757818101518382015260200161182f565b50505f910152565b5f815180845261186681602086016020860161182d565b601f01601f19169290920160200192915050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156118cf57603f198886030184526118bd85835161184f565b945092850192908501906001016118a1565b5092979650505050505050565b5f602082840312156118ec575f80fd5b5035919050565b602081525f611826602083018461184f565b5f8083601f840112611915575f80fd5b5081356001600160401b0381111561192b575f80fd5b602083019150836020828501011115611942575f80fd5b9250929050565b5f806020838503121561195a575f80fd5b82356001600160401b0381111561196f575f80fd5b61197b85828601611905565b90969095509350505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156119c3576119c3611987565b604052919050565b5f6001600160401b038211156119e3576119e3611987565b5060051b60200190565b5f82601f8301126119fc575f80fd5b81356020611a11611a0c836119cb565b61199b565b8083825260208201915060208460051b870101935086841115611a32575f80fd5b602086015b84811015611a4e5780358352918301918301611a37565b509695505050505050565b5f82601f830112611a68575f80fd5b81356001600160401b03811115611a8157611a81611987565b611a94601f8201601f191660200161199b565b818152846020838601011115611aa8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a08688031215611ad8575f80fd5b611ae1866117b3565b9450611aef602087016117b3565b935060408601356001600160401b0380821115611b0a575f80fd5b611b1689838a016119ed565b94506060880135915080821115611b2b575f80fd5b611b3789838a016119ed565b93506080880135915080821115611b4c575f80fd5b50611b5988828901611a59565b9150509295509295909350565b5f8060408385031215611b77575f80fd5b82359150611b87602084016117b3565b90509250929050565b5f8060408385031215611ba1575f80fd5b82356001600160401b0380821115611bb7575f80fd5b818501915085601f830112611bca575f80fd5b81356020611bda611a0c836119cb565b82815260059290921b84018101918181019089841115611bf8575f80fd5b948201945b83861015611c1d57611c0e866117b3565b82529482019490820190611bfd565b96505086013592505080821115611c32575f80fd5b50611c3f858286016119ed565b9150509250929050565b5f815180845260208085019450602084015f5b83811015611c7857815187529582019590820190600101611c5c565b509495945050505050565b602081525f6118266020830184611c49565b5f8083601f840112611ca5575f80fd5b5081356001600160401b03811115611cbb575f80fd5b6020830191508360208260051b8501011115611942575f80fd5b5f805f805f8060608789031215611cea575f80fd5b86356001600160401b0380821115611d00575f80fd5b611d0c8a838b01611905565b90985096506020890135915080821115611d24575f80fd5b611d308a838b01611c95565b90965094506040890135915080821115611d48575f80fd5b50611d5589828a01611c95565b979a9699509497509295939492505050565b803580151581146117c9575f80fd5b5f8060408385031215611d87575f80fd5b82356001600160401b03811115611d9c575f80fd5b611da885828601611a59565b925050611b8760208401611d67565b5f8060408385031215611dc8575f80fd5b611dd1836117b3565b9150611b8760208401611d67565b5f60208284031215611def575f80fd5b81356001600160401b03811115611e04575f80fd5b611e1084828501611a59565b949350505050565b5f8060408385031215611e29575f80fd5b611e32836117b3565b9150611b87602084016117b3565b5f805f805f60a08688031215611e54575f80fd5b611e5d866117b3565b9450611e6b602087016117b3565b9350604086013592506060860135915060808601356001600160401b03811115611e93575f80fd5b611b5988828901611a59565b600181811c90821680611eb357607f821691505b602082108103611ed157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8154611ee381611e9f565b60018281168015611efb5760018114611f1057611f3c565b60ff1984168752821515830287019450611f3c565b855f526020805f205f5b85811015611f335781548a820152908401908201611f1a565b50505082870194505b5050505092915050565b5f611e10611f548386611ed7565b84611ed7565b818382375f9101908152919050565b634e487b7160e01b5f52603260045260245ffd5b60208082526017908201527f546865207479706520646f6573206e6f74206578697374000000000000000000604082015260600190565b5f60208284031215611fc4575f80fd5b611826826117b3565b5f8251611fde81846020870161182d565b9190910192915050565b60208082526023908201527f4d696e74696e67206f662074686973204e4654206973206e6f7420616c6c6f7760408201526232b21760e91b606082015260800190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b03851681525f6020606060208401525f865461207481611e9f565b806060870152608060018084165f811461209557600181146120b1576120de565b60ff19851660808a0152608084151560051b8a010195506120de565b8b5f5260205f205f5b858110156120d55781548b82018601529083019088016120ba565b8a016080019650505b505050505083810360408501526120f681868861202b565b98975050505050505050565b601f82111561060257805f5260205f20601f840160051c810160208510156121275750805b601f840160051c820191505b818110156111fa575f8155600101612133565b5f19600383901b1c191660019190911b1790565b6001600160401b0383111561217157612171611987565b6121858361217f8354611e9f565b83612102565b5f601f8411600181146121b1575f851561219f5750838201355b6121a98682612146565b8455506111fa565b5f83815260208120601f198716915b828110156121e057868501358255602094850194600190920191016121c0565b50868210156121fc575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6118268284611ed7565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561041157610411612219565b634e487b7160e01b5f52603160045260245ffd5b81810361225f575050565b6122698254611e9f565b6001600160401b0381111561228057612280611987565b6122948161228e8454611e9f565b84612102565b5f601f8211600181146122c0575f83156122ae5750848201545b6122b88482612146565b8555506111fa565b5f8581526020808220868352908220601f198616925b838110156122f657828601548255600195860195909101906020016122d6565b508583101561231357818501545f19600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03831681526040602082018190525f90611e109083018461184f565b81516001600160401b0381111561235f5761235f611987565b61236d8161228e8454611e9f565b602080601f83116001811461239b575f84156123895750858301515b6123938582612146565b865550611113565b5f85815260208120601f198616915b828110156123c9578886015182559484019460019091019084016123aa565b50858210156123135793909601515f1960f8600387901b161c19169092555050600190811b01905550565b8082018082111561041157610411612219565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f906124409083018461184f565b979650505050505050565b5f6020828403121561245b575f80fd5b8151611826816117f6565b6001600160a01b0386811682528516602082015260a0604082018190525f9061249190830186611c49565b82810360608401526124a38186611c49565b905082810360808401526120f6818561184f565b604081525f6124c96040830185611c49565b82810360208401526124db8185611c49565b9594505050505056fe20296b01d0b6bd176f0c1e29644934c0047abf080dae43609a1bbc09e39bafdba2646970667358221220ecc98c991c8b57d8edd4444251a211dd45dab0c761744ed6b4f49f0c3fea722b64736f6c6343000818003300000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d65536a53696e4870506e6d586d73704d6a776958794e367a533445397a63636172694752336a7863615774712f00000000000000000000